Tratando de comprender cómo las personas escriben códigos paralelos en la actualidad, considerando la inmensa importancia del hardware multinúcleo y de multiprocesamiento actualmente. Para mí, parece que el paradigma dominante es pthreads (hilos POSIX), que es nativo en Linux y está disponible en Windows. Las personas de HPC tienden a usar OpenMP o MPI, pero parece que no hay muchos aquí en StackOverflow. ¿O confía en el enhebrado de Java, las API de enhebrado de Windows, etc. en lugar de los estándares portátiles? ¿Cuál es la forma recomendada, en su opinión, para hacer programación paralela?¿Qué API de programación en paralelo usa?
¿O está usando cosas más exóticas como Erlang, CUDA, RapidMind, CodePlay, Oz o incluso querida vieja Occam?
Aclaración: Estoy buscando soluciones que sean bastante portátiles y aplicables a plataformas como Linux, varias Unixes, en varias arquitecturas de host. Windows es un caso raro que es agradable de soportar. Entonces, C# y .net son muy limitados aquí, el CLR es una genial tecnología, pero PODRÍAN SACARLO para el host de Linux, para que sea tan frecuente como JVM, Python, Erlang o cualquier otro lenguaje portátil.
C++ o basado en JVM: probablemente C++, ya que las JVM tienden a ocultar el rendimiento.
MPI: Estoy de acuerdo en que incluso las personas de HPC lo ven como una herramienta difícil de usar, pero para ejecutar en 128000 procesadores, es la única solución escalable para los problemas donde no se aplican mapas/reducciones. Sin embargo, el paso de mensajes tiene una gran elegancia, ya que es el único estilo de programación que parece escalar muy bien a la memoria local/AMP, memoria compartida/SMP, entornos distribuidos de tiempo de ejecución.
Un nuevo contendiente interesante es el MCAPI. pero no creo que nadie haya tenido tiempo para tener ninguna experiencia práctica con eso todavía.
Así que, en general, la situación parece ser que hay muchos proyectos interesantes de Microsoft que no conocía, y que la API o pthreads de Windows son las implementaciones más comunes en la práctica.
tal vez debería reformular la pregunta; está demasiado * basada en las opiniones * y, por lo tanto, podría cerrarse. –
Supongo que es ...cuando lo pregunté hace nueve años parecía razonable preguntarlo, pero definitivamente no tiene sentido como una pregunta práctica del tipo que ahora es dominante en stackoverflow. – jakobengblom2