diff --git a/0-a_propos.html b/0-a_propos.html index 4c40c92..ef7d0a8 100644 --- a/0-a_propos.html +++ b/0-a_propos.html @@ -182,6 +182,7 @@ diff --git a/1-introduction.html b/1-introduction.html index 58ff044..1209292 100644 --- a/1-introduction.html +++ b/1-introduction.html @@ -181,6 +181,7 @@ diff --git a/2-mpi.html b/2-mpi.html index f0ffef9..69ffdf1 100644 --- a/2-mpi.html +++ b/2-mpi.html @@ -62,7 +62,7 @@ - + @@ -181,6 +181,7 @@ @@ -771,11 +772,11 @@

Types de communications

suivant

-

Références

+

Communications point-à-point

diff --git a/3-point-a-point.html b/3-point-a-point.html index ae7ff00..f0deb81 100644 --- a/3-point-a-point.html +++ b/3-point-a-point.html @@ -62,6 +62,8 @@ + + @@ -123,8 +125,6 @@ - -
@@ -178,9 +178,10 @@ -
@@ -418,12 +423,54 @@

MPI_Recv()

En Python :

-
objet = comm.recv(source=source, tag=etiquette)
+
objet = comm.recv(source=source, tag=etiquette, status=etat)
 
    -
  • objet : une variable ou une partie d’un objet modifiable

  • +
  • objet : une variable ou une partie d’un objet modifiable, +pour recevoir l’objet désérialisé

  • +
  • source : MPI.ANY_SOURCE (valeur par défaut) ou un rang précis

  • +
  • etiquette : MPI.ANY_TAG (valeur par défaut) ou un nombre précis

  • +
  • etat : None (valeur par défaut) ou objet de type MPI.Status

    +
      +
    • .count : nombre d’octets reçus

    • +
    • .source : rang de la source des données

    • +
    • .tag : étiquette du transfert

    +
  • +
+
+

Exemple - MPI_Send et MPI_Recv#

+

Chaque processus a ses propres variables a et b. +Le processus 2 envoie la valeur de son a vers +le processus 0 qui reçoit cette valeur via son b.

+

Figure - Communication point à point

+

En C :

+
if (proc == 2) {
+    MPI_Send(&a, 1, MPI_INTEGER, 0, 746, MPI_COMM_WORLD);
+}
+else if (proc == 0) {
+    MPI_Recv(&b, 1, MPI_INTEGER, 2, 746, MPI_COMM_WORLD, &etat);
+}
+
+
+

En Python :

+
if proc == 2:
+    MPI.COMM_WORLD.send(a, dest=0, tag=746)
+elif proc == 0:
+    b = MPI.COMM_WORLD.recv(source=2, tag=746)
+
+
+
+
+

Exercice #2 - Envoi d’une matrice#

+

Votre objectif : envoyer une matrice 4x4 du processus 0 au processus 1 :

+
    +
  1. Dans le dossier exercices, éditez le fichier send_matrix.c +(ou .py) pour programmer le transfert de la matrice

  2. +
  3. Compilez le code et lancez-le avec deux (2) processus

  4. +
+
@@ -457,6 +504,24 @@

MPI_Recv() @@ -474,7 +539,11 @@

MPI_Recv()

diff --git a/99-references.html b/99-references.html index a60fd8c..0f1f969 100644 --- a/99-references.html +++ b/99-references.html @@ -62,7 +62,7 @@ - + @@ -180,6 +180,7 @@ @@ -458,12 +459,12 @@

Références

précédent

-

Premiers pas avec MPI

+

Communications point-à-point

