跳到主要内容

诊断(Diagnostics)

只读环境诊断,Darra::AI::Diagnostics 的方法全是 static,纯查询:不联网、不抛异常。

属性表​

类别属性类型读写说明
总览Supportedbool只读整体运行时可用(推荐运行时包装好);缺省 false
总览Versionstring只读该包版本;未装或无推荐为空串。非 SDK 版本,SDK 版本见 version_string()
能力HasOnnxCpubool只读onnx-cpu 装好且硬件在场;缺省 false
能力HasOnnxCudabool只读onnx-cuda 装好且硬件在场;缺省 false
能力HasOnnxOpenVinobool只读onnx-openvino 装好且硬件在场;缺省 false
能力HasOnnxTrtEpbool只读onnx-trt-ep 装好且硬件在场;缺省 false
能力HasOnnxDirectMlbool只读onnx-directml 装好且硬件在场;缺省 false
能力HasTrtNativebool只读trt-native 装好且硬件在场;缺省 false
能力HasPaddleCpubool只读paddle-cpu 装好且硬件在场;缺省 false
能力HasPaddleGpubool只读paddle-gpu 装好且硬件在场;缺省 false
能力HasEdgeRknnbool只读edge-rknn 装好且硬件在场;缺省 false
能力HasTorchScriptbool只读torchscript-cpu 装好且硬件在场;缺省 false

读法​

  • 排查打开失败时先读能力位。缺哪个就装哪个,SDK 不下载不代装。

Provider 权威表​

权威表 Darra::AI::provider,COUNT = 18。

类别属性类型读写说明
推理执行体onnx-cpustring只读CPU
推理执行体onnx-cudastring只读NVIDIA CUDA
推理执行体onnx-openvinostring只读Intel OpenVINO
推理执行体onnx-trt-epstring只读TensorRT EP
推理执行体onnx-directmlstring只读DirectML
推理执行体trt-nativestring只读TensorRT 原生
推理执行体paddle-cpustring只读Paddle CPU
推理执行体paddle-gpustring只读Paddle GPU
推理执行体edge-rknnstring只读RKNN 执行体
推理执行体tflitestring只读TFLite 运行时
推理执行体onnx-tflitestring只读ORT 读 TFLite 格式
推理执行体torchscript-cpustring只读TorchScript CPU
依赖资源包cudnnstring只读cuDNN 依赖资源包,供安装器 / 清单校验
依赖资源包cuda-libsstring只读CUDA 运行库资源包,供安装器 / 清单校验
工具链包torchstring只读torch 工具链包
工具链包ultralyticsstring只读ultralytics 工具链包
工具链包openvino-intel-gpustring只读openvino-intel-gpu 工具链包
工具链包openvino-intel-npustring只读openvino-intel-npu 工具链包
类别属性类型读写说明
权威表provider_id_atconst char*只读越界返回 nullptr,不抛异常也不写错误槽
权威表provider_id_is_validint只读是否在权威表
版本provider_runtime_versionstring只读JSON:provider / packVersion / runtimeVersion
版本version_stringstring只读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恒存在
sdkversion / abi(major65536 + minor256 + patch)
osname / version / arch
cpumodel / cores
gpusmodel / driver / cudaMax;无独显为空
providersid / version / path;未装包为空
license本版恒为 null,null 不代表没有密码
recentErrorscode / 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;
}