Cuda项目未编制

时间:2013-06-14 10:31:40

标签: visual-studio-2010 opencv 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());
}

1 个答案:

答案 0 :(得分:1)

请首先查看how to integrate CUDA in a Visual Studio C++ project上的本指南。

此外,您应该组织代码,以便:

  • .h,.cpp,.c,.hpp 文件不应包含CUDA代码(例如__device__函数和内核调用)。但是,在这些文件中,您可以调用CUDA API(例如,cudaMalloccudaMemcpy等)。这些文件由NVCC以外的编译器编译。
  • .cuh,.cu 文件应包含CUDA代码。这些文件由NVCC编译。

例如,假设有一个基于GPU的FDTD代码。我通常会执行以下操作(Visual Studio 2010)。

  • main.cpp 文件,包括CPU-GPU内存传输;
  • FDTD.cu ,包括extern "C" void E_update(...)函数,其中包含内核<<< >>>调用;
  • main.h 文件,包括extern "C" void E_update(...)原型;
  • FDTD.cuh ,包括__global__ void E_update_kernel(...)功能。