Я искал экстенсивно возможное решение своей ошибки в течение прошлых 2 недель. Я успешно установил Cuda 64-разрядный компилятор (инструменты) и SDK, а также 64-разрядная версия Visual Studio Express 2008 и Windows 7 SDK с Платформой 3.5. Я использую 64-разрядный Windows XP. Я подтвердил, что VSE может скомпилировать в 64-разрядном, поскольку я имею все в наличии 64-разрядные опции мне использующий шаги на следующем веб-сайте: (так как Visual Express по сути не включает 64-разрядные пакеты),
http://jenshuebel.wordpress.com/2009/02/12/visual-c-2008-express-edition-and-64-bit-targets/
Обновления реестра для 64-разрядной установки найдены в комментарии пользователя на той же странице как вышеупомянутая ссылка.
Я подтвердил 64-разрядную способность к компиляции, так как "x64" доступен из выпадающего меню под "Инструментами-> Опции-> VC ++, Каталоги" и компилирующий в 64-разрядном не приводят ко всему "пропускаемому" проекту. Я включал все необходимые каталоги для 64-разрядных cuda инструментов, 64 SDK and Visual Express (\VC\bin\amd64).
Вот сообщение об ошибке, которое я получаю при попытке скомпилировать в 64-разрядном:
1>------ Build started: Project: New, Configuration: Release x64 ------
1>Compiling with CUDA Build Rule...
1>"C:\CUDA\bin64\nvcc.exe" -arch sm_10 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin" -Xcompiler "/EHsc /W3 /nologo /O2 /Zi /MT " -maxrregcount=32 --compile -o "x64\Release\template.cu.obj" "c:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\src\CUDA_Walkthrough_DeviceKernels\template.cu"
1>nvcc fatal : Visual Studio configuration file '(null)' could not be found for installation at 'C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/../..'
1>Linking...
1>LINK : fatal error LNK1181: cannot open input file '.\x64\Release\template.cu.obj'
1>Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\New\New\x64\Release\BuildLog.htm"
1>New - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Вот простой код, который я пытаюсь компилировать/выполнять в 64-разрядном:
#include
#include
#include
#include
#include
void mypause ()
{
printf ( "Press [Enter] to continue . . ." );
fflush ( stdout );
getchar();
}
__global__ void VecAdd1_Kernel(float* A, float* B, float* C, int N)
{
int i = blockDim.x*blockIdx.x+threadIdx.x;
if (i
UPDATE 06/04/2010:
Хорошо, я нашел решение проблемы. Код в порядке. После выполнения шагов по ссылке выше и добавления необходимого ключа реестра убедитесь, что Windows SDK имеет правильную версию (7.0), запустив Windows SDK Configuration Tool из меню "Пуск", выберите правильную версию (v7.0) и нажмите "Make Current".
Убедитесь, что для компиляции x64 включены следующие каталоги (в разделе "Tools->Options->Projects And Solutions->VC++ Directories): C:\CUDA\bin64 C:\CUDA\lib64 C:\CUDA\include C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64
Теперь есть еще одна вещь, которую нужно изменить для 64-битной системы. По-видимому, компилятор cuda имеет "жестко закодированный" каталог для 64-битных компиляторов на Visual Express 2008. Чтобы сделать исправление, скопируйте нужный файл "vcvars64.bat" и переименуйте его в "vcvarsamd64.bat" следующим образом:
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars64. bat
to
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat
После изменения программа скомпилировалась и успешно запустилась.
Я читал "другие" сообщения по всему интернету о других решениях этой ошибки: "nvcc fatal: Visual Studio configuration file '(null)'", но очень немногие указали вышеупомянутое как требование, чтобы заставить nvcc найти необходимый файл конфигурации visual studio.
Отказ от ответственности: я установил на чистую машину и ОС.
Надеюсь, это поможет другим людям с подобными проблемами.