Bueno, en realidad no ha indicado exactamente a qué hardware se dirige, si es una máquina de memoria compartida, OpenMP es una opción. La mayoría de los programadores paralelos considerarían la paralelización con OpenMP como una opción más fácil que usar MPI en cualquiera de sus encarnaciones. También sugiero que sea más fácil adaptar OpenMP a un código existente que MPI. Los mejores, en el sentido de mejores resultados, los programas MPI son aquellos diseñados desde cero para ser paralelos con el envío de mensajes.
Además, el mejor algoritmo secuencial puede no ser siempre el algoritmo más eficiente, una vez que ha sido paralelizado. A veces, un algoritmo simple pero secuencialmente subóptimo es una mejor opción.
Es posible que tenga acceso a una computadora de memoria compartida:
- todas las CPU de varios núcleos son efectivamente los ordenadores de memoria compartida;
- en una gran cantidad de clústeres, los nodos son a menudo de dos o cuatro CPUs fuertes, si cada uno tiene 4 núcleos, es posible que tenga una máquina de memoria compartida de 16 núcleos en su clúster;
- si tiene acceso a un supercomputador MPP, probablemente encontrará que cada uno de sus nodos es una computadora de memoria compartida.
Si tiene problemas con el envío de mensajes, le recomiendo encarecidamente que se quede con C++ y OpenMPI (o con MPI ya instalado en su sistema), y definitivamente debería mirar también BoostMPI. Aconsejo esto con firmeza porque, una vez que salgas de la corriente principal de la computación científica de alto rendimiento, puedes encontrarte en un ejército de una sola programación con una colección idiosincrásica de bibliotecas de ajuste justo para investigación y otras herramientas. C++, OpenMPI y Boost están lo suficientemente bien utilizados como para que puedas considerarlos como de "grado armamentístico" o como sea tu analogía preferida. Hay poco tráfico en SO, por ejemplo, en MPI y OpenMP, revisa las estadísticas de las otras tecnologías antes de apostar la granja por ellas.
Si no tiene experiencia con MPI, es posible que desee consultar un libro llamado Parallel Scientific Computing en C++ y MPI por Karniadakis y Kirby. El uso de MPI por Gropp y otros está bien como referencia, pero no es un texto para principiantes sobre la programación para el envío de mensajes.
HI! Muchas gracias por su respuesta. –