Я новичок в Cuda и только что начал писать простую программу для ее проверки. В нем, вероятно, много проблем, но сейчас для меня стоппер - это ошибка, которую я описал в названии: всякий раз, когда я объявляю простую переменную cudaError_t, я получаю ошибку компиляции «Unrecognized token». Вот мой пример кода:Непризнанная ошибка токена при объявлении переменной cudaError_t
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
extern "C" void callCudaCode(int*);
__global__ void mykernel (int *a, int *b, int *c)
{
//*c = *a + *b;
*c = 34;
}
void callCudaCode(int* results)
{
int a=3, b=8;
int *da, *db, *dc;
int size = sizeof(int);
cudaError_t myCudaError;// = cudaGetLastError();
//const char* errorStr = cudaGetErrorName(cudaError);
cudaMalloc((void**)da, size);
cudaMalloc((void**)db, size);
cudaMalloc((void**)dc, size);
cudaMemcpy(da, &a, size, cudaMemcpyHostToDevice);
cudaMemcpy(db, &b, size, cudaMemcpyHostToDevice);
mykernel<<<1,1>>>(da,db,dc);
cudaMemcpy(results, dc, size, cudaMemcpyDeviceToHost);
cudaFree(da);
cudaFree(db);
cudaFree(dc);
}
Существует еще один main.cpp файл, который использует эти файлы, но я не думаю, что это имеет какое-либо соответствующее объяснить эту ошибку, так что я не включил его. Если я комментирую объявление переменной cudaError_t, код компилируется отлично (это не выполняется отлично, но это еще одна история).
Я уже гугл этой проблемы, но только обнаружил ошибки, которые не имеют ничего общего с моим, например: космическими ошибками, PRINTF ошибки ...
Из того, что я понимаю, cudaError_t это перечисление, который определенный в cuda_runtime_api.h, поэтому, включив его, у меня не должно быть никаких проблем ...
У кого-нибудь есть ключ к тому, что происходит?
EDIT
Файл Я просто прилагается mycuda.cu. Существует еще один файл с именем main.cpp, который просто вызывает функцию callCudaCode() из mycuda.cu. Я использую Qt Creator и qmake для создания проекта. Да, я позаботился о настройке файла .pro, чтобы Qt не пытался скомпилировать проект .cu. Если я прокомментирую строку, объявляющую переменную myCudaError, проект компилируется отлично. Если я раскомментирую это, я получаю проблему с компиляцией.
Какое имя файла находится в вопросе - используете ли вы имя файла, которое заканчивается на '.cpp'? – tera
Этот файл cuda.cu. Существует еще один файл main.cpp, который просто вызывает callCudaCode() из этого файла. –
Если файл имеет расширение '.cu', то время выполнения CUDA не требуется - nvcc будет автоматически включать заголовки CUDA. – tera