当我使用CUDA-C时,这是可行的,但是我想以某种方式在PyCUDA中导入这个类,如果有可能的话。因此,我将在kernels中使用这个类(而不是在main中)来定义用于计算函数导数的特定变量。有没有办法把这个类传递给PyCUDA的SourceModule?在
我问了一个类似的问题,但在这里我想解释一下。所以,有一个解决方案,用nvcc-cubin编译我的C代码(感谢talonmies),然后用来自_文件的driver.module(),但是,我希望使用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的”,因为它们是在类定义adoubleuda.h中定义的,所以我希望您现在能更好地理解我的问题。有人知道我应该从哪里开始吗?如果没有,我将用CUDA-C编写这个内核,并使用nvcc-cubin选项。在
谢谢你的帮助!在
PyCUDA SourceModule系统实际上只是一种将传递到文件中的代码,使用
nvcc
将该文件编译为cubin文件,并(可选)将该cubin文件加载到当前CUDA上下文中。PycUDA编译器模块对CUDA内核语法或代码一无所知,并且几乎对编译的代码没有影响(几乎限定符是因为它可以用^ {< CD2}}声明来约束用户提交的代码以停止C++符号的颠倒)。在因此,为了实现我认为您所要求的,您只需要一个
#include
语句来表示设备代码在提交的字符串中需要的任何头,以及一组合适的搜索路径 在通过include_dirs
关键字选项传递的python列表中。如果你这样做:它应该自动工作(注意未经测试,使用风险自负)。在
相关问题 更多 >
编程相关推荐