Интеграция nvcc в VisualStudio

789 views
Skip to first unread message

Egor

unread,
Mar 21, 2012, 6:36:57 PM3/21/12
to CUDA.CS.MSU.SU
Всем привет
необходима внятная помощь с означенным в теме
с любой студией, лишь бы работало
конфигурация машины - i7 + GTX 560 + win7x64
сделал то что описано тут
http://forums.nvidia.com/index.php?showtopic=216829&st=0&gopid=1366941&#entry1366941
единственный вопрос в теме - мой, там же описание проблемы
очень нужно
заранее благодарен

Dmitry N. Mikushin

unread,
Mar 21, 2012, 6:58:01 PM3/21/12
to cudac...@googlegroups.com
Здравствуйте Егор,

Сам для новой книги 3 дня назад начал делать гайд по установке. В
приложении - текущие картинки к нему, надеюсь достаточно "внятные",
так как самого текста там пока нет. Суть в том, что я выполнял шаги
очень близкие к приведённым инструкциям на форуме. Никаких проблем не
возникло. Система: windows 7 32-bit. Может быть CUDA заклинивает на
кириллических именах в пути?

- Д.

2012/3/22 Egor <gueston...@gmail.com>:

> --
> Вы получили это сообщение, поскольку подписаны на группу CUDA.CS.MSU.SU.
>
> Чтобы добавлять сообщения в эту группу, отправьте письмо по адресу cudac...@googlegroups.com.
> Чтобы отменить подписку на эту группу, отправьте сообщение по адресу cudacsmsusu...@googlegroups.com.
> О дополнительных функциях можно узнать в группе по адресу http://groups.google.com/group/cudacsmsusu?hl=ru.
>

w7guide.pdf

Egor

unread,
Mar 26, 2012, 2:10:58 PM3/26/12
to CUDA.CS.MSU.SU
Здравствуйте, Дмитрий
спасибо за ответ
инструкции описанные в приложении ничего не дали - я получаю все те же
ошибки компиляции что и раньше
вот тут
http://www.aimantarek.com/2011/01/how-to-make-new-cuda-project-in-vs-2010.html
вроде бы написано все логично но результат тот же

ессно, я не уникален, но похоже тут ошибка еще 2010 года, и ее по идее
пофиксили
http://forums.nvidia.com/index.php?showtopic=199986

полный текст ошибки тут
http://forums.developer.nvidia.com/devforum/discussion/6391/error-msb3721-when-compiling

все еще не разобрался

Dmitry N. Mikushin

unread,
Mar 27, 2012, 2:56:53 AM3/27/12
to cudac...@googlegroups.com
Егор, повторю ещё один раз: по виду проблема в кириллическом имени
пользователя. Пожалуйста, создайте в системе пользователя с именем,
использующем только латинские буквы, перенестите проект в его домашний
каталог и попробуйте пересобрать.

2012/3/27 Egor <gueston...@gmail.com>:

Сергей Козлов

unread,
Nov 14, 2012, 9:59:40 AM11/14/12
to cudacsmsusu
У тебя не работает что-то, а никого это не волнует, потому что у них работает.

А совет с пользователями - признание ошибки работы с юникоде символами в программе NVidia.

У меня например куда не давала никакого выигрыша в производительности. Мне сказали, что я её не могу загрузить.
В итоге я сделал реализацию куда для центрального процессора.

И понял, что со всех технологий нужно брать только идеи.

А тех, кто не даёт, чтобы у тебя или меня работала программа, не сможешь победить.

Если бы ты им заплатил, тогда бы имел право требовать результат.

А так тебе дали идеи хорошие и плохую реализацию - ты должен быть доволен.

Сделай через потоки для центрального процессора.
И наплюй на реализацию NVidia.


14 ноября 2012 г., 13:14 пользователь Борис Сторонкин <boris.s...@gmail.com> написал:
Здравствуйте!

Я до сих пор бьюсь над настройкой среды разработки с CUDA 5 в Win7 x64. Не могу настроить безошибочную компиляцию простой программы на Сuda ни в одной версии MS Visual Studio (пробовал VS 2008, 2010, 2012).

Cuda 4.0 у меня работала с MS VS 2008, но 64-разрядная компиляция также не удавалась, а это очень важно для меня. Вот решил с CUDA 5 разобраться.

Я уже замучил Google: такое ощущение, что CUDA 5 никто не ставил. В документации на docs.nvidia.com процесс настройки среды описан очень поверхностно, как будто все должно быть без проблем.

