Si su programa es sólo un gran bucle utilizando OpenMP puede ser tan simple como escribir:
#pragma omp parallel for
OpenMP sólo es útil para la programación de memoria compartida, que a no ser que el clúster ejecuta algo así como kerrighed significa que la versión paralela que usa OpenMP solo se ejecutará a lo sumo un nodo a la vez.
MPI se basa en la transmisión de mensajes y es un poco más complicado para empezar. Sin embargo, la ventaja es que su programa podría ejecutarse en varios nodos a la vez, pasando mensajes entre ellos cuando sea necesario. Dado que dijiste "para diferentes conjuntos de datos", parece que tu problema podría caer en la categoría "vergonzosamente paralela", donde si tienes más de 100 conjuntos de datos podrías simplemente configurar el programador para ejecutar uno conjunto de datos por nodo hasta que todos estén completos, sin necesidad de modificar su código y casi una velocidad de 100x con solo usar un solo nodo.
Por ejemplo, si su clúster usa cóndor como planificador, puede enviar 1 trabajo por cada elemento de datos al universo "general", variando solo la línea "Argumentos =" de la descripción del trabajo. (Hay otras maneras de hacer esto para Condor que pueden ser más sensatas y también hay cosas similares para torque, sge, etc.)
+1 por mencionar kerrighed – srean
Gracias. ¡Me divierto jugando con eso para trabajar un tiempo después de que mosix/openmosix muriera! – Flexo