2013-06-14 2 views
0

Я собрал мой Cuda проект с помощью Visual Studio 2010. Я противопоставили заявил об ошибке:Cuda Проект не Компиляция

student_func.cu (65): ошибка C2059: синтаксическая ошибка: '<'

линия, где происходит ошибка, когда функция ядра называется:

rgba_to_greyscale<<< gridSize, blockSize >>>(d_rgbaImage, d_greyImage, numRows, numCols); 

и вот код для student_func.cu:

#include "reference_calc.cpp" 
#include "utils.h" 
#include <stdio.h> 



__global__ 
void rgba_to_greyscale(const uchar4* const rgbaImage, 
        unsigned char* const greyImage, 
        int numRows, int numCols) 
{ 

} 


void your_rgba_to_greyscale(const uchar4 * const h_rgbaImage, uchar4 * const d_rgbaImage, 
         unsigned char* const d_greyImage, size_t numRows, size_t numCols) 
{ 
    //You must fill in the correct sizes for the blockSize and gridSize 
    //currently only one block with one thread is being launched 
    const dim3 blockSize(1, 1, 1); //TODO 
    const dim3 gridSize(1, 1, 1); //TODO 
    rgba_to_greyscale<<< gridSize, blockSize >>>(d_rgbaImage, d_greyImage, numRows, numCols); 

    cudaDeviceSynchronize(); checkCudaErrors(cudaGetLastError()); 
} 
+0

Имеет ли файл, содержащий этот код расширение '.cpp'? – talonmies

+0

Да, основной файл, содержащий главную функцию ... Проблема, я думаю, некоторая ссылка отсутствует в свойствах проекта, так как у меня есть другой проект, который я создал, отредактировав проект cuda Sample, и он отлично работает! – Luqman

+0

Также комментируя эту строку, проект успешно строится! – Luqman

ответ

1

Пожалуйста, ознакомьтесь с этим руководством по телефону how to integrate CUDA in a Visual Studio C++ project.

Кроме того, вы должны организовать код так, чтобы:

  • .h, .cpp, .c, .hpp файлы не должны содержать код CUDA (как __device__ функции и вызов ядра в вашем случае). Однако в этих файлах вы можете назвать API CUDA (например, cudaMalloc, cudaMemcpy и т. Д.). Эти файлы компилируются компилятором, отличным от NVCC.
  • .cuh, .cu Файлы должны содержать код CUDA. Эти файлы скомпилированы NVCC.

В качестве примера предположим, что у вас есть код FDTD на основе графического процессора. Обычно я делаю следующее (Visual Studio 2010).

  • main.cpp файла, включая передачу памяти CPU-GPU;
  • FDTD.cu, включая функцию extern "C" void E_update(...), содержащую ядро ​​<<< >>> call;
  • файл main.h, включая прототип extern "C" void E_update(...);
  • FDTD.cuh, в том числе __global__ void E_update_kernel(...) функция.
Смежные вопросы