недопустимый синтаксис в ядре CUDA в Google colab

#python-3.x #cuda #google-colaboratory

#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 **)amp;a, sizeof(int));
cudaMalloc((void **)amp;b, sizeof(int));
cudaMalloc((void **)amp;c, sizeof(int));

cudaMemcpy(a, amp;d, sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(b, amp;d, sizeof(int), cudaMemcpyHostToDevice);
add<<<1,1>>>();
//cudaMemcpy(e, c, sizeof(int), cudaMemcpyDeviceToHost);
cudaMemcpy(amp;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. Вы не можете напрямую запустить этот код CUDA в Python, поскольку вы пытаетесь

Ответ №1:

Есть пара, которые я вижу сразу.

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

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

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

Вот мой вывод (картинка)

Комментарии:

1. Это сработало. Я также забыл добавить %%cu в ячейку.