Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tâches parallèles #8

Merged
merged 13 commits into from
Feb 24, 2025
Merged

Tâches parallèles #8

merged 13 commits into from
Feb 24, 2025

Conversation

ofisette
Copy link
Collaborator

No description provided.

@ofisette ofisette requested a review from plstonge February 24, 2025 00:11
Copy link
Contributor

@plstonge plstonge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Voilà, j'ai terminé mes commentaires à travers le fichier parallel.rst. Il y a beaucoup de contenu, wow! On verra avec l'expérience s'il y a certaines parties trop avancées à enlever. Pour l'instant, on peut garder toutes les sections. Il y a juste la section d'exercices que j'aimerais voir scindée en deux.

(vectorisées) à l’aide d’instructions SIMD. (Voir la figure ci-dessous pour un
exemple.)

.. image:: ../../images/vectorization_en.svg
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il faudrait spécifier l'image en français de l'illustration de vectorisation. Mon checkout ne contient pas la version anglaise, seulement la version française.

dans les programmes multi-fils

Les programmes multi-fils peuvent aussi être identifiés par leur comportement
dans le gestionnaire de tâches. Dans ``top -u $USER``, une entré pour un
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il manque un e à entrée.

nouvelles ressources mais exécute plutôt un programme sur les ressources
déjà allouées.

Nous verrons :doc:`plus loin <../monitoring/interactive-sessions>` que
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce paragraphe m'a rendu confus (parce que je n'ai pas tout de suite compris le lien entre srun et tâches interactives - j'utilise salloc sans srun habituellement). Étant donné que le matériel de la future page n'est pas encore prêt, cela me met dans la position des étudiants qui ne savent pas encore de quoi on parle. Je suggère donc de déplacer l'information de ce paragraphe dans la page des sessions interactives. Autrement, c'est une information qui me semble trop abstraite dans la page actuelle, sans voir les exemples correspondants.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le retrait des deux paragraphes de la note était peut-être encore un bogue dans ma sélection de ligne de code dans GitHub. Je pensais uniquement que le second paragraphe serait enlevé. Désolé pour ça.

Ceci dit, maintenant que toute la note (deux paragraphes) est enlevée, je crois que ça vaudrait la peine d'enlever le point 2 dans le chapitre des commandes, afin d'enlever srun de là. C'est un détail qui risque de causer de la confusion pour rien.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fait ! En effet, le mieux était simplement d’enlever srun des rappels, ça nous évite d’avoir à faire la distinction.

#SBATCH --nodes=4
#SBATCH --ntasks-per-node=4

.. note::
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne savais pas ça et je ne m'attends pas à une telle question de l'audience. Je ne suis pas certain que cette note soit nécessaire.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J’ai souvent vu ce problème sur nos grappes de calcul. Je ne m’attends pas à des questions des participants, c’est plutôt un avertissement ! Je l’ai donc déplacé dans un cadre « warning ».

Copy link
Contributor

@plstonge plstonge Feb 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oups! Je vais devoir modifier ma façon de pointer des lignes de code, car en fait je faisais référence à la note, celle qui dit :

Un programme MPI peut être compilé pour utiliser des fils d’exécution plutôt que des processus multiples. Ce cas de figure est très rare et n’est pas traité dans cet atelier.

Le commentaire sur la forme des tâches était effectivement pertinent. C'est OK de le garder sous forme de warning.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compris ! Je l’ai enlevée. Thread-MPI est super-exotique. On l’utilise fréquemment avec GROMACS mais c’est peut-être le seul programme commun en production qui le fait, alors je suis biaisé.

que des processus multiples. Ce cas de figure est très rare et n’est pas
traité dans cet atelier.

Exercice
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Est-ce que l'exercice devrait être scindé en deux pour tester d'abord le mode multi-fil? Je trouve qu'il y a beaucoup d'information avant de passer à la pratique. Donc en coupant l'exercice en deux, la matière sur le mode multi-fil serait plus fraîche en tête au moment de pratiquer avec le code OpenMP.

#. Allez dans le répertoire de l’exercice avec ``cd
~/cq-formation-cip201-main/lab/multi-threaded-pi``.
#. Compilez le programme ``pi`` avec la commande ``make``.
#. Démarrez une tâche interactive avec ``salloc [...] --time=00:10:00``.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Certes, c'est effectivement comme ça que j'inspecterais mes tâches parallèles. Par contre, je me demande ce qu'il y aura de nouveau dans la page des sessions interactives.

Autrement, devrions-nous leur montrer la méthode avec srun et utiliser des scripts de tâches pour lancer le programme?
https://docs.alliancecan.ca/wiki/Running_jobs/fr#Surveillance_d'une_t%C3%A2che_en_cours

L'avantage d'éviter salloc, c'est qu'on évite le problème de devoir faire exit, lorsque nécessaire.

#SBATCH --time=4:00:00
#SBATCH --account=def-sponsor

export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK:-1}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne connaissais pas cette syntaxe Bash. Il serait bien d'avoir le commentaire # 1 si non défini au bout de la ligne.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fait, mais hors du script pour éviter d’avoir à traduire les exemples de code.

Autres types de parallélisme
----------------------------

Le parallélisme de données consiste à répéter une tâche sérielle ou parallèle de
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour éviter les mots "répéter ... de multiples fois" qui sonnent comme un processus itératif dans ma tête, je reformulerais par :

... consiste à exécuter en simultané la même tâche sérielle ou parallèle, mais avec ...

@ofisette
Copy link
Collaborator Author

J’aurais du préciser que je ne compte pas enseigner le matériel après l’exercice. Il est là pour que les participants le révisent par eux-même et pour répondre à d’éventuelles questions. Tout ce qui est parallélisme hybride et autres types de parallélisation sera donc brièvement mentionné pendant la formation avec comme recommandation d’y jeter un œil par soi-même.

Séparer l’exercice est une bonne idée !

Utiliser srun dans salloc est nécessaire pour lancer un programme MPI (ou bien on utilise mpirun mais ce n’est pas recommandé sur nos grappes). Je suis d’accord que ce n’est pas idéal, j’aurais préféré tester ces programmes directement sur le nœud de connexion et introduire salloc plus loin. Mais avec MC, le nœud de connexion serait surchargé, comme tu le disais. L’alternative est de soumettre une tâche et de se connecter au nœud avec ssh, mais cet automne c’était pénible sur MC. Sur les « vraies » grappes, se connecter prend quelques secondes, au pire une minute mais, sur MC, ça prenait systématiquement plus d’une minute, et la tâche finissait souvent avant que la connexion soit établie ! Je ne vois pas d’autre alternative.

Je vais appliquer les corrections ce PM.

@ofisette
Copy link
Collaborator Author

Tout est fait, on peut passer à une deuxième ronde de révision.

@plstonge
Copy link
Contributor

Parfait! J'ai vu les deux derniers commits. Je fusionne le tout dans main.

@plstonge plstonge merged commit b62c1f2 into main Feb 24, 2025
@plstonge plstonge deleted the tâches-parallèles branch February 24, 2025 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants