Emulador de GPU para programación CUDA sin el hardware



Answers

Esta respuesta puede ser demasiado tarde, pero vale la pena señalar de todos modos. GPU Ocelot ( del cual soy uno de los contribuidores principales ) se puede compilar sin los controladores de dispositivo CUDA (libcuda.so) instalados si desea usar 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 anteriores no son compatibles. El traductor de LLVM se esfuerza por una traducción correcta y eficiente de PTX a x86 que, con suerte, hará que CUDA sea una forma efectiva de programar CPU multinúcleo y GPU. -deviceemu ha sido una característica obsoleta de CUDA durante bastante tiempo, pero el traductor de LLVM siempre ha sido más rápido.

Además, varios controles de corrección están integrados en el emulador para verificar: los accesos de memoria alineados, los accesos a la memoria compartida están sincronizados correctamente y la eliminación de referencias de memoria global accede a las regiones de memoria asignadas. También hemos implementado un depurador interactivo de línea de comando inspirado en gran medida por gdb para pasar de un solo paso a través de kernels CUDA, establecer puntos de interrupción y puntos de observación, etc. Estas herramientas se desarrollaron específicamente para agilizar la depuración de los programas CUDA; puedes encontrarlos útiles.

Perdón por el aspecto solo de Linux. Hemos comenzado una sucursal de Windows ( así como un puerto 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, ¡pueden ayudarnos a brindar asistencia para Windows!

Espero que esto ayude.

Question

Pregunta: ¿Existe un emulador para una tarjeta Geforce que me permita programar y probar CUDA sin tener el hardware real?

Información:

Estoy buscando acelerar algunas simulaciones mías en CUDA, pero mi problema es que no siempre estoy cerca de mi escritorio para hacer este desarrollo. Me gustaría hacer algo de trabajo en mi netbook, pero mi netbook no tiene una GPU. Ahora, que yo sepa, 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 muy lento, pero funcionaría). Pero de cualquier manera que haya para hacer esto, me gustaría escuchar.

Estoy programando en Ubuntu 10.04 LTS.




El kit de herramientas de CUDA tenía uno integrado hasta el ciclo de lanzamiento de CUDA 3.0. Si usas una de estas versiones muy antiguas de CUDA, asegúrate de usar -deviceemu cuando compiles con nvcc.




Tenga cuidado cuando programe usando -deviceemu ya que hay operaciones que nvcc aceptará mientras está en modo de emulación, pero no cuando realmente se ejecuta en una GPU. Esto se encuentra principalmente con la interacción dispositivo-host.

Y como mencionaste, prepárate para una ejecución lenta.






Links