Почему nvcc не может найти мою установку Visual C++?

Я использую Windows 7 Pro x64 на Core i5 с NVIDIA 3100m, который совместим с CUDA.

Я пытался установить как 32-битные, так и 64-битные инструменты CUDA от NVIDIA, но, к сожалению, ни с одним из них я не могу ничего скомпилировать; nvcc говорит: «Не удается найти поддерживаемую версию cl. Поддерживаются только MSVC 8.0 и MSVC 9.0».

У меня установлены компиляторы x86 и x86-64 через Windows 7 SDK (версия компилятора 15.00.30729.01 для обеих арок). Оба компилятора работают корректно; Я создал и протестировал код C и C++, используя их. Я пробовал запускать nvcc из командных оболочек, настроенных как для 32-битной, так и для 64-битной компиляции, и использовать параметр командной строки -ccbin для nvcc, чтобы указать его в каталоге установки Visual C++.

Каков правильный способ обработки этой установки? Есть ли способ сделать nvcc более подробным о том, что происходит? Флаг -v не очень полезен. В идеале какой-то способ заставить его показать, что он находит, по сравнению с тем, что он ожидает найти. Будет ли это работать лучше, если я вместо этого установлю Visual C++ Express? Или только коммерческая версия VC++ поддерживается для использования с CUDA?


person Jack Lloyd    schedule 03.05.2010    source источник


Ответы (4)


Похоже, вы не устанавливали Visual Studio 2005 или 2008, но номер версии вашего компилятора указывает на то, что это MSVC 9.0. Самый простой способ заставить все работать — это установить Visual Studiso, и я думаю, что Express будет работать.

Кроме того, вы можете просмотреть эту тему на форуме Nvidia.

person sjchoi    schedule 05.05.2010

Включить эту строку

компилятор-bindir = C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin

in

C:\CUDA\bin64\nvcc.profile

person Indy9000    schedule 11.11.2010
comment
У меня нет этого каталога (C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin). Какой файл он ищет в этом каталоге? - person mcmillab; 30.09.2013
comment
Это сработало как шарм! У меня есть только C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin, но это тоже сработало. - person OptimusCrime; 31.10.2015
comment
Я попытался отредактировать nvcc.profile, и он говорит, что доступ запрещен. Я вошел в систему как администратор. Вы случайно не представляете, почему это так? - person Kanmani; 27.10.2017
comment
Я думаю, что это должно быть между "s - person JHBonarius; 17.12.2017

С CUDA v6.0 по-прежнему требуется более старая версия Visual Studio (я использую 2010), но другие решения мне не подошли.

Чтобы это работало, добавьте следующее в ваш nvcc.profile (C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v6.0/bin/nvcc.profile):

CUDA_NVCC_FLAGS += --compiler-bindir = "-IE:/PROGRA~2/MICROS~2.0/VC/bin"

У меня также установлен VS 2013, и мне нужен этот аргумент, чтобы nvcc не мог найти более новую (к сожалению, несовместимую) версию cl.exe.

person Fiarr    schedule 12.06.2014

Я пытался заставить CUDA 6.5 работать с VS 2010 Express. После удаления VS 2010 Express, установки Windows SDK 7.1 и переустановки VS 2010 Express, установки Windows SDK 7.1 в качестве набора инструментов и т. д. Ничего не сработало. В конце концов, мне помогло добавить в CUDA_NVCC_FLAGS следующее:

--cl-version 2010

Вам также может понадобиться добавить:

--machine 32

Сначала я попробовал соответствующие флаги в командной строке.

Эта ссылка оказалась очень полезной

person Vortex    schedule 22.12.2014