我真的可以启动库内核(CUkernel)而不是上下文内核(CUfunction)吗?

问题描述 投票:0回答:1

在 CUDA 12.0 中,添加了对从磁盘或内存动态加载内核库的支持:驱动程序 API,§ 6.12 库管理。从这些库中,人们可以加载“内核”——无需关联的设备或上下文。它们的句柄是

CUkernel
,而不是
CUfunction
表示正确的、上下文中的内核。

现在,在驱动程序 API 的§ 6.22 执行控制部分中,各种启动函数现在被描述为采用“CUDA 函数

CUfunction
或 CUDA 内核
CUkernel
cuLaunchKernel
cuLaunchKernelEx
cuLaunchCooperativeKernel
也许还有其他。

问题是,当我查看他们的签名时 - 他们都仍然采用普通的旧

CUfunction
's no
CUkernel
- 并且没有重载函数在这个参数的选择上有所不同。

那么,什么给出了呢?我们可以推出

CUKernel
吗?

cuda gpgpu
1个回答
0
投票

当与

CUkernel
一起使用时,您可以将
CUfunction
转换为
cuLaunchKernel
,如 CUDA 驱动程序 API 的这一部分所示:

请注意,该 API 还可用于启动无上下文内核 CUkernel,方法是使用 cuLibraryGetKernel() 查询句柄,然后通过转换为 CUfunction 将其传递给 API。在这里,启动内核的上下文将从指定的流 hStream 中获取,或者在 NULL 流的情况下从当前上下文中获取。

有关更多信息,请查看这篇关于上下文无关模块加载的博客文章。谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.