诊断(Diagnostics)
只读环境诊断,Darra::AI::Diagnostics 的方法全是 static,纯查询:不联网、不抛异常。
属性表
| 类别 | 属性 | 类型 | 读写 | 说明 |
|---|---|---|---|---|
| 总览 | Supported | bool | 只读 | 整体运行时可用(推荐运行时包装好);缺省 false |
| 总览 | Version | string | 只读 | 该包版本;未装或无推荐为空串。非 SDK 版本,SDK 版本见 version_string() |
| 能力 | HasOnnxCpu | bool | 只读 | onnx-cpu 装好且硬件在场;缺省 false |
| 能力 | HasOnnxCuda | bool | 只读 | onnx-cuda 装好且硬件在场;缺省 false |
| 能力 | HasOnnxOpenVino | bool | 只读 | onnx-openvino 装好且硬件在场;缺省 false |
| 能力 | HasOnnxTrtEp | bool | 只读 | onnx-trt-ep 装好且硬件在场;缺省 false |
| 能力 | HasOnnxDirectMl | bool | 只读 | onnx-directml 装好且硬件在场;缺省 false |
| 能力 | HasTrtNative | bool | 只读 | trt-native 装好且硬件在场;缺省 false |
| 能力 | HasPaddleCpu | bool | 只读 | paddle-cpu 装好且硬件在场;缺省 false |
| 能力 | HasPaddleGpu | bool | 只读 | paddle-gpu 装好且硬件在场;缺省 false |
| 能力 | HasEdgeRknn | bool | 只读 | edge-rknn 装好且硬件在场;缺省 false |
| 能力 | HasTorchScript | bool | 只读 | torchscript-cpu 装好且硬件在场;缺省 false |
读法
- 排查打开失败时先读能力位。缺哪个就装哪个,SDK 不下载不代装。
Provider 权威表
权威表 Darra::AI::provider,COUNT = 18。
| 类别 | 属性 | 类型 | 读写 | 说明 |
|---|---|---|---|---|
| 推理执行体 | onnx-cpu | string | 只读 | CPU |
| 推理执行体 | onnx-cuda | string | 只读 | NVIDIA CUDA |
| 推理执行体 | onnx-openvino | string | 只读 | Intel OpenVINO |
| 推理执行体 | onnx-trt-ep | string | 只读 | TensorRT EP |
| 推理执行体 | onnx-directml | string | 只读 | DirectML |
| 推理执行体 | trt-native | string | 只读 | TensorRT 原生 |
| 推理执行体 | paddle-cpu | string | 只读 | Paddle CPU |
| 推理执行体 | paddle-gpu | string | 只读 | Paddle GPU |
| 推理执行体 | edge-rknn | string | 只读 | RKNN 执行体 |
| 推理执行体 | tflite | string | 只读 | TFLite 运行时 |
| 推理执行体 | onnx-tflite | string | 只读 | ORT 读 TFLite 格式 |
| 推理执行体 | torchscript-cpu | string | 只读 | TorchScript CPU |
| 依赖资源包 | cudnn | string | 只读 | cuDNN 依赖资源包,供安装器 / 清单校验 |
| 依赖资源包 | cuda-libs | string | 只读 | CUDA 运行库资源包,供安装器 / 清单校验 |
| 工具链包 | torch | string | 只读 | torch 工具链包 |
| 工具链包 | ultralytics | string | 只读 | ultralytics 工具链包 |
| 工具链包 | openvino-intel-gpu | string | 只读 | openvino-intel-gpu 工具链包 |
| 工具链包 | openvino-intel-npu | string | 只读 | openvino-intel-npu 工具链包 |
| 类别 | 属性 | 类型 | 读写 | 说明 |
|---|---|---|---|---|
| 权威表 | provider_id_at | const char* | 只读 | 越界返回 nullptr,不抛异常也不写错误槽 |
| 权威表 | provider_id_is_valid | int | 只读 | 是否在权威表 |
| 版本 | provider_runtime_version | string | 只读 | JSON:provider / packVersion / runtimeVersion |
| 版本 | version_string | string | 只读 | SDK 自身版本,别当 Provider 版本 |
高级 JSON 入口
信息
采集可能触发 WMI / NVML / sysfs 查询,耗时可达数百毫秒,禁止在 PLC 扫描周期等实时路径调用。
darra_diag_collect()
int32_t darra_diag_collect(char** out_json);
采集本机环境诊断 JSON:os/arch、CPU、GPU(驱动与 CUDA 上限)、Provider、密码状态与最近错误(去敏)。失败读结果里的错误码,单字段采不到写 null 不算失败。
参数:
out_json(char**) — SDK 分配的 UTF-8 JSON,用完darra_string_free
| 字段 | 说明 |
|---|---|
| schema | 恒存在 |
| sdk | version / abi(major65536 + minor256 + patch) |
| os | name / version / arch |
| cpu | model / cores |
| gpus | model / driver / cudaMax;无独显为空 |
| providers | id / version / path;未装包为空 |
| license | 本版恒为 null,null 不代表没有密码 |
| recentErrors | code / message / when |
采不到的字段为 null 或缺席。
示例:
char* diag = nullptr;
if (darra_diag_collect(&diag) == DARRA_OK) {
std::puts(diag);
darra_string_free(diag);
}
完整示例
#include "darra_ai_model.hpp"
#include <cstdio>
int main() {
using Darra::AI::Diagnostics;
std::printf("supported=%d version=%s\n",
Diagnostics::Supported() ? 1 : 0, Diagnostics::Version().c_str());
std::printf("cpu=%d cuda=%d dml=%d ovp=%d\n",
Diagnostics::HasOnnxCpu(), Diagnostics::HasOnnxCuda(),
Diagnostics::HasOnnxDirectMl(), Diagnostics::HasOnnxOpenVino());
std::printf("trt_ep=%d trt=%d paddle_cpu=%d paddle_gpu=%d\n",
Diagnostics::HasOnnxTrtEp(), Diagnostics::HasTrtNative(),
Diagnostics::HasPaddleCpu(), Diagnostics::HasPaddleGpu());
std::printf("rknn=%d torchscript=%d\n",
Diagnostics::HasEdgeRknn(), Diagnostics::HasTorchScript());
return 0;
}