_ITERATOR_DEBUG_LEVEL компилятора Cuda (NVCC)? - PullRequest
3 голосов
/ 14 марта 2012

Кто-нибудь знает, что _ITERATOR_DEBUG_LEVEL устанавливает NVCC?

Я работаю в проекте Cmake в VS2010 и получаю сообщение об ошибке при попытке связать проект:

2>warper_cuda.lib(cudakernels.cu.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in ColorTable.obj

Iможет установить для _ITERATOR_DEBUG_LEVEL значение 0 для файлов c ++, но тогда он больше не будет связываться с некоторыми другими библиотеками.Поэтому мне нужен способ, чтобы nvcc компилировался с уровнем 2.

Использование всего в режиме релиза работает, поэтому уровень, кажется, установлен правильно.Командная строка, используемая для компиляции, выглядит следующим образом:

"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/bin/nvcc.exe" C:/path/to/cudakernels.cu -c -o "C:/path/to/cudakernels.cu.obj" -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" -m64 -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -Xcompiler ,\"/DWIN32\",\"/D_WINDOWS\",\"/W3\",\"/Zm1000\",\"/EHsc\",\"/GR\",\"/openmp\" -DNVCC -I -IC:/include/directory ...

1 Ответ

6 голосов
/ 15 марта 2012

Только что нашел решение здесь: http://llpanorama.wordpress.com/2008/05/21/my-first-cuda-program/

Мне пришлось добавить «-D_DEBUG» в командную строку NVCC, чтобы он использовал _ITERATOR_DEBUG_LEVEL со значением 2 ...

...