Tengo una red neuronal escrita en Erlang, y acabo de comprar una tarjeta GeForce GTX 260 con una GPU de 240 núcleos. ¿Es trivial usar CUDA como pegamento para ejecutar esto en la tarjeta gráfica?¿Cómo puedo hacer que un programa concurrente ya escrito se ejecute en una matriz de GPU?
Respuesta
No, usar CUDA no es una cuestión trivial.
El modelo de programación CUDA básicamente usa C (con algunas adiciones) pero para aprovechar al máximo las capacidades de la GPGPU, deberá asegurarse de que sus algoritmos sigan las pautas de CUDA. (Ver NVidia CUDA Programming Guide)
Por ejemplo, para obtener el mejor rendimiento de memoria (alrededor de 70 Gbps) necesita acceder a la memoria en modo de transmisión con coalescencia, también las ramificaciones son muy costosas en las GPU, así que debe evitar condicionales tanto como posible. Consulte la guía y las muestras proporcionadas con el SDK, proporcionarán un excelente punto de partida
Sí, eso es mucho trabajo. Para obtener una aceleración significativa, tendrá que entender cómo organizar los datos y el concepto de media urdimbre y coalescencia como se mencionó. También creo que el código de máquina objetivo cambia de acuerdo con la serie GPU ... – Sushant
Ojalá pudiera decirle cómo hacerlo con Erlang ... ;-), pero al menos, Satnam Singh en MS La investigación ha realizado un trabajo muy interesante con Haskell (Lava) y F #. Tal vez este trabajo le puede dar alguna intuición de cómo se podría hacerse:
Enlace roto. La página de inicio de Satnam está aquí: http://research.microsoft.com/en-us/people/satnams/ –
- 1. ¿Puedo escribir un programa en binario directamente? ¿Cómo puedo hacer que la computadora lo ejecute?
- 2. ¿Cómo hacer que un bookmarklet se ejecute solo una vez?
- 3. Cómo puedo hacer que el instalador se ejecute como administrador
- 4. cómo hacer que jenkins ejecute un script de python que ejecute una compilación?
- 5. ¿Cómo hacer que una aplicación se ejecute continuamente en Android?
- 6. Cygwin1.dll 'no encontrado' cuando se ejecuta un programa escrito en C. ¿Cómo puedo hacer que Windows lo encuentre?
- 7. ¿Puedo hacer que @OnApplicationStart no se ejecute en las pruebas?
- 8. cómo hacer que pyinotify ejecute un programa en cualquier modificación sobre un archivo?
- 9. ¿Cómo puedo hacer que un fragmento de código se ejecute en un hilo separado?
- 10. Inno Setup: ¿cómo puedo hacer que mi programa se ejecute cuando un usuario inicia sesión en Windows?
- 11. HTML adjunto que contiene javascript no se ejecuta, ¿cómo puedo hacer que se ejecute?
- 12. ¿Puedo modificar un entorno Win7 para permitir que un programa .Net se ejecute siempre como administrador?
- 13. Crear una nueva tarea que ejecute un programa
- 14. ¿Puedo hacer que un Apache que se ejecute en Windows distingue entre mayúsculas y minúsculas?
- 15. ¿Cómo puedo hacer que salga un programa de consola C++?
- 16. ¿Cómo evitar que un programa Linux se ejecute más de una vez?
- 17. Hacer que PHP se ejecute y se comunique con una aplicación Java en un servidor web
- 18. ¿Cómo puedo limitar que se ejecute un bucle foreach n?
- 19. ¿Cómo puedo hacer que mi script PHP se ejecute a una hora determinada todos los días?
- 20. ¿Cómo hacer que una aplicación J2ME se ejecute en segundo plano?
- 21. Cómo hacer que uwsgi --emperor se ejecute como daemon
- 22. ¿Cómo puedo hacer que un actor Akka se ejecute cada 5 minutos?
- 23. ¿Cómo puedo hacer que Visual Studio se rompa justo antes de que se detenga el programa?
- 24. ¿Cómo hacer que Hudson CI ejecute un script de Powershell?
- 25. Hacer que se ejecute un archivo bash ejecutable al hacer clic en
- 26. ¿Cómo puedo hacer que un programa espere un cambio de variable en javascript?
- 27. ¿Puedo hacer que NUnit ejecute pruebas en orden aleatorio?
- 28. ¿Cómo hacer que Notepad ++ ejecute script basado en su nombre?
- 29. ¿Cómo puedo hacer que un programa se inicie automáticamente en OSX?
- 30. SQL ¿Cómo hacer que un trabajo ejecute un trabajo?
pregunta impresionante, es posible que desee considerar un aumento de esto en la comunidad Erlang, podría inspirar a algunos cambios verdaderamente notable en Erlang! :-) – none
@none: lo dudo. El modelo de simultaneidad de erlang no funciona muy bien con los lenguajes del modelo de simultaneidad como el uso de CUDA o OpenCL. He hecho algunos esfuerzos (aún no publicados) para escribir enlaces de openCL para erlang, pero la única aplicación real que veo para él ahora es hacer cosas como transformaciones rápidas de matriz. – Amadiro