неверный синтаксис в ядре CUDA на Google Colab - PullRequest
0 голосов
/ 30 марта 2019

Я попытался запустить следующий код с помощью 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 Ответ

1 голос
/ 30 марта 2019

Я могу сразу увидеть пару слов.

Вы не вызываете ядро ​​CUDA с какими-либо аргументами (добавьте туда указатели своего устройства).

Другое дело, что вам не хватает запятой между c и sizeof (int) в вашем cudaMemcpy от устройства к хосту.

Наконец, я смог выполнить шаги, которые я нашел на this , и запустить ваш код (после исправления вышеуказанных ошибок, конечно).Чтобы ответить на первоначальный вопрос, интерпретатор python не знает, что означает void, поэтому вы должны сообщить ему, что это не обычный код python.

Вот мой вывод ( picture )

...