Наименьший возможный полный набор исходных и пакетных файлов для создания приложения CUDA через командную строку? - PullRequest
0 голосов
/ 01 марта 2012

Допустим:

  • ОС Windows 7
  • Visual Studio Express 2010 с пакетом обновления 1 (SP1) только что установлен (и не изменен с помощью *.rules или чего-либо еще)
  • CUDA SDKустановлен
  • SDK для вычислений на GPU установлен
  • чистый / пустой набор переменных среды (поэтому нам нужно запустить vcvars и все, что угодно ..)

Правильный ответ обеспечивает:

  • содержимое пакетного файла
  • исходное (и проект, если необходимо) содержимое файла (, включая хотя бы один * 1026)* файл для использования на практике)

(Ответ на неизбежный комментарий "Почему ты не ...")

Настройка по умолчанию работаетне для меня, и мой выбор состоит в том, чтобы попробовать то, о чем этот вопрос.

(Вопрос лишнего ответа)

Или это вообще невозможно, и мыобречены исследовать флажки GUI в стиле грубой силы?

Кто-нибудь?:)

1 Ответ

2 голосов
/ 02 марта 2012

Будь моим первоначальным вопросом требования экзотическими или нет, оказывается, достаточно простой способ их удовлетворить, предусматривающий:

  • нет зависимости от файла VS .*proj и его сложностей
  • бинарная совместимость с библиотеками утилит cutil и shrutils, собранными с настройкой SDK для вычислений по умолчанию на GPU (сборка их "вручную" (т.е. без файла .*proj), я думаю, также не вызовет проблем)
  • нет явной зависимости от настройки окружения (требуется только несколько явно указанных PATH компонентов (например, CUDA_PATH (или как там - CUDA_PATH_4_1?), И друзья могут уйти из вашей глобальной среды), см. Ниже)
  • нет ограничений на то, где должен находиться каталог сборки (относительно инструментария CUDA или дистрибутивов GPU SDK или чего-либо еще)
  • нет необходимости соответствующим образом развертывать (или даже исправлять) правила проекта VS или расширения MSBuild, а также нет зависимости от порядка установки VC10, NVIDA GPU SDK и инструментария CUDA (я полагаю, что одно из последних фактически развертывает правила проекта CUDA в VC10 с правила и расширения сборки CUDA для MSBUILD)
  • (со всем вышеперечисленным) способность правильно (я полагаю) построить примеры вычислений на GPU SDK

Для начала предположим, что у нас есть набор исходных файлов проекта NVIDIA "шаблон", скомпилированных полностью с нуля, без каких-либо файлов VS .*proj в:

  • Win7 x86
  • VS2010 SP1
  • Инструментарий CUDA 4.1
  • NVIDIA GPU SDK 4.1

По умолчанию исходные файлы находятся под "C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1\C\src\template" (есть другие, но они не понадобятся):

  • template_gold.cpp
  • template.cu
  • template_kernel.cu

Пакетные команды для подготовки среды (исправьте первые три, чтобы соответствовать вашей настройке, если она не соответствует настройке по умолчанию):

set "vc10=C:\Program Files\Microsoft Visual Studio 10.0\vc"
set "cudatoolkit=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1"
set "gpusdk=C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.1"

call "%vc10%\bin\vcvars32.bat"

set "path=%cudatoolkit%\bin\;%path%"
set "path=%gpusdk%\C\common\lib\win32;%path%"

Пакетный файл (я назвал мой cuda_build.bat) для сборки (при условии, что вам понадобятся и cutil, и shrutil, которые интенсивно используются образцами SDK):

nvcc --verbose --keep --cl-version 2010 --use-local-env ^
 -Xcompiler "/EHsc /nologo /Od /Zi /MT" ^
 -DWIN32 -D_MBCS ^
 -L"%cudatoolkit%\lib\win32" ^
 -L"%gpusdk%\C\common\lib\win32" ^
 -L"%gpusdk%\shared\lib\Win32" ^
 -I"%cudatoolkit%\include" ^
 -I"%gpusdk%\C\common\inc" -I"%gpusdk%\shared\inc" ^
 -I. ^
 -lcuda  -lcudart -lcufft ^
 -lcutil32 -lshrutils32 ^
 -lopengl32 -lfreeglut -lglew32 ^
 -lkernel32 -luser32 -lgdi32 ^
 %*

Для сборки передайте список файлов .cpp и .cu в пакетный файл выше:

cuda_build.bat template_gold.cpp template.cu

Чтобы создать более-менее тихо и не сохранять промежуточные файлы, удалите ключи --verbose --keep из cuda_build.bat.

Полученный файл a.exe может быть запущен, если пути заданы первыми частями команд в этом посте (т. Е. Все необходимые .dll уже будут в пути).

Обратите внимание (если вам интересно), что минимальная среда, с которой нужно начинать, - это просто (в командах оболочки, изменить соответственно в соответствии с вашими настройками) или даже меньше (я не пробовал, но компоновщик не работает, по крайней мере, в отсутствие временные каталоги):

set Path=C:\Windows\System32

set SystemDrive=C:
set SystemRoot=C:\Windows
set TEMP=C:\Users\A90B~1\AppData\Local\Temp
set TMP=C:\Users\A90B~1\AppData\Local\Temp

P.S. Чтобы создать более крупный пример, нужно выполнить шаги similair, но добавить (или скопировать) исходные файлы, такие как rendercheck_gl.cpp, если они указаны в проекте, в список исходных файлов для сборки. Я протестировал его с примерами проектов nbody, fluidsGL, simpleGL и oceanFFT, и он работает. (particle пример ломается при включении thrust заголовка библиотеки - но компиляция с помощью. * Proj-файла происходит сбой таким же образом - выглядит (для меня), что некоторые шаблоны магии несовместимы с VC10).

Надеюсь, всем, кто интересуется этой темой и не любит конфигурацию MS IDE так же, как я, это понравится. :)

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