向CUDA内核传递变量

向CUDA内核传递变量,cuda,malloc,Cuda,Malloc,因此,我正在CUDA C++中编写一个PDE解算器。解算器是一个函数,它依次调用cuda内核来解算PDE。现在,我想使用PDE参数作为内核的参数。这意味着我必须对这些变量进行malloc,比如 cudamaloc((void**)和新台币,尺寸)然后cudaMemcpy(&Nt_d,Nt,size,cudamemcpyhostodevice)(Nt是一个整数),用于指针。我想传递整数和浮点,即非指针变量,但找不到正确的语法。我不想使用参数作为全局常量。我想将它们用作内核的参数。有什么办法吗? 非

因此,我正在CUDA C++中编写一个PDE解算器。解算器是一个函数,它依次调用cuda内核来解算PDE。现在,我想使用PDE参数作为内核的参数。这意味着我必须对这些变量进行malloc,比如
cudamaloc((void**)和新台币,尺寸)然后
cudaMemcpy(&Nt_d,Nt,size,cudamemcpyhostodevice)(Nt是一个整数),用于指针。我想传递整数浮点,即非指针变量,但找不到正确的语法。我不想使用参数作为全局常量。我想将它们用作内核的参数。有什么办法吗?

非常感谢您的帮助。

您可以直接传递给他们;按值传递

内核可能有如下原型:

__global__ void mykernel(int *p1, float *p2, int i1, float f2);
在这种情况下,
p1
p2
是指针参数,
i1
是通过值传递的
int
参数,
f2
是通过值传递的
浮点
参数

<>这或多或少只是一个关于你在C或C++中对这些类型的函数调用函数的一个独奏。您可以在内核代码中直接使用像
i1
f2
这样的参数,就像使用普通的C/C++函数一样

正如您已经指出的,指针变量应该指向您已经通过例如
cudamaloc


您可能想学习一些CUDA,例如直接传递它们的
vectorad

;按值传递

内核可能有如下原型:

__global__ void mykernel(int *p1, float *p2, int i1, float f2);
在这种情况下,
p1
p2
是指针参数,
i1
是通过值传递的
int
参数,
f2
是通过值传递的
浮点
参数

<>这或多或少只是一个关于你在C或C++中对这些类型的函数调用函数的一个独奏。您可以在内核代码中直接使用像
i1
f2
这样的参数,就像使用普通的C/C++函数一样

正如您已经指出的,指针变量应该指向您已经通过例如
cudamaloc

您可能想学习一些CUDA,例如
vectorAdd