Вопрос: есть ли эмулятор для карты Geforce, который позволил бы мне программировать и тестировать CUDA без реального оборудования?
Информация:
Я хочу ускорить несколько моих симуляций в CUDA, но моя проблема в том, что я не всегда рядом со своим рабочим столом для выполнения этой разработки. Вместо этого я хотел бы поработать на своем нетбуке, но в моем нетбуке нет графического процессора. Насколько я знаю, вам нужен графический процессор с поддержкой CUDA для запуска CUDA. Есть ли способ обойти это? Казалось бы, единственный способ - это эмулятор графического процессора (который, очевидно, будет мучительно медленным, но сработает). Но как бы это ни было, я хотел бы услышать.
Я программирую на Ubuntu 10.04 LTS.
Ответы:
Для тех, кто ищет ответ в 2016 (и даже 2017) ...
Отказ от ответственности
gpuocelot
если вы удовлетворите его список зависимостей.Я попытался получить эмулятор для BunsenLabs (Linux 3.16.0-4-686-pae # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) i686 GNU / Linux).
Я расскажу вам, что я узнал.
nvcc
Раньше-deviceemu
у CUDA Toolkit 3.0 была опцияЯ скачал CUDA Toolkit 3.0, установил его и попробовал запустить простую программу:
Обратите внимание, что в CUDA Toolkit 3.0
nvcc
был в/usr/local/cuda/bin/
.Оказалось, что у меня возникли трудности с его компиляцией:
Я обнаружил в Интернете, что если я использую
gcc-4.2
или аналогичный древний,gcc-4.9.2
то ошибки могут исчезнуть. Я сдался.gpuocelot
В ответе Стрингера есть ссылка на очень старый
gpuocelot
сайт проекта. Так что сначала я подумал, что проект был заброшен в 2012 году или около того. Собственно, через несколько лет от него отказались.Вот несколько актуальных веб-сайтов:
Я попытался установить gpuocelot следующих руководств . Однако при установке у меня было несколько ошибок, и я снова сдался.
gpuocelot
больше не поддерживается и зависит от набора очень специфических версий библиотек и программного обеспечения.Вы можете попробовать следовать этому руководству с июля 2015 года, но я не гарантирую, что оно сработает. Я не тестировал.
MCUDA
Может быть полезно. Вот ссылка на сайт .
Отходы CUDA
Это эмулятор для использования в Windows 7 и 8. Я не пробовал его. Похоже, что он больше не разрабатывается (последний коммит датирован 4 июля 2013 г.).
Вот ссылка на сайт проекта: https://code.google.com/archive/p/cuda-waste/
CU2CL
Последнее обновление: 12.03.2017
Как отметил Дашеси в комментариях, CU2CL кажется интересным проектом. Кажется, можно перевести код CUDA в код OpenCL. Так что, если ваш графический процессор способен запускать код OpenCL, то проект CU2CL может вас заинтересовать.
Ссылки:
источник
nvcc -deviceemu
CUDA Waste
работуCU2CL
работуЭтот ответ может быть запоздалым, но все равно стоит отметить. GPU Ocelot ( я являюсь одним из основных участников ) может быть скомпилирован без установленных драйверов устройств CUDA (libcuda.so), если вы хотите использовать эмулятор или серверные части LLVM. Я продемонстрировал эмулятор на системах без графических процессоров NVIDIA.
Эмулятор пытается точно реализовать спецификации PTX 1.4 и PTX 2.1, которые могут включать функции, которые старые графические процессоры не поддерживают. Транслятор LLVM стремится к правильному и эффективному преобразованию из PTX в x86, что, мы надеемся, сделает CUDA эффективным способом программирования многоядерных процессоров, а также графических процессоров.
-deviceemu
долгое время была устаревшей функцией CUDA, но переводчик LLVM всегда был быстрее.Кроме того, в эмулятор встроено несколько средств проверки правильности для проверки: выровненные обращения к памяти, обращения к разделяемой памяти правильно синхронизированы, а глобальное разыменование памяти обращается к выделенным областям памяти. Мы также реализовали интерактивный отладчик командной строки, вдохновленный, главным образом, gdb для пошагового управления ядрами CUDA, установки точек останова и наблюдения и т. Д. Эти инструменты были специально разработаны для ускорения отладки программ CUDA; вы можете найти их полезными.
Извините за аспект только для Linux. Мы запустили ветку Windows ( а также портируем для Mac OS X ), но инженерная нагрузка уже достаточно велика, чтобы усилить наши исследования. Если у кого-то есть время и интерес, он может помочь нам в поддержке Windows!
Надеюсь это поможет.
источник
Вы также можете проверить проект gpuocelot, который является настоящим эмулятором в том смысле, что будет эмулироваться PTX (байт-код, в который преобразуется код CUDA).
Также есть транслятор LLVM, было бы интересно проверить, быстрее ли он, чем при использовании -deviceemu.
источник
Набор инструментов CUDA был встроен в него до цикла выпуска CUDA 3.0. Если вы используете одну из этих очень старых версий CUDA, обязательно используйте -deviceemu при компиляции с nvcc.
источник
https://github.com/hughperkins/cuda-on-cl позволяет запускать программы NVIDIA® CUDA ™ на графических процессорах OpenCL 1.2 (полное раскрытие: я автор)
источник
Будьте осторожны при программировании с использованием -deviceemu, поскольку есть операции, которые nvcc будет принимать в режиме эмуляции, но не при фактическом запуске на графическом процессоре. В основном это происходит при взаимодействии устройства с хостом.
И, как вы упомянули, приготовьтесь к медленному выполнению.
источник
GPGPU-Sim - это симулятор графического процессора, который может запускать программы CUDA без использования графического процессора. Я создал образ докеры с установленной программой GPGPU-Sim на случай, если это будет полезно.
источник