VS2008 не компилирует cuda - PullRequest
       7

VS2008 не компилирует cuda

1 голос
/ 01 марта 2011

Короче говоря, когда я пытаюсь скомпилировать проект VS2008 внутри IDE, он завершается неудачно, но когда я использую ту же командную строку в командной строке, он компилируется.Кто-нибудь может помочь?

Подробности

Использование VS2008 с Cuda инструментарием 3.2.Также установлен VS2010.Сделали следующее: шаги до начала процедуры.

  1. Добавлен файл пользовательского правила, который был в: C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v3.2\extras\visual_studio_integration\rules
  2. Затем добавлен C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v3.2\lib\x64 в дополнительные каталоги библиотеки в linker->general в свойствах проекта и cudart.lib и cuda.lib на дополнительные зависимости.

Пожалуйста, дайте мне знать, если я что-то упустил.

Вывод команды set в приглашении cmd:

CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\bin
CUDA_INC_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\include
CUDA_LIB_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\lib\x64
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\
CUDA_PATH_V3_2=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\

Упс, забыл сообщения об ошибках .

1>t.cu.obj : error LNK2019: unresolved external symbol ___cudaUnregisterFatBinary@4 referenced in function "void __cdecl __cudaUnregisterBinaryUtil(void)" (?__cudaUnregisterBinaryUtil@@YAXXZ)
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaLaunch@4 referenced in function "enum cudaError __cdecl cudaLaunch<char>(char *)" (??$cudaLaunch@D@@YA?AW4cudaError@@PAD@Z)
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaSetupArgument@12 referenced in function "void __cdecl __device_stub__Z12compute_sum4P6float4S0_S0_i(struct float4 *,struct float4 *,struct float4 *,int)" (?__device_stub__Z12compute_sum4P6float4S0_S0_i@@YAXPAUfloat4@@00H@Z)
1>t.cu.obj : error LNK2019: unresolved external symbol ___cudaRegisterFunction@40 referenced in function "void __cdecl __sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46(void)" (?__sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46@@YAXXZ)
1>t.cu.obj : error LNK2019: unresolved external symbol ___cudaRegisterFatBinary@4 referenced in function "void __cdecl __sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46(void)" (?__sti____cudaRegisterAll_47_tmpxft_00000ea8_00000000_8_t_compute_10_cpp1_ii_65ce9b46@@YAXXZ)
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventDestroy@4 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventElapsedTime@12 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventSynchronize@4 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaConfigureCall@32 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventRecord@8 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaThreadSynchronize@0 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaEventCreate@4 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaMemcpy@16 referenced in function _main
1>t.cu.obj : error LNK2019: unresolved external symbol _cudaMalloc@8 referenced in function _main
1>D:\projects\cup1\Debug\cup1.exe : fatal error LNK1120: 14 unresolved externals

Это командная строка :

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\bin\nvcc.exe"    -gencode=arch=compute_10,code=\"sm_10,compute_10\" -gencode=arch=compute_20,code=\"sm_20,compute_20\"  --machine 32 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin"    -Xcompiler "/EHsc /W3 /nologo /O2 /Zi   /MT  "  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\\include" -maxrregcount=32  --compile -o "Debug/t.cu.obj" t.cu 

Ответы [ 3 ]

3 голосов
/ 01 марта 2011

Вы компилируете с nvcc для 32-битной (--machine 32), но ваши связанные cuda-библиотеки 64-битные ([..]\lib\x64).

3 голосов
/ 01 марта 2011

nvcc является не только компилятором, но также может использоваться для компоновки.

Однако, когда вы работаете в VS2008, этап компоновки выполняется VS.Вы должны указать, чтобы он включал дополнительные файлы библиотеки cuda. ​​

В свойствах вашего проекта установите:

  • Свойства конфигурации -> Linker -> General.Установите: «Дополнительные каталоги библиотек», чтобы включить каталог CUDA lib.В вашем случае должно хватить значения $ (CUDA_LIB_PATH), поскольку эта переменная окружения указывает в правильном направлении

  • Свойства конфигурации -> Линкер -> Вход.Установите: «Дополнительные зависимости» в «cudart.lib»

0 голосов
/ 01 марта 2011

Убедитесь в двух вещах:

  1. Вы добавили cudart.lib в Дополнительные входы.

  2. Путь к cudart.lib и cudartxx_xx_x.dll задается в каталогах VC ++.Также добавьте путь cuda dll в переменные среды вашей системы.

Вот пошаговое руководство: Запуск CUDA в Visual Studio 2008

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...