Darknet框架其实是基于cudnn库7.0及以下的,本人使用的显卡需要8.0以上的cudnn,经过大量调试已经把代码玩残废了,还是要回头学习一下文档,今天开始从cudnn的文档入手。
简介
cuDNN全称 CUDA Deep Neural Network library,即CUDA深度神经网络库,用于GPU加速,已经更新到8.2.0版。完成一下几个功能的加速优化:
- 卷积前向传播和反向传播运算, 含互相关
- Pooling 前向传播和反向传播运算
- Softmax 前向传播和反向传播运算
- 神经元激活函数前向传播和反向传播运算:
‣ Rectified linear (ReLU)
‣ Sigmoid
‣ Hyperbolic tangent (TANH) - 张量变换函数
- LRN(局部响应归一化), LCN(局部对比度归一化) and batch normalization前向传播和反向传播运算
cuDNN进行矩阵运算的时候比最快的GEMM矩阵计算库更能节约存储空间,在Darknet框架中,cuDNN主要还是用于卷积的运算。
编程模型
电脑由主机+外接显卡设备组成,host(主机)可简化为CPU+内存,device(设备)可简化为GPU+内存。cuDNN库公开了主机API,但是可以直接访问GPU设备端的的数据。
- 初始化:调用cudnnCreate()获取句柄,每个函数都要通过获取的句柄操作GPU data
- 资源释放:调用cudnnDes