Ada : exécution d'un code en interactif

Exécution d'un code séquentiel en interactif

L'exécution d'un programme séquentiel sur Ada est limité en interactif au niveau :

  • du temps CPU du processus : 30mn;
  • de la mémoire pour l'ensemble du travail < 3.5Go;

Si le programme a besoin de plus de ressources, il faut alors le soumettre en mode batch.

Pour connaitre en détail les limites en interactif :

$ ulimit -Ha

Exécution d'un code parallèle MPI en interactif

L'exécution d'un programme parallèle MPI sur Ada est limitée en interactif au niveau :

  • du temps Elapsed (temps d'horloge) : 30mn;
  • de la mémoire pour chaque tache MPI < 3.5Go;
  • du nombre de tâches (< 32).

Si le programme a besoin de plus de ressources, il faut alors soumettre en mode batch.

Voici un exemple d'exécution en interactif pour un programme parallèle sur 4 processeurs (avec par exemple un exécutable nommé poisson_MPI):

$ export MP_PROCS=4
$ poe ./poisson_MPI

ou directement :

$ poe ./poisson_MPI -procs 4

Les exécutions parallèles en INTERACTIF sont en compétition avec les jobs parallèles : quand les ressources demandées ne sont pas disponibles, on obtient le message suivant :

ERROR: 0031-365  LoadLeveler unable to run job, reason:
LoadL_negotiator: 2544-870 Step ada338.idris.fr.1613.0 was not considered
to be run in this scheduling cycle due to its relatively
low priority or because there are not enough free resources.

Exécution en interactif d'un code parallèle multitâche à mémoire partagée

L'exécution en interactif d'un programme parallèle à mémoire partagée (parallélisé avec OpenMP, ou automatiquement) sur Ada est limitée au niveau :

  • du temps CPU du processus : 30mn;
  • de la mémoire pour l'ensemble du travail < 3.5Go;
  • du nombre de tâches (threads) (⇐ 4).

Si le programme a besoin de plus de ressources, il faut alors soumettre ce programme en mode batch.

Voici un exemple d'exécution en interactif d'un programme OpenMP demandant 4 threads (tâches OpenMP) :

$ export OMP_NUM_THREADS=4
$ ./prog

Si votre programme a été parallélisé automatiquement, vous pouvez, de la même façon, contrôler le nombre de processus légers générés avec la variable OMP_NUM_THREADS.

Attention : si votre code utilise la directive OpenMP threadprivate, vous aurez alors le message d'erreur suivant lors de l’exécution interactive :

OMP: Error #113: Too many threads to use threadprivate directive.
OMP: Hint: Consider setting KMP_ALL_THREADPRIVATE to a value larger than 128.
forrtl: error (76): Abort trap signal

Pour éviter ceci, il vous suffit d'ajouter l'option -openmp-threadprivate=compat à la compilation. Notez que cette option peut diminuer légèrement les performances du code.

Exécution d'un code parallèle mixte MPI/OpenMP en interactif

L'exécution d'un programme parallèle mixte (MPI + threads) en interactif sur Ada est limitée par :

  • le temps Elapsed (temps de restitution), limité à 30 mn,
  • la mémoire par processus MPI, limitée à 3.5Go,
  • le maximum de 32 processus MPI et de 4 tâches OpenMP par processus MPI.

Si le programme a besoin de plus de ressources, il faut le soumettre en mode batch.

Voici un exemple d'exécution en interactif d'un programme parallèle mixte avec 4 processus MPI et 2 tâches OpenMP par processus MPI :

$ export OMP_NUM_THREADS=2
$ export MP_PROCS=4
$ poe ./poisson_MPI_OMP