diff --git a/_images/mpi_point2point.svg b/_images/mpi_point2point.svg new file mode 100644 index 0000000..2922e4d --- /dev/null +++ b/_images/mpi_point2point.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + b + + + + + Processus 0 (dest.) + Processus 1 + Processus 2 (source) + Processus 3 + + + + + 5 + 8 + 3 + 12 + + + + + 3 + ? + ? + ? + + + diff --git a/_sources/3-point-a-point.ipynb b/_sources/3-point-a-point.ipynb index 3a5ee14..65510a6 100644 --- a/_sources/3-point-a-point.ipynb +++ b/_sources/3-point-a-point.ipynb @@ -86,16 +86,71 @@ "En Python :\n", "\n", "```Python\n", - "objet = comm.recv(source=source, tag=etiquette)\n", + "objet = comm.recv(source=source, tag=etiquette, status=etat)\n", "```\n", "\n", - "* `objet` : une variable ou une partie d'un objet modifiable" + "* `objet` : une variable ou une partie d'un objet modifiable,\n", + " pour recevoir l'objet désérialisé\n", + "* `source` : `MPI.ANY_SOURCE` (valeur par défaut) ou un rang précis\n", + "* `etiquette` : `MPI.ANY_TAG` (valeur par défaut) ou un nombre précis\n", + "* `etat` : `None` (valeur par défaut) ou objet de type `MPI.Status`\n", + " * `.count` : nombre d’octets reçus\n", + " * `.source` : rang de la source des données\n", + " * `.tag` : étiquette du transfert" + ] + }, + { + "cell_type": "markdown", + "id": "4a1c07b9-27f7-4f96-a73c-36d5bef57e88", + "metadata": {}, + "source": [ + "### Exemple - `MPI_Send` et `MPI_Recv`\n", + "\n", + "Chaque processus a ses propres variables `a` et `b`.\n", + "Le processus 2 envoie la valeur de son `a` vers\n", + "le processus 0 qui reçoit cette valeur via son `b`.\n", + "\n", + "![Figure - Communication point à point](images/mpi_point2point.svg)\n", + "\n", + "En C :\n", + "\n", + "```C\n", + "if (proc == 2) {\n", + " MPI_Send(&a, 1, MPI_INTEGER, 0, 746, MPI_COMM_WORLD);\n", + "}\n", + "else if (proc == 0) {\n", + " MPI_Recv(&b, 1, MPI_INTEGER, 2, 746, MPI_COMM_WORLD, &etat);\n", + "}\n", + "```\n", + "\n", + "En Python :\n", + "\n", + "```Python\n", + "if proc == 2:\n", + " MPI.COMM_WORLD.send(a, dest=0, tag=746)\n", + "elif proc == 0:\n", + " b = MPI.COMM_WORLD.recv(source=2, tag=746)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "be4f63de-b409-4d16-99c2-b2a9f6c08426", + "metadata": {}, + "source": [ + "### Exercice #2 - Envoi d'une matrice\n", + "\n", + "Votre objectif : envoyer une matrice 4x4 du processus 0 au processus 1 :\n", + "\n", + "1. Dans le dossier `exercices`, éditez le fichier `send_matrix.c`\n", + " (ou `.py`) pour programmer le transfert de la matrice\n", + "1. Compilez le code et lancez-le avec deux (2) processus" ] }, { "cell_type": "code", "execution_count": null, - "id": "7168b32e-6a92-489f-aa8d-a45503944a3f", + "id": "4cef0a67-9494-4bd7-98a4-a63d082efc19", "metadata": {}, "outputs": [], "source": [] diff --git a/genindex.html b/genindex.html index 1565403..f53b3ec 100644 --- a/genindex.html +++ b/genindex.html @@ -180,6 +180,7 @@ diff --git a/search.html b/search.html index f35d653..c09fe8c 100644 --- a/search.html +++ b/search.html @@ -182,6 +182,7 @@ diff --git a/searchindex.js b/searchindex.js index f203749..0413061 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"Communicateurs": [[2, "communicateurs"]], "Communications point-\u00e0-point": [[3, "communications-point-a-point"]], "Compilation d\u2019un programme MPI": [[2, "compilation-d-un-programme-mpi"]], "Des questions \u00e0 se poser": [[1, "des-questions-a-se-poser"]], "Environnement requis pour utiliser MPI": [[2, "environnement-requis-pour-utiliser-mpi"]], "Exemple d\u2019ex\u00e9cution": [[2, "exemple-dexecution"]], "Exemple en C - demos/bonjour.c": [[2, "exemple-en-c-demos-bonjour-c"]], "Exemple en Python - demos/bonjour.py": [[2, "exemple-en-python-demos-bonjour-py"]], "Exercice #1 - Premier lancement": [[2, "exercice-1-premier-lancement"]], "Introduction": [[1, "introduction"]], "Lancement d\u2019un programme MPI": [[2, "lancement-d-un-programme-mpi"]], "Les communications via MPI": [[2, "les-communications-via-mpi"]], "MPI_Recv() (bloquant)": [[3, "mpi-recv-bloquant"]], "MPI_Send() (bloquant)": [[3, "mpi-send-bloquant"]], "Machine \u00e0 m\u00e9moire distribu\u00e9e": [[1, "machine-a-memoire-distribuee"]], "Nombre de processus et un rang unique": [[2, "nombre-de-processus-et-un-rang-unique"]], "Parall\u00e9lisation explicite": [[2, "parallelisation-explicite"]], "Premiers pas avec MPI": [[2, "premiers-pas-avec-mpi"]], "Programmation parall\u00e8le avec MPI": [[0, "programmation-parallele-avec-mpi"]], "Programme MPI de base": [[2, "programme-mpi-de-base"]], "Qu\u2019est-ce que MPI?": [[2, "qu-est-ce-que-mpi"]], "R\u00e9f\u00e9rences": [[0, "references"], [4, "references"]], "Structure d\u2019un code MPI": [[2, "structure-d-un-code-mpi"]], "Table des mati\u00e8res": [[0, "table-des-matieres"]], "Types de communications": [[2, "types-de-communications"]], "Types de donn\u00e9es": [[2, "types-de-donnees"]], "\u00c0 propos": [[0, "a-propos"]]}, "docnames": ["0-a_propos", "1-introduction", "2-mpi", "3-point-a-point", "99-references"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["0-a_propos.ipynb", "1-introduction.ipynb", "2-mpi.ipynb", "3-point-a-point.ipynb", "99-references.ipynb"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"0": 2, "10": 2, "11": 2, "120": 2, "1994": 2, "2023": 2, "3": 2, "4": 2, "5": 2, "Avec": 2, "C": [1, 3], "Ce": 2, "Ces": 2, "Cet": 0, "Elles": 3, "En": [2, 3], "Ici": 2, "Il": [1, 2], "L": 0, "La": 2, "Le": 2, "Les": [0, 3, 4], "On": 2, "Par": [1, 2], "Pour": 2, "Qu": 0, "Un": 2, "Une": 2, "__main__": 2, "__name__": 2, "a": [1, 2], "abord": 2, "acces": 2, "acc\u00e9ler": 1, "action": 2, "adress": 3, "ad\u00e9quat": 2, "agir": 2, "aid": 2, "algorithm": 4, "allianc": 4, "allon": [1, 2], "amdahl": 4, "analys": 4, "apparent": 1, "appel": [2, 3], "appellent": 2, "apprendr": 0, "archiv": 4, "archivag": 4, "argc": 2, "argument": 2, "argv": 2, "asdf": 0, "ateli": [0, 4], "authentif": 4, "automat": [2, 4], "autr": 2, "avant": 2, "besoin": 2, "bibliothequ": [0, 2], "bin": 2, "b\u00e9lug": 4, "calcul": [0, 1, 4], "canad": 4, "carpentry": 4, "cas": 2, "cat\u00e9gor": 1, "cedar": 4, "chacun": [1, 2], "chapitr": [1, 2], "chaqu": [1, 2], "char": 2, "charg": 2, "ci": 2, "cod": 0, "collect": [0, 2], "comm": [2, 3], "comm_world": 2, "command": [2, 4], "comment": 1, "commun": [0, 1], "communaut": 4, "communiqu": 2, "communiquent": 2, "complex": 4, "compress": 4, "compt": 3, "comput": 2, "concept": 2, "conclus": 0, "configur": 2, "consistent": 1, "cons\u00e9quent": 1, "conten": 1, "con\u00e7u": 2, "coordon": 1, "count": 3, "cour": 1, "cpu": 4, "cr\u00e9": 2, "dan": [1, 2], "dar": 4, "dat": [2, 4], "def": 2, "depuis": 2, "dessus": 2, "dest": 3, "deux": [1, 2, 3], "devient": 1, "diff\u00e9rent": [1, 2, 3], "dir": [2, 3], "disk": 4, "diskusage_explor": 4, "diskusage_report": 4, "disponibl": [2, 4], "distribu": 0, "divis": 1, "doit": 2, "doivent": [1, 2], "don": [1, 3, 4], "donc": [2, 3], "dont": 2, "doubl": 2, "d\u00e9faut": 2, "d\u00e9pend": 2, "d\u00e9sign": 2, "d\u00e9sir": 2, "encor": 2, "englob": 2, "ensembl": 2, "enti": [2, 3], "entre": [0, 1, 2], "env": 2, "environ": 0, "envoi": [1, 2, 3], "erreur": 2, "espac": 4, "etat": 3, "etc": 3, "etiquet": 3, "exceeded": 4, "exist": 2, "explicit": 0, "ex\u00e9cut": [1, 2], "f": 2, "fair": 2, "fait": [1, 2], "fa\u00e7on": 2, "fichi": [2, 4], "fin": 2, "finaliz": 2, "float": 2, "flott": 2, "foir": 4, "fonction": [2, 3], "format": [0, 4], "fortran": 2, "from": 2, "gestion": [2, 4], "get_rank": 2, "get_siz": 2, "github": 0, "gnu": 4, "gpu": 4, "graham": 4, "grand": [1, 2, 4], "grapp": 4, "group": 2, "g\u00e9ner": 2, "g\u00e9n\u00e9ral": 2, "h": 2, "hdf5": 4, "hierarchical": 4, "hor": 2, "hostnam": 2, "ident": [1, 2], "identifi": [2, 3], "ierr": 2, "if": 2, "implicit": 2, "impliqu": 3, "import": [2, 3], "includ": 2, "inclus": 2, "indiqu": 2, "inform": 3, "init": 2, "initial": 2, "inser": 2, "instanc": 1, "int": [2, 3], "interfac": 2, "interm\u00e9diair": 0, "introduct": 0, "jav": 2, "langag": 2, "lign": 4, "limit": 1, "list": 2, "load": 2, "local": [3, 4], "localis": 2, "loi": 4, "long": [2, 4], "lor": 2, "lorsqu": 2, "lustr": 4, "machin": 0, "main": 2, "major": 2, "manqu": 2, "mat\u00e9riel": 0, "maximal": 3, "messag": 2, "mist": 4, "modern": 1, "modifi": 3, "modul": 2, "moyen": [1, 2, 4], "mpi": [1, 3], "mpi4py": 2, "mpi_abort": 2, "mpi_any_sourc": 3, "mpi_any_tag": 3, "mpi_char": 2, "mpi_comm": [2, 3], "mpi_comm_rank": 2, "mpi_comm_siz": 2, "mpi_comm_world": 2, "mpi_datatyp": 3, "mpi_doubl": [2, 3], "mpi_finaliz": 2, "mpi_float": 2, "mpi_in": 2, "mpi_int": [2, 3], "mpi_long": 2, "mpi_recv": 0, "mpi_send": 0, "mpi_short": 2, "mpi_sourc": 3, "mpi_status": 3, "mpi_tag": 3, "mpicc": 2, "mpicxx": 2, "mpiexec": 2, "mpif90": 2, "mpirun": 2, "multifacteur": 4, "multipl": 2, "m\u00e9moir": [0, 3], "m\u00e9thod": 1, "m\u00eam": [1, 2], "narval": 4, "national": 4, "nearlin": 4, "niagar": 4, "niveau": 0, "node1": 2, "node2": 2, "nombr": [1, 3, 4], "nomm": 2, "non": 3, "norm": 2, "not": [0, 2, 3], "notebook": 0, "novembr": 2, "np": 2, "numer": 4, "n\u00e9cessair": [1, 2], "n\u0153ud": 4, "o": 2, "object": 0, "objet": [2, 3], "octet": 2, "officiel": 2, "open": 2, "openmp": 2, "optiqu": 2, "or": 1, "ordonnanceur": 2, "p": 2, "pair": 3, "parallel": [1, 2, 4], "parall\u00e9lis": [0, 1], "part": [2, 3], "partag": 4, "particip": 3, "pass": 2, "passing": 2, "perl": 2, "permet": 2, "peut": [2, 3], "peuvent": [2, 3], "pickl": 3, "plac": 2, "plus": 1, "plusieur": 1, "plut\u00f4t": 2, "point": [0, 2], "polit": 4, "portabl": 1, "possibil": 1, "possibl": 2, "pourquoi": 1, "pouv": 2, "power9": 4, "premi": [0, 3], "prennent": 2, "principal": [0, 2], "print": 2, "printf": 2, "problem": [1, 2], "processeur": [1, 2], "processus": [0, 1, 3], "prochain": 4, "program": 2, "programm": 1, "programmeur": 2, "project": 4, "pr\u00e9cis": 2, "pr\u00e9matur": 2, "pr\u00e9sent": 0, "publi": 0, "purg": 4, "python": 3, "question": 4, "quot": 4, "qu\u00e9bec": 4, "r": 2, "rang": 3, "rank": 2, "recept": 3, "recev": 3, "recevoir": [1, 3], "recherch": 4, "reconstitu": 2, "recv": 3, "requ": 0, "respect": 2, "respons": 2, "ressourc": 4, "rest": 2, "return": 2, "re\u00e7us": 3, "rsync": 4, "r\u00e9cept": [2, 3], "r\u00e9ciproqu": 3, "r\u00e9pertoir": 2, "r\u00e9soudr": 2, "savoir": 2, "scalair": 2, "scratch": 4, "script": 2, "selon": 2, "send": 3, "serveur": 1, "seul": 3, "short": 2, "simpl": 2, "singl": 2, "siz": 2, "slurm": 2, "slurm_tmpd": 4, "softwar": 4, "sourc": [2, 3], "souvent": 2, "spid": 2, "spmd": 2, "srun": 2, "stdio": 2, "stockag": 4, "structur": 0, "suiv": 1, "superordin": 1, "system": 4, "s\u00e9rialis": [2, 3], "tag": 3, "tap": 4, "tar": 4, "tel": 3, "term": 4, "termin": 2, "total": [1, 2], "toujour": 3, "tous": 2, "tout": 2, "trait": 2, "transfer": [1, 2], "transfert": [3, 4], "transmet": 3, "transmiss": 2, "travail": 1, "travaill": [2, 4], "travaillent": 1, "tri": 4, "trouvent": 2, "tutoriel": 4, "typ": [3, 4], "typiqu": 2, "t\u00e2ch": 1, "usr": 2, "utilis": 0, "valeur": 2, "valid": 2, "variabl": [1, 3], "vecteur": 2, "version": 2, "vi": [0, 3], "viennent": 3, "virgul": 2, "viv": 1, "void": 3, "voir": [0, 1, 2], "webinair": 4, "wik": 4, "\u00c0": 2, "\u00e7a": 3, "\u00e9chang": [2, 3], "\u00e9l\u00e9ment": [2, 3], "\u00e9tabl": 1, "\u00e9tat": 4, "\u00e9tiquet": 3, "\u00eatre": 3}, "titles": ["Programmation parall\u00e8le avec MPI", "Introduction", "Premiers pas avec MPI", "Communications point-\u00e0-point", "R\u00e9f\u00e9rences"], "titleterms": {"1": 2, "C": 2, "Des": 1, "Les": 2, "Qu": 2, "bas": 2, "bloqu": 3, "bonjour": 2, "cod": 2, "commun": [2, 3], "compil": 2, "demos": 2, "distribu": 1, "don": 2, "environ": 2, "exempl": 2, "exercic": 2, "explicit": 2, "ex\u00e9cu": 2, "introduct": 1, "lanc": 2, "machin": 1, "mati": 0, "mpi": [0, 2], "mpi_recv": 3, "mpi_send": 3, "m\u00e9moir": 1, "nombr": 2, "parallel": 0, "parall\u00e9lis": 2, "point": 3, "pos": 1, "premi": 2, "processus": 2, "programm": [0, 2], "propos": 0, "py": 2, "python": 2, "question": 1, "rang": 2, "requ": 2, "r\u00e9f\u00e9rent": [0, 4], "structur": 2, "tabl": 0, "typ": 2, "uniqu": 2, "utilis": 2, "vi": 2, "\u00c0": 0}}) \ No newline at end of file +Search.setIndex({"alltitles": {"Communicateurs": [[2, "communicateurs"]], "Communications point-\u00e0-point": [[3, "communications-point-a-point"]], "Compilation d\u2019un programme MPI": [[2, "compilation-d-un-programme-mpi"]], "Des questions \u00e0 se poser": [[1, "des-questions-a-se-poser"]], "Environnement requis pour utiliser MPI": [[2, "environnement-requis-pour-utiliser-mpi"]], "Exemple - MPI_Send et MPI_Recv": [[3, "exemple-mpi-send-et-mpi-recv"]], "Exemple d\u2019ex\u00e9cution": [[2, "exemple-dexecution"]], "Exemple en C - demos/bonjour.c": [[2, "exemple-en-c-demos-bonjour-c"]], "Exemple en Python - demos/bonjour.py": [[2, "exemple-en-python-demos-bonjour-py"]], "Exercice #1 - Premier lancement": [[2, "exercice-1-premier-lancement"]], "Exercice #2 - Envoi d\u2019une matrice": [[3, "exercice-2-envoi-d-une-matrice"]], "Introduction": [[1, "introduction"]], "Lancement d\u2019un programme MPI": [[2, "lancement-d-un-programme-mpi"]], "Les communications via MPI": [[2, "les-communications-via-mpi"]], "MPI_Recv() (bloquant)": [[3, "mpi-recv-bloquant"]], "MPI_Send() (bloquant)": [[3, "mpi-send-bloquant"]], "Machine \u00e0 m\u00e9moire distribu\u00e9e": [[1, "machine-a-memoire-distribuee"]], "Nombre de processus et un rang unique": [[2, "nombre-de-processus-et-un-rang-unique"]], "Parall\u00e9lisation explicite": [[2, "parallelisation-explicite"]], "Premiers pas avec MPI": [[2, "premiers-pas-avec-mpi"]], "Programmation parall\u00e8le avec MPI": [[0, "programmation-parallele-avec-mpi"]], "Programme MPI de base": [[2, "programme-mpi-de-base"]], "Qu\u2019est-ce que MPI?": [[2, "qu-est-ce-que-mpi"]], "R\u00e9f\u00e9rences": [[0, "references"], [4, "references"]], "Structure d\u2019un code MPI": [[2, "structure-d-un-code-mpi"]], "Table des mati\u00e8res": [[0, "table-des-matieres"]], "Types de communications": [[2, "types-de-communications"]], "Types de donn\u00e9es": [[2, "types-de-donnees"]], "\u00c0 propos": [[0, "a-propos"]]}, "docnames": ["0-a_propos", "1-introduction", "2-mpi", "3-point-a-point", "99-references"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["0-a_propos.ipynb", "1-introduction.ipynb", "2-mpi.ipynb", "3-point-a-point.ipynb", "99-references.ipynb"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"0": [2, 3], "1": 3, "10": 2, "11": 2, "120": 2, "1994": 2, "2023": 2, "3": 2, "4": 2, "4x4": 3, "5": 2, "746": 3, "Avec": 2, "C": [1, 3], "Ce": 2, "Ces": 2, "Cet": 0, "Elles": 3, "En": [2, 3], "Ici": 2, "Il": [1, 2], "L": 0, "La": 2, "Le": [2, 3], "Les": [0, 3, 4], "On": 2, "Par": [1, 2], "Pour": 2, "Qu": 0, "Un": 2, "Une": 2, "__main__": 2, "__name__": 2, "a": [1, 2, 3], "abord": 2, "acces": 2, "acc\u00e9ler": 1, "action": 2, "adress": 3, "ad\u00e9quat": 2, "agir": 2, "aid": 2, "algorithm": 4, "allianc": 4, "allon": [1, 2], "amdahl": 4, "analys": 4, "any_sourc": 3, "any_tag": 3, "apparent": 1, "appel": [2, 3], "appellent": 2, "apprendr": 0, "archiv": 4, "archivag": 4, "argc": 2, "argument": 2, "argv": 2, "asdf": 0, "ateli": [0, 4], "authentif": 4, "automat": [2, 4], "autr": 2, "avant": 2, "b": 3, "besoin": 2, "bibliothequ": [0, 2], "bin": 2, "b\u00e9lug": 4, "calcul": [0, 1, 4], "canad": 4, "carpentry": 4, "cas": 2, "cat\u00e9gor": 1, "cedar": 4, "chacun": [1, 2], "chapitr": [1, 2], "chaqu": [1, 2, 3], "char": 2, "charg": 2, "ci": 2, "cod": [0, 3], "collect": [0, 2], "comm": [2, 3], "comm_world": [2, 3], "command": [2, 4], "comment": 1, "commun": [0, 1], "communaut": 4, "communiqu": 2, "communiquent": 2, "compil": 3, "complex": 4, "compress": 4, "compt": 3, "comput": 2, "concept": 2, "conclus": 0, "configur": 2, "consistent": 1, "cons\u00e9quent": 1, "conten": 1, "con\u00e7u": 2, "coordon": 1, "count": 3, "cour": 1, "cpu": 4, "cr\u00e9": 2, "dan": [1, 2, 3], "dar": 4, "dat": [2, 4], "def": 2, "depuis": 2, "dessus": 2, "dest": 3, "deux": [1, 2, 3], "devient": 1, "diff\u00e9rent": [1, 2, 3], "dir": [2, 3], "disk": 4, "diskusage_explor": 4, "diskusage_report": 4, "disponibl": [2, 4], "distribu": 0, "divis": 1, "doit": 2, "doivent": [1, 2], "don": [1, 3, 4], "donc": [2, 3], "dont": 2, "dossi": 3, "doubl": 2, "d\u00e9faut": [2, 3], "d\u00e9pend": 2, "d\u00e9sign": 2, "d\u00e9sir": 2, "d\u00e9s\u00e9rialis": 3, "elif": 3, "else": 3, "encor": 2, "englob": 2, "ensembl": 2, "enti": [2, 3], "entre": [0, 1, 2], "env": 2, "environ": 0, "envoi": [1, 2], "erreur": 2, "espac": 4, "etat": 3, "etc": 3, "etiquet": 3, "exceeded": 4, "exist": 2, "explicit": 0, "ex\u00e9cut": [1, 2], "f": 2, "fair": 2, "fait": [1, 2], "fa\u00e7on": 2, "fichi": [2, 3, 4], "fin": 2, "finaliz": 2, "float": 2, "flott": 2, "foir": 4, "fonction": [2, 3], "format": [0, 4], "fortran": 2, "from": 2, "gestion": [2, 4], "get_rank": 2, "get_siz": 2, "github": 0, "gnu": 4, "gpu": 4, "graham": 4, "grand": [1, 2, 4], "grapp": 4, "group": 2, "g\u00e9ner": 2, "g\u00e9n\u00e9ral": 2, "h": 2, "hdf5": 4, "hierarchical": 4, "hor": 2, "hostnam": 2, "ident": [1, 2], "identifi": [2, 3], "ierr": 2, "if": [2, 3], "implicit": 2, "impliqu": 3, "import": [2, 3], "includ": 2, "inclus": 2, "indiqu": 2, "inform": 3, "init": 2, "initial": 2, "inser": 2, "instanc": 1, "int": [2, 3], "interfac": 2, "interm\u00e9diair": 0, "introduct": 0, "jav": 2, "lanc": 3, "langag": 2, "lign": 4, "limit": 1, "list": 2, "load": 2, "local": [3, 4], "localis": 2, "loi": 4, "long": [2, 4], "lor": 2, "lorsqu": 2, "lustr": 4, "machin": 0, "main": 2, "major": 2, "manqu": 2, "mat\u00e9riel": 0, "maximal": 3, "messag": 2, "mist": 4, "modern": 1, "modifi": 3, "modul": 2, "moyen": [1, 2, 4], "mpi": [1, 3], "mpi4py": 2, "mpi_abort": 2, "mpi_any_sourc": 3, "mpi_any_tag": 3, "mpi_char": 2, "mpi_comm": [2, 3], "mpi_comm_rank": 2, "mpi_comm_siz": 2, "mpi_comm_world": [2, 3], "mpi_datatyp": 3, "mpi_doubl": [2, 3], "mpi_finaliz": 2, "mpi_float": 2, "mpi_in": 2, "mpi_int": [2, 3], "mpi_integ": 3, "mpi_long": 2, "mpi_recv": 0, "mpi_send": 0, "mpi_short": 2, "mpi_sourc": 3, "mpi_status": 3, "mpi_tag": 3, "mpicc": 2, "mpicxx": 2, "mpiexec": 2, "mpif90": 2, "mpirun": 2, "multifacteur": 4, "multipl": 2, "m\u00e9moir": [0, 3], "m\u00e9thod": 1, "m\u00eam": [1, 2], "narval": 4, "national": 4, "nearlin": 4, "niagar": 4, "niveau": 0, "node1": 2, "node2": 2, "nombr": [1, 3, 4], "nomm": 2, "non": 3, "norm": 2, "not": [0, 2, 3], "notebook": 0, "novembr": 2, "np": 2, "numer": 4, "n\u00e9cessair": [1, 2], "n\u0153ud": 4, "o": 2, "object": [0, 3], "objet": [2, 3], "octet": [2, 3], "officiel": 2, "open": 2, "openmp": 2, "optiqu": 2, "or": 1, "ordonnanceur": 2, "p": 2, "pair": 3, "parallel": [1, 2, 4], "parall\u00e9lis": [0, 1], "part": [2, 3], "partag": 4, "particip": 3, "pass": 2, "passing": 2, "perl": 2, "permet": 2, "peut": [2, 3], "peuvent": [2, 3], "pickl": 3, "plac": 2, "plus": 1, "plusieur": 1, "plut\u00f4t": 2, "point": [0, 2], "polit": 4, "portabl": 1, "possibil": 1, "possibl": 2, "pourquoi": 1, "pouv": 2, "power9": 4, "prec": 3, "premi": [0, 3], "prennent": 2, "principal": [0, 2], "print": 2, "printf": 2, "problem": [1, 2], "proc": 3, "processeur": [1, 2], "processus": [0, 1, 3], "prochain": 4, "program": 2, "programm": [1, 3], "programmeur": 2, "project": 4, "propr": 3, "pr\u00e9cis": 2, "pr\u00e9matur": 2, "pr\u00e9sent": 0, "publi": 0, "purg": 4, "py": 3, "python": 3, "question": 4, "quot": 4, "qu\u00e9bec": 4, "r": 2, "rang": 3, "rank": 2, "recept": 3, "recev": 3, "recevoir": [1, 3], "recherch": 4, "reconstitu": 2, "recv": 3, "requ": 0, "respect": 2, "respons": 2, "ressourc": 4, "rest": 2, "return": 2, "re\u00e7oit": 3, "re\u00e7us": 3, "rsync": 4, "r\u00e9cept": [2, 3], "r\u00e9ciproqu": 3, "r\u00e9pertoir": 2, "r\u00e9soudr": 2, "savoir": 2, "scalair": 2, "scratch": 4, "script": 2, "selon": 2, "send": 3, "send_matrix": 3, "serveur": 1, "seul": 3, "short": 2, "simpl": 2, "singl": 2, "siz": 2, "slurm": 2, "slurm_tmpd": 4, "softwar": 4, "sourc": [2, 3], "souvent": 2, "spid": 2, "spmd": 2, "srun": 2, "status": 3, "stdio": 2, "stockag": 4, "structur": 0, "suiv": 1, "superordin": 1, "system": 4, "s\u00e9rialis": [2, 3], "tag": 3, "tap": 4, "tar": 4, "tel": 3, "term": 4, "termin": 2, "total": [1, 2], "toujour": 3, "tous": 2, "tout": 2, "trait": 2, "transfer": [1, 2], "transfert": [3, 4], "transmet": 3, "transmiss": 2, "travail": 1, "travaill": [2, 4], "travaillent": 1, "tri": 4, "trouvent": 2, "tutoriel": 4, "typ": [3, 4], "typiqu": 2, "t\u00e2ch": 1, "usr": 2, "utilis": 0, "valeur": [2, 3], "valid": 2, "variabl": [1, 3], "vecteur": 2, "ver": 3, "version": 2, "vi": [0, 3], "viennent": 3, "virgul": 2, "viv": 1, "void": 3, "voir": [0, 1, 2], "votr": 3, "webinair": 4, "wik": 4, "\u00c0": 2, "\u00e7a": 3, "\u00e9chang": [2, 3], "\u00e9dit": 3, "\u00e9l\u00e9ment": [2, 3], "\u00e9tabl": 1, "\u00e9tat": 4, "\u00e9tiquet": 3, "\u00eatre": 3}, "titles": ["Programmation parall\u00e8le avec MPI", "Introduction", "Premiers pas avec MPI", "Communications point-\u00e0-point", "R\u00e9f\u00e9rences"], "titleterms": {"1": 2, "2": 3, "C": 2, "Des": 1, "Les": 2, "Qu": 2, "bas": 2, "bloqu": 3, "bonjour": 2, "cod": 2, "commun": [2, 3], "compil": 2, "demos": 2, "distribu": 1, "don": 2, "environ": 2, "envoi": 3, "exempl": [2, 3], "exercic": [2, 3], "explicit": 2, "ex\u00e9cu": 2, "introduct": 1, "lanc": 2, "machin": 1, "mati": 0, "matric": 3, "mpi": [0, 2], "mpi_recv": 3, "mpi_send": 3, "m\u00e9moir": 1, "nombr": 2, "parallel": 0, "parall\u00e9lis": 2, "point": 3, "pos": 1, "premi": 2, "processus": 2, "programm": [0, 2], "propos": 0, "py": 2, "python": 2, "question": 1, "rang": 2, "requ": 2, "r\u00e9f\u00e9rent": [0, 4], "structur": 2, "tabl": 0, "typ": 2, "uniqu": 2, "utilis": 2, "vi": 2, "\u00c0": 0}}) \ No newline at end of file