这一个月学习了halcon,然后使用vs调用halcon的网络进行train和infer时会出现内存泄露。
train的内存泄露:
我是在进行detect的网络上出现的内存泄露,经过查询,最后发现需要在网络训练前的初始化阶段加上下面代码,运行训练的时候就没有发生泄露
SetSystem("cudnn_deterministic", "true");
官方帮助查询到"cudnn_deterministic"
Determines whether the cuDNN library for deep learning uses deterministic algorithms to enforce bit-wise reproducibility "when executed on GPUs with the same architecture and the same number of SMs.
确定用于深度学习的cuDNN库是否使用确定性算法在具有相同架构和相同SMs数量的gpu上执行时强制位再现性。
infer的内存泄露:
这个问题比较棘手,当时通过各种方法,发现是在infer里面的ApplyDlModel这个算子出现了内存泄露。先说解决方法
解决方法一:将ApplyDlModel算子里的模型句柄(第一个变量)换成局部变量,但是这样子做会造成每次访问都得要初始化和加载模型。
解决方法二:去下载CUDA,然后将halcon cuda的bin、include、lib文件放到安装CUDA相应的目录下面即可。
解决方法三:去更换cudnn(这是在查询的时候看到的说halcon20.11的cudnn会有问题,需要