2013-03-04 2 views
3

У меня есть следующие файлы:Visual Studio .CU файл показывает синтаксическую ошибку, но успешно компилируется

// Main.cpp 
#include "kernel_util.cuh" 

int main() 
{ 
    call_kernel(); 
} 

// kernel_util.cuh 
#ifndef KERNEL_UTIL 
#define KERNEL_UTIL 

#include <cuda_runtime.h> 

void call_kernel(); 

#endif 

// kernel_util.cu 
#include "kernel_util.cuh" 
#include "kernel.curnel" 

#define thread 16 

void call_kernel() { 

    dim3 blocks((width + thread - 1)/thread, (height + thread - 1)/thread); 

    dim3 threads(thread, thread); 

    kernel<<<blocks, threads>>>(); 
} 

// kernel.curnel 
#ifndef KERNEL 
#define KERNEL 

#include <cuda_runtime.h> 

__global__ void kernel() { 

} 

#endif 

у меня есть Visual Studio 2010 с 64 битным компилятором и CUDA 5.0 инструментарием установлен. Над код успешно компилируется, но линия

kernel<<<blocks, threads>>>(); 

третий < дает «ожидается выражение» ошибка, но код компилируется без проблем и достигает функцию ядра.

свойства конфигурации:

  • каст тип элемента файл C/C++ компилятор
  • куб элемент типа файла CUDA C/C++
  • CuH Тип элемента файла не участвует в сборке
  • вещь curnel файл тип Не участвует в сборке
+0

Я предполагаю, что проблема обнаруживается в Intellisense? –

+0

что вы подразумеваете под этим. Вы можете быть более конкретным?? –

+0

Где вы узнали об ошибке? Очевидно, что во время компиляции, как вы сказали, код компилируется чисто. Таким образом, единственной другой областью, где могла возникнуть ошибка, была бы проверка синтаксиса фона в VS, иначе Intellisense. –

ответ

1

IDE (MSVC++) и внешний интерфейс компилятора, используемый им для IntelliSense (предложения автозаполнения и красные строки под «неправильным» кодом) не имеют понятия о CUDA и его специфическом синтаксисе. Есть несколько способов, чтобы VS понимал большинство кода CUDA, но выбор <<< >>> для блоков/потоков в CUDA является очень неудачным, что интерфейсы компилятора C++ не могут понять (по крайней мере, для этого потребуется очень обширная модификация синтаксический анализатор).

В общем, вам нужно жить с красными строчками ниже <<< >>>.

+0

другой ответ, который я нашел http://stackoverflow.com/questions/6061565/setting-up-vs-2010-intellisense-for-cuda-kernel-calls –

Смежные вопросы