0

CUDA 运行时 API具有用于从主机端代码处理设备端全局变量的功能cudaGetSymbolAddress(),使用它们的名称(源代码标识符)作为句柄。cudaGetSymbolSize()

在驱动程序 API 中,我们有cuModuleGetGlobal(),它可以让我们做同样的事情......除了它需要一个全局符号所在的 CUmodule。如果您正在使用动态编译并加载/添加到模块中的代码那么你就准备好了。但是,如果这些全局变量是您程序的一部分,使用 NVCC 静态编译而不是动态加载呢?

我会假设每个编译的程序都有某种“主模块”或“默认模块”,其中包含内置的全局变量和函数。我能得到它的句柄吗?

4

1 回答 1

0

我会假设每个编译的程序都有某种“主模块”或“默认模块”,其中包含内置的全局变量和函数。

有,如果您将运行时 API 发出的使其工作的主机样板代码和一些运行时跟踪分开,您会看到它依赖于许多静态定义的符号和几个未记录的运行时 API 函数,这些函数在内部维护模块运行时 API 使用。

我能得到它的句柄吗?

使用驱动程序 API,没有。如果您需要与运行时 API 交互,请使用运行时 API。

于 2021-12-07T09:37:11.690 回答