Compilation Problems

#include "device_launch_parameters.h"

__global__ void drawDef(unsigned char* buffer, unsigned char* paint) {
	buffer[blockIdx.x + blockIdx.y*gridDim.x] = paint[blockIdx.x + blockIdx.y*gridDim.x];
}

This simple code does not compile. Here are the entries from the console:

1>------ Перестроение всех файлов начато: проект: FireDrawCUDA, Конфигурация: Debug x64 ------
1>CUDA.cu
1>.NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>CUDA.obj : /DEBUG:FASTLINK не поддерживается, если присутствует управляемый код; выполняется перезапуск компоновки с /DEBUG:FULL
1>CUDA.obj : юсэрЁєцхэ ьюфєы№ MSIL; фы  MSIL яюёыхфютрЄхы№эр  ъюьяюэютър юЄъы■ўхэр; т√яюыэ хЄё  яюыэр  ъюьяюэютър
1>CUDA.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0A000008) gridDim
1>CUDA.obj : error LNK2020: эхЁрчЁх°хээр  ыхъёхьр (0A000009) blockIdx
1>CUDA.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы "blockIdx"
1>CUDA.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы "gridDim"
1>C:\Users\carpg\OneDrive\─юъєьхэЄ√\C#\FireEngine\FireEngine Test\bin\Debug\FireDrawCUDA.dll : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 4
1>Сборка проекта "FireDrawCUDA.vcxproj" завершена с ошибкой.
========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ==========

This is a decoded verison:

1>------ Перестроение всех файлов начато: проект: FireDrawCUDA, Конфигурация: Debug x64 ------
1>CUDA.cu
1>.NETFramework,Version=v4.0.AssemblyAttributes.cpp
1>CUDA.obj : /DEBUG:FASTLINK не поддерживается, если присутствует управляемый код; выполняется перезапуск компоновки с /DEBUG:FULL
1>CUDA.obj : обнаружен модуль MSIL; для MSIL последовательная компоновка отключена; выполняется полная компоновка
1>CUDA.obj : error LNK2020: неразрешенная лексема (0A000008) gridDim
1>CUDA.obj : error LNK2020: неразрешенная лексема (0A000009) blockIdx
1>CUDA.obj : error LNK2001: неразрешенный внешний символ "blockIdx"
1>CUDA.obj : error LNK2001: неразрешенный внешний символ "gridDim"
1>C:\Users\carpg\OneDrive\Документы\C#\FireEngine\FireEngine Test\bin\Debug\FireDrawCUDA.dll : fatal error LNK1120: неразрешенных внешних элементов: 4
1>Сборка проекта "FireDrawCUDA.vcxproj" завершена с ошибкой.
========== Перестроение всех проектов: успешно: 0, с ошибками: 1, пропущено: 0 ==========

You need to compile device code with nvcc, not the host compiler. gridDim and blockIdx are pre-defined variables when compiling with the device tool chain, but of course are undefined symbols for the host compiler.

When you compile code with nvcc, you do not need to (and should not) include CUDA-specific header files in the source like device_launch_parameters.h. nvcc includes those automatically.

I am not sure whether using managed code (MSIL) in the host code portion of a CUDA program is supported. Probably not but I haven’t tried it.