能否真正启动库内核(CUkernel)而非上下文内内核(CUfunction)?
能不能通过CUDA驱动API启动
CUkernel? 可以启动CUkernel。
CUDA 12.0引入的CUkernel是脱离设备/上下文的内核句柄,而驱动API的执行控制函数(如cuLaunchKernel、cuLaunchKernelEx、cuLaunchCooperativeKernel等)虽然函数签名仅声明接受CUfunction类型参数,但在ABI层面CUkernel与CUfunction是兼容的——你可以安全地将CUkernel强制转换为CUfunction类型传递给这些启动函数。
文档中明确标注这些启动函数支持接受CUkernel,之所以没有提供重载,是因为C语言不支持函数重载,只能通过统一的CUfunction签名来兼容两种句柄类型。
使用时需要注意:
- 确保
CUkernel已通过库管理API(如cuLibraryLoadFromFile)正确加载 - 当前激活的CUDA上下文需与该内核的目标设备匹配
内容的提问来源于stack exchange,提问作者einpoklum
相关产品推荐
相关产品推荐