У меня Ошибка MSB3721 (как при компиляции Win32, так и x64):
Ошибка 39 error MSB3721: выход из команды ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include"     --keep-dir "Release" -maxrregcount=0  --machine 32 --compile     -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Zi  /MD  " -o "Release\kernel.cu.obj" "C:\Users\1\Documents\Visual Studio 2010\Projects\015_TestCuda\015_TestCuda\kernel.cu"" с кодом "1". C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 5.0.targets 592 10 015_TestCuda

В Интернете про нее пишут, но это описание мне не помогает. Кто-то говорит, что CUDA не поддерживает VS 2010, кто-то говорит, что теперь поддерживает.

Есть ли у Вас информация о том, какие версии Visual Studio совместимы с CUDA 5, и что нужно сделать, чтобы простая CUDA программа в этой версии VS компилировалась без ошибок (желательно 64-разрядная сборка)? В Вашей инструкции про 32-разрядную написано.

Думал проблема в имени пользователя "1". Создал пользователя "cuda", запустил MS Visual Studio из него. Та же ошибка. Может нужно Visual Studio удалить и переустановить под этим новым пользователем?

Спасибо.

вторник, 27 марта 2012 г., 10:56:53 UTC+4 пользователь Mae Marcus написал:
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msg/cudacsmsusu/-/wXCfwUQvMW4J.

Dmitry N. Mikushin

unread,
Nov 14, 2012, 10:27:01 AM11/14/12
to cudac...@googlegroups.com
Здравствуйте, Борис,

Я делал для русской книги по CUDA инструкцию по настройке CUDA 4.2 для
Visual Studio 2010 (приведена в этой теме чуть выше). Система там была
64-битная, а вот 64-битная ли сборка - не уверен, если по умолчанию
32-битная, то вряд ли. Этот момент я упустил, постараемся учесть в
следующих изданиях.

Если Вы уверены, что делаете всё правильно, то остаётся только
порекомендовать способы анализа.
1) Во-первых, лог который Вы приводите ничего не сообщает о характере
самой ошибки, только команду и код возврата. Сообщения там точно
никакого нет?
2) Попробуйте запустить ""C:\Program Files\NVIDIA GPU Computing


Toolkit\CUDA\v5.0\bin\nvcc.exe"
-gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env
--cl-version 2010 -ccbin "C:\Program Files (x86)\Microsoft Visual
Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing
Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing
Toolkit\CUDA\v5.0\include" --keep-dir "Release" -maxrregcount=0
--machine 32 --compile -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2
/Zi /MD " -o "Release\kernel.cu.obj" "C:\Users\1\Documents\Visual

Studio 2010\Projects\015_TestCuda\015_TestCuda\kernel.cu"" из
командной строки Visual Studio (это - отдельная консоль, должна быть
где-то в меню пуска), соответствующе отредактировав пути файлов.
Выдаёт ли оно какую-либо ошибку?
3) Если нет, то попробуйте добавить опцию "-v" (показ внутренних
команд) и пришлите результат сюда. По нему можно будет увидеть, какой
именно этап компиляции не проходит.
4) Если есть подозрение, что дело в имени пользователя, то чтобы не
тратить лишнее время на переустановку, попробуйте сначала
скомпилировать через консоль, модифицировав команду и перемещая файлы
так, чтобы "1" в путях не фигурировало.

Успехов,
- Д.

14 ноября 2012 г., 11:14 пользователь Борис Сторонкин

> Просмотреть это обсуждение в Сети можно по адресу
> https://groups.google.com/d/msg/cudacsmsusu/-/wXCfwUQvMW4J.
>

Борис Сторонкин

unread,
Nov 16, 2012, 11:45:08 PM11/16/12
to cudac...@googlegroups.com
Здравствуйте!

Вот какой результат выдала компиляция в командной строке (см. аттач).

среда, 14 ноября 2012 г., 19:27:03 UTC+4 пользователь Mae Marcus написал:
результат.txt

Dmitry N. Mikushin

unread,
Nov 17, 2012, 12:16:24 AM11/17/12
to cudac...@googlegroups.com
Борис,

Спасибо, аутпут в целом выглядит корректно, но части шагов не хватает:
на предпоследнем этапе перед совмещением GPU- и CPU-частей почему-то
взял и завалился. Давайте попробуем выяснить что за файл он там не
находит. Добавьте к команде компиляции помимо "-v" еще и "-keep" - это
Вам сохранит временные файлы в рабочей директории (а не директории
временных файлов, где они автоматом стираются). После компиляции с
-keep попробуйте пускать повторно только последний этап:

