cuDNN是否提供支持动态并行的设备端API以实现内核内调用?
cuDNN动态并行设备端API支持情况
截至最新的cuDNN 9.x稳定版本,cuDNN未提供适配CUDA动态并行特性的设备端API,无法在用户自定义的CUDA内核内部直接调用cuDNN的内核接口,相关说明如下:
- cuDNN的所有公开API均仅支持从主机端调用,这一定位从最初版本延续至今,你查阅的早期论文中提到的「库对外提供可从主机端调用的C语言API」的表述目前仍然有效,后续版本迭代没有新增设备侧调用的相关特性。
- 和cuBLAS提供了支持设备侧调用的专用API不同,cuDNN的算子调度逻辑全部依赖主机侧控制,不支持嵌套在设备端代码中触发算子运行。官方文档中没有任何设备端API的相关说明,也没有公开的路线图提到会新增该类能力。
如果你的业务场景需要在设备端内核运行过程中完成类似cuDNN的算子运算,可参考以下替代方案:
- 拆分运算流程:将内核执行逻辑拆分为多段,在主机端依次调用自定义CUDA内核、cuDNN API、后续自定义内核,通过流调度实现执行重叠,降低拆分带来的性能损耗
- 手动实现轻量算子:如果需要用到的算子逻辑较为简单,可以手动实现轻量化的算子代码嵌入自定义内核中
- 采用开源算子库:使用CUTLASS等支持设备侧调用的开源算子库实现所需的卷积、池化等运算逻辑
内容的提问来源于stack exchange,提问作者M.Soyturk
相关产品推荐
相关产品推荐

