You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cudaLaunchCooperativeKernel及-rdc=true时内存分配不允许问题排查

问题分析与解决办法

核心原因

你碰到的"operation not permitted"错误,本质是开启RDC(可重定位设备代码)后,未链接设备端Runtime API所需的库,导致内核里调用的cudaMalloc(设备端Runtime API)无法正常执行。

关闭RDC时,nvcc会将设备代码与主机代码合并编译,自动处理设备端Runtime API的依赖;但开启RDC后,设备代码被编译为可重定位目标文件,必须显式链接cudadevrt库,才能支持设备端的Runtime API调用(比如内核中的cudaMalloc)。

解决步骤

修改编译命令,添加-lcudadevrt链接选项:

nvcc test.cu -rdc=true -lcudadevrt

额外提醒

  • 设备端调用cudaMalloc要求设备计算能力≥6.0,你的7.5设备符合要求。
  • 合作内核本身支持设备端Runtime API调用,但需确保编译链接时正确引入依赖库。
  • 注意:内核中分配的内存要在设备端显式释放(比如调用cudaFree(x)),否则会造成内存泄漏。

内容的提问来源于stack exchange,提问作者Pierre T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:54:55