Pregunta: ¿Existe un emulador para una tarjeta Geforce que me permita programar y probar CUDA sin tener el hardware real?
Info:
Estoy buscando acelerar algunas simulaciones mías en CUDA, pero mi problema es que no siempre estoy en mi escritorio para hacer este desarrollo. En su lugar, me gustaría trabajar un poco en mi netbook, pero mi netbook no tiene GPU. Hasta donde yo sé, necesitas una GPU con capacidad CUDA para ejecutar CUDA. ¿Hay alguna forma de evitar esto? Parecería que la única forma es un emulador de GPU (que obviamente sería tremendamente lento, pero funcionaría). Pero cualquiera que sea la forma de hacer esto, me gustaría escuchar.
Estoy programando en Ubuntu 10.04 LTS.
Respuestas:
Para aquellos que buscan la respuesta en 2016 (e incluso 2017) ...
Descargo de responsabilidad
gpuocelot
si satisface su lista de dependencias.Intenté conseguir un emulador para BunsenLabs (Linux 3.16.0-4-686-pae # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) i686 GNU / Linux).
Te diré lo que he aprendido.
nvcc
solía tener una-deviceemu
opción en CUDA Toolkit 3.0Descargué CUDA Toolkit 3.0, lo instalé e intenté ejecutar un programa simple:
Tenga en cuenta que en CUDA Toolkit 3.0
nvcc
estaba en formato/usr/local/cuda/bin/
.Resultó que tuve dificultades para compilarlo:
Descubrí en Internet que si usaba
gcc-4.2
o similar antiguo en lugar degcc-4.9.2
los errores podrían desaparecer. Me di por vencido.gpuocelot
La respuesta de Stringer tiene un enlace a un
gpuocelot
sitio web de proyecto muy antiguo . Entonces, al principio pensé que el proyecto se abandonó en 2012 más o menos. En realidad, fue abandonado pocos años después.Aquí hay algunos sitios web actualizados:
Intenté instalar gpuocelot siguiendo la guía . Sin embargo, tuve varios errores durante la instalación y me di por vencido nuevamente.
gpuocelot
ya no es compatible y depende de un conjunto de versiones muy específicas de bibliotecas y software.Puede intentar seguir este tutorial de julio de 2015, pero no garantizo que funcione. No lo he probado.
MCUDA
Puede ser útil. Aquí hay un enlace al sitio web .
Residuos CUDA
Es un emulador para usar en Windows 7 y 8. Sin embargo, no lo he probado. Ya no parece estar desarrollado (la última confirmación está fechada el 4 de julio de 2013).
Aquí está el enlace al sitio web del proyecto: https://code.google.com/archive/p/cuda-waste/
CU2CL
Última actualización: 12.03.2017
Como señaló Dashesy en los comentarios, CU2CL parece ser un proyecto interesante. Parece ser capaz de traducir código CUDA a código OpenCL. Entonces, si su GPU es capaz de ejecutar código OpenCL, entonces el proyecto CU2CL podría ser de su interés.
Enlaces:
fuente
nvcc -deviceemu
CUDA Waste
trabajarCU2CL
trabajarEsta respuesta puede ser demasiado tarde, pero vale la pena señalarla de todos modos. GPU Ocelot ( de la cual soy uno de los principales contribuyentes ) se puede compilar sin los controladores de dispositivo CUDA (libcuda.so) instalados si desea utilizar el emulador o los backends LLVM. He demostrado el emulador en sistemas sin GPU NVIDIA.
El emulador intenta implementar fielmente las especificaciones PTX 1.4 y PTX 2.1 que pueden incluir características que las GPU más antiguas no admiten. El traductor LLVM se esfuerza por lograr una traducción correcta y eficiente de PTX a x86 que, con suerte, hará de CUDA una forma eficaz de programar tanto CPU multinúcleo como GPU.
-deviceemu
ha sido una característica obsoleta de CUDA durante bastante tiempo, pero el traductor LLVM siempre ha sido más rápido.Además, varios verificadores de corrección están integrados en el emulador para verificar: los accesos a la memoria alineados, los accesos a la memoria compartida están sincronizados correctamente y la desreferenciación de la memoria global accede a las regiones de memoria asignadas. También hemos implementado un depurador interactivo de línea de comandos inspirado en gran parte por gdb para realizar un solo paso a través de kernels CUDA, establecer puntos de interrupción y puntos de observación, etc. Estas herramientas fueron desarrolladas específicamente para acelerar la depuración de programas CUDA; puede resultarles útil.
Perdón por el aspecto exclusivo de Linux. Hemos comenzado una rama de Windows ( así como un puerto de Mac OS X ) pero la carga de ingeniería ya es lo suficientemente grande como para enfatizar nuestras búsquedas de investigación. Si alguien tiene tiempo e interés, ¡puede desear ayudarnos a brindar soporte para Windows!
Espero que esto ayude.
fuente
También puede consultar el proyecto gpuocelot , que es un verdadero emulador en el sentido de que se emulará PTX (código de bytes en el que se convierte el código CUDA).
También hay un traductor LLVM, sería interesante probar si es más rápido que cuando se usa -deviceemu.
fuente
El kit de herramientas de CUDA tenía uno integrado hasta el ciclo de lanzamiento de CUDA 3.0. Si usa una de estas versiones muy antiguas de CUDA, asegúrese de usar -deviceemu cuando compile con nvcc.
fuente
https://github.com/hughperkins/cuda-on-cl le permite ejecutar programas NVIDIA® CUDA ™ en GPU OpenCL 1.2 (divulgación completa: soy el autor)
fuente
Tenga cuidado cuando programe usando -deviceemu, ya que hay operaciones que nvcc aceptará mientras esté en modo de emulación, pero no cuando se ejecute en una GPU. Esto se encuentra principalmente en la interacción dispositivo-host.
Y como mencionaste, prepárate para una ejecución lenta.
fuente
GPGPU-Sim es un simulador de GPU que puede ejecutar programas CUDA sin usar GPU. Creé una imagen de Docker con GPGPU-Sim instalado para mí en caso de que sea útil.
fuente