问题:
深度学习单独做推理的时候报错:
For this operation a suitable GPU and the corresponding CUDA libraries need to be available
(See installation guide)(HALCON错误代码:7709)
报错翻译:
对于这个操作,一个合适的GPU和需要提供相应的CUDA库。
(参见安装指南)(HALCON错误代码:7709)
解决方案:
由于主机没有gpu,只有cpu,所以需要把运行设置手动修改为cpu。代码修改参考深度学习workflow里面的例程。
增加代码如下图所示:
*读取模型
read_dl_model ('model_best.hdl', DLModelHandle)
*获取具有深度学习能力的硬件设备列表。
query_available_dl_devices (['runtime', 'runtime'], ['gpu', 'cpu'], DLDeviceHandles)
if (|DLDeviceHandles| == 0)
throw ('No supported device found to continue this example.')
endif
**由于query_available_dl_devices中使用的过滤器,如果可用,第一个设备是GPU。
DLDevice := DLDeviceHandles[0]
get_dl_device_param (DLDevice, 'type', DLDeviceType)
if (DLDeviceType == 'cpu')
*使用的线程数量可能会影响训练时长。
NumThreadsTraining := 4
set_system ('thread_num', NumThreadsTraining)
endif
*详细信息请参见set_dl_model_param()和get_dl_model_param()的文档。
if (DLDeviceType == 'gpu')
*该过程计算并设置由DLModelHandle和给定GPU给出的基于深度学习的模型的最大batch_size,
*通过二分法找到最大批次大小,BatchSizeUpperBound。在这个过程中,设置并检查不同的批处理大小以防止发生异常。
set_dl_model_param_max_gpu_batch_size (DLModelHandle, 100)
else
*设置批次大小
set_dl_model_param (DLModelHandle, 'batch_size', 32)
endif
*设置模型参数
set_dl_model_param (DLModelHandle, 'device', DLDevice)
或者直接加一句设置模型参数的runtime为cpu:
set_dl_model_param (DLModelHandle, 'runtime', 'cpu')
报此错误也可能是其他原因,以上解决方案仅仅限于以上情况。