cl -D__CUDA_ARCH__=100 -nologo -E -TP -DCUDA_FLOAT_MATH_FUNCTIONS -DCUDA_N
O_SM_11_ATOMIC_INTRINSICS -DCUDA_NO_SM_12_ATOMIC_INTRINSICS -DCUDA_NO_SM_13_DOUB
LE_INTRINSICS /EHsc /W3 /nologo /Od /Zi /RTC1 /MDd -D__CUDA_FTZ -I"C:/Progra
m Files/NVIDIA GPU Computing Toolkit/CUDA/v5.0/include" -I"C:/Program Files/NVID
IA GPU Computing Toolkit/CUDA/v5.0/include" "-IC:\Program Files\NVIDIA GPU Compu
ting Toolkit\CUDA\v5.0\bin/../include" -EHsc "C:/Users/cuda/AppData/Local/Temp
/tmpxft_000017f8_00000000-2_kernel.cudafe1.cpp" > "Debug/kernel.cu.obj"

- Не в точности эту команду, а ту, что будет при новой сборке с
"-keep", с другими именами. Посмотрите по системе, все ли существуют
файлы из тех, которыми она оперирует. Вообще, раз "-E", то это -
команда препроцессора, и не-находить там особо нечего кроме самого
входного файла:
"C:/Users/cuda/AppData/Local/Temp/tmpxft_000017f8_00000000-2_kernel.cudafe1.cpp"
- того, что будет на его месте.

Извините за витееватый инструктаж, у меня нет такой системы под рукой,
поэтому могу предложить только шаги для её аккуратного анализа,
который заодно позволит Вам лучше понять работу компилятора CUDA.

- Д.

17 ноября 2012 г., 5:45 пользователь Борис Сторонкин

> https://groups.google.com/d/msg/cudacsmsusu/-/YYGHu7SDAPgJ.

Борис Сторонкин

unread,
Nov 18, 2012, 8:11:05 AM11/18/12
to cudac...@googlegroups.com
Здравствуйте!
Сделал, как Вы посоветовали (результат в аттаче). Временных файлов некоторых нет. Вот например, отсутствует Debug/kernel.cpp1.ii. Debug\kernel.cu.obj тоже отсутствует.

суббота, 17 ноября 2012 г., 9:16:26 UTC+4 пользователь Mae Marcus написал:
Временные файлы.jpg
результат2_1.txt

Борис Сторонкин

unread,
Nov 26, 2012, 2:52:51 AM11/26/12
to cudac...@googlegroups.com
Мне стоит ждать ответа? Я уже почти собрался сносить CUDA 5 и снова пробовать 4.2. Хотя не факт, что 64-разрядные сборки будут собираться...

воскресенье, 18 ноября 2012 г., 17:11:06 UTC+4 пользователь Борис Сторонкин написал:

Dmitry N. Mikushin

unread,
Nov 26, 2012, 3:19:44 AM11/26/12
to cudac...@googlegroups.com
Здравствуйте, Борис,

Что именно не находится - по-прежнему непонятно. Как я уже писал выше, необходимо пытаться модифицировать указанную Вами проблемную команду так, чтобы она перестала выдавать ошибку:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>cl -D__CUDA_ARCH__=100 -n
ologo -E -TP    -DCUDA_FLOAT_MATH_FUNCTIONS -DCUDA_NO_SM_11_ATOMIC_INTRINSICS -D
CUDA_NO_SM_12_ATOMIC_INTRINSICS -DCUDA_NO_SM_13_DOUBLE_INTRINSICS  -D__CUDACC__  -D__NVCC__  /EHsc /W3 /nologo /Od /Zi /RTC1 /MDd   -I"C:/Program Files/NVIDIA GP
U Computing Toolkit/CUDA/v5.0/include" -I"C:/Program Files/NVIDIA GPU Computing
Toolkit/CUDA/v5.0/include" "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
\v5.0\bin/../include"   -D "_MBCS" -FI "cuda_runtime.h" -EHsc "C:/cuda/Projects/
020Test/020Test/kernel.cu" > "Debug/kernel.cpp1.ii"

Для начала, cl вообще находится, если просто набрать из консоли cl?

Попробуйте покрутить, упростить, убрать аргументы. Это - препроцессор, его вообще трудно сломать - тем более удивительно, что он что-то не находит. Оба временных файла, которые Вы назвали на данном этапе не должны существовать. Файл obj - это конечный объект, до него дело не дошло, Debug/kernel.cpp1 - stdout неработающей команды (стоит перенаправление символом ">"). Раз команда не сработала, то его и нет.

Вот это сочетание "-IC:\Pro... выг/лядит подозрительно. Становится ли лучше, если его заменить на -I"C:\Pro... ?

- Д.


26 ноября 2012 г., 8:52 пользователь Борис Сторонкин <boris.s...@gmail.com> написал:
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msg/cudacsmsusu/-/ZUsNn2UgJqAJ.

Борис Сторонкин

unread,
Nov 26, 2012, 3:22:19 AM11/26/12
to cudac...@googlegroups.com
Спасибо за ответ. Вечером попробую покрутить команду.

понедельник, 26 ноября 2012 г., 12:19:48 UTC+4 пользователь Mae Marcus написал:

Борис Сторонкин

unread,
Nov 27, 2012, 5:27:09 AM11/27/12
to cudac...@googlegroups.com
cl запускается:

Setting environment for using Microsoft Visual Studio 2010 x86 tools.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>cl
Оптимизирующий 32-разрядный компилятор Microsoft (R) C/C++ версии 16.00.30319.01
 для 80x86
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

использование: cl [ параметр... ] имя_файла... [ /link параметр_компоновки... ]

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>

а вот полная команда 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>"C:\Program Files\NVIDIA
GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm
_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files (x86
)\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing
 Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUD
A\v5.0\include"  -G -e  --keep --keep-dir "Debug" -maxrregcount=0  --machine 32
--compile  -g   -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o "
Debug\kernel.cu.obj" "C:\cuda\Projects\020Test\020Test\kernel.cu"
tmpxft_000013d0_00000000-2_kernel.cudafe1.gpu
tmpxft_000013d0_00000000-7_kernel.cudafe2.gpu

теперь выдает ошибку "Прекращена работа программы ptxas.exe"

При попытке отладки в консоли дописывается следующее:
fatbinary : fatal error : Could not open input file 'C:/Users/cuda/AppData/Local
/Temp/tmpxft_000013d0_00000000-11_kernel.sm_10.cubin'

понедельник, 26 ноября 2012 г., 12:22:19 UTC+4 пользователь Борис Сторонкин написал:

Dmitry N. Mikushin

unread,
Nov 27, 2012, 12:43:51 PM11/27/12
to cudac...@googlegroups.com
> теперь выдает ошибку

А что изменилось по сравнению с прошлой версией?


> При попытке отладки в консоли дописывается следующее

В чём заключается попытка отладки?

> Could not open input file 'C:/Users/cuda/AppData/Loca/Temp/tmpxft_000013d0_00000000-11_kernel.sm_10.cubin'

Ну там его нет, потому что у вас стоит опция -keep - по ней все промежуточные файлы будут выложены в рабочую директорию (а не во временную).

- Д.

27 ноября 2012 г., 11:27 пользователь Борис Сторонкин <boris.s...@gmail.com> написал:
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msg/cudacsmsusu/-/AqgA0g8_L3MJ.

Сергей Козлов

unread,
Jun 23, 2014, 9:20:40 PM6/23/14
to cudac...@googlegroups.com
Предлагаю интегрировать Visual Studio в NVCC!


27 ноября 2012 г., 20:43 пользователь Dmitry N. Mikushin <maem...@gmail.com> написал:

Boris Storonkin

unread,
Jun 24, 2014, 1:20:05 AM6/24/14
to cudac...@googlegroups.com, cudac...@googlegroups.com
Здравствуйте, Сергей!

Спасибо, уже не требуется.

С уважением,
Борис Сторонкин

24.06.2014, в 5:20, Сергей Козлов <kozlov.sergey....@gmail.com> написал(а):

Вы получили это сообщение, поскольку подписаны на одну из тем в группе "CUDA.CS.MSU.SU".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/cudacsmsusu/P3XEGEr8N_w/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес cudacsmsusu...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес cudac...@googlegroups.com.
Чтобы зайти в группу, перейдите по ссылке http://groups.google.com/group/cudacsmsusu.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Сергей Козлов

unread,
Jun 24, 2014, 1:23:07 AM6/24/14
to cudac...@googlegroups.com
Уважаемый Борис!

Я не Вам это написал.
Я выступил в роли Руководителя Отдела Проектирования Программного Обеспечения.


24 июня 2014 г., 8:20 пользователь Boris Storonkin <boris.s...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на группу "CUDA.CS.MSU.SU".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес cudacsmsusu...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages