Как да изградим проект в C ++ с внедряването на част от кода в CUDA?

Възможно е проблемът да е в компилатора:
Използвам Visual Studio 2010
Прегледах няколко урока, всички те изглеждат еднакво, но след като са предприели стъпките, за които пишат, все още не са довели до успех.
Ако основната () функция е във .cu файла, тогава всичко работи без проблеми, но когато се опитам да го извикам от .cpp файла, проблеми се появяват по време на компилацията.
По-долу е даден пример:


Всичко работи добре. Но ако се опитам да създам нов .cpp файл и поставете същия код от test.cu, тогава се появяват изписаните по-долу грешки:

1> main.cpp
1> e: \ inzynierka \ v5 \ hello.cuh (4): грешка C2144: грешка в синтаксиса: 'void' трябва да се предшества от ';'
1> e: \ inzynierka \ v5 \ hello.cuh (4): грешка C4430: липсващ спецификатор на типа - предполага се int. Забележка: C ++ не поддържа default-int
1> e: \ inzynierka \ v5 \ hello.cuh (7): грешка C2065: 'blockIdx': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (7): грешка C2228: вляво от '.x' трябва да има клас/структура/съюз
1> типът е "неизвестен тип"
1> e: \ inzynierka \ v5 \ hello.cuh (7): грешка C2065: 'blockDim': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (7): грешка C2228: вляво от '.x' трябва да има клас/структура/съюз
1> типът е "неизвестен тип"
1> e: \ inzynierka \ v5 \ hello.cuh (7): грешка C2065: 'threadIdx': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (7): грешка C2228: вляво от '.x' трябва да има клас/структура/съюз

1> типът е "неизвестен тип"
1> e: \ inzynierka \ v5 \ hello.cuh (20): грешка C3861: 'cudaMalloc': идентификаторът не е намерен
1> e: \ inzynierka \ v5 \ hello.cuh (21): грешка C2065: 'cudaMemcpyHostToDevice': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (21): грешка C3861: 'cudaMemcpy': идентификаторът не е намерен
1> e: \ inzynierka \ v5 \ hello.cuh (22): грешка C2065: 'dim3': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (22): грешка C2146: грешка в синтаксиса: липсва ';' преди идентификатора 'dimGrid'
1> e: \ inzynierka \ v5 \ hello.cuh (22): грешка C3861: 'dimGrid': идентификаторът не е намерен
1> e: \ inzynierka \ v5 \ hello.cuh (23): грешка C2065: 'dim3': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (23): грешка C2146: грешка в синтаксиса: липсва ';' преди идентификатора „dimBlock“
1> e: \ inzynierka \ v5 \ hello.cuh (23): грешка C3861: 'dimBlock': идентификаторът не е намерен
1> e: \ inzynierka \ v5 \ hello.cuh (24): грешка C2059: грешка в синтаксиса: 'e: \ inzynierka \ v5 \ hello.cuh (25): грешка C2065:' cudaMemcpyDeviceToHost ': недеклариран идентификатор
1> e: \ inzynierka \ v5 \ hello.cuh (25): грешка C3861: 'cudaMemcpy': идентификаторът не е намерен
1> e: \ inzynierka \ v5 \ hello.cuh (26): грешка C3861: 'cudaFree': идентификаторът не е намерен
1>
1> Изграждане FAILED.

За файла пишат различни уроци usertype.dat което трябва да премахне всички долни черти на неизвестни символи (като __global__ или blockIdx.x), така че не намерих този файл, но всъщност не би трябвало да засяга нищо.

Знам, че има много уроци, но вече прекарах n-часове, щраквайки върху този проблем и досега без резултати, правя нещо нередно.