#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 в ячейку.