Google Colab上CUDA内核中的语法无效

时间:2019-03-30 01:54:38

标签: python-3.x cuda google-colaboratory

我尝试使用Google Colab运行以下代码。


#include <stdio.h>
#include <stdlib.h>
__global__ void add(int *a , int *b, int *c) {
*c = *a + *b;
}
int main() {
int d = 9;
int *a, *b, *c;

cudaMalloc((void **)&a, sizeof(int));
cudaMalloc((void **)&b, sizeof(int));
cudaMalloc((void **)&c, sizeof(int));

cudaMemcpy(a, &d, sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(b, &d, sizeof(int), cudaMemcpyHostToDevice);
add<<<1,1>>>();
//cudaMemcpy(e, c, sizeof(int), cudaMemcpyDeviceToHost);
cudaMemcpy(&d,c sizeof(int), cudaMemcpyDeviceToHost);
printf("Answer : %d", d);

return 0;
}

但是,我遇到了这个错误:

File "<ipython-input-4-91a227fc2a65>", line 4
    __global__ void add() {
                  ^
SyntaxError: invalid syntax

对我来说,内核看起来是正确的。.请提出错误原因。 谢谢你。

1 个答案:

答案 0 :(得分:1)

我可以直接看到几个。

您不使用任何参数调用CUDA内核(在此处添加设备指针)。

另一件事是,您在cudaMemcpy中从设备到主机之间缺少c和sizeof(int)之间的逗号。

最后,我能够按照在this上找到的步骤运行代码(当然,在解决了上述错误之后)。为了回答原始问题,python解释器不知道void的含义,因此您必须告知它这不是正常的python代码。

这是我的输出(picture