我有一个用 C++ 编写的类,它也使用了 cuda_runtime.h 中的一些定义,这是名为 ADOL-C 的开源项目的一部分,你可以看看这里!
这在我使用 CUDA-C 时有效,但我想以某种方式在 PyCUDA 中导入这个类,如果有可能的话。所以,我将在内核内部(不在“main”中)使用这个类来定义用于计算函数导数的特定变量。有没有办法将这个类传递给 PyCUDA 的 SourceModule?
我问了一个类似的问题,但在这里我想解释一下。因此,有一个解决方案使用 nvcc -cubin 编译我的 C 代码(感谢 talonmies),然后使用 driver.module_from_file() 导入它,但是,我想使用 SourceModule 并将这些内核写入 .py 文件中,所以它可以更加用户友好。我的示例如下所示:
from pycuda import driver, gpuarray
from pycuda.compiler import SourceModule
import pycuda.autoinit
kernel_code_template="""
__global__ void myfunction(float* inx, float* outy, float* outderiv)
{
//defining thread index
...
//declare dependent and independet variables as adoubles
//this is a part of my question
adtl::adouble y[3];
adtl::adouble x[3];
// ...
}
"""
...这只是一个想法,但 SourceModule 不会知道什么是“adouble”,因为它们是在类定义 adoublecuda.h 中定义的,所以我希望你现在能更好地理解我的问题。有谁知道我应该从哪里开始?如果没有,我将在 CUDA-C 中编写这个内核,并使用 nvcc -cubin 选项。
感谢帮助!