voi*_*ter 9 c++ cuda name-mangling static-linking c++11
我有一个需要C++ 11的项目,因此我将文件分为两类:使用C++ 11的文件和使用C++ 03的文件,因此与nvcc编译器兼容.当我有一个不是模板函数的内核时,很容易加载模块并使用找到函数名cuModuleGetDataEx.但是,当内核是模板时,函数名称在显式特化后会被破坏.这使得在使用CUDA Driver API加载模块后很难获得函数的句柄.例如,考虑这个功能.
template <class T, class SizeType>
global void
vector_add(const T* a, const T* b, T* c, const SizeType dim)
{
const SizeType i = blockIdx.x * blockDim.x + threadIdx.x;
if (i < dim) { c[i] = a[i] + b[i]; }
}
在我将其编译成PTX代码之后,被破坏的名称是_Z10vector_addIfjEvPKT_S2_PS0_T0_.如何从主机代码中轻松查找和加载模板内核函数,而无需在文件中手动查找并复制其名称?
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |