Skip to content

Commit

Permalink
Built site for gh-pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Quarto GHA Workflow Runner committed Sep 25, 2024
1 parent 7fc219f commit 620489c
Show file tree
Hide file tree
Showing 13 changed files with 19 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .nojekyll
Original file line number Diff line number Diff line change
@@ -1 +1 @@
666687f7
fffd8f63
8 changes: 4 additions & 4 deletions com_collectives.html
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a href="./index.html" class="navbar-brand navbar-brand-logo">
<img src="./logo.png" alt="" class="navbar-logo">
<img src="./images/logo.png" alt="" class="navbar-logo">
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
Expand Down Expand Up @@ -270,7 +270,7 @@ <h2 class="anchored" data-anchor-id="diffusion-générale-mpi.bcast">Diffusion g
<section id="diffusion-sélective-mpi.scatter" class="level2">
<h2 class="anchored" data-anchor-id="diffusion-sélective-mpi.scatter">Diffusion sélective <code>mpi.scatter</code></h2>
<p>La ième tranche est envoyée au ième processus.</p>
<p><img src="broadcastvsscatter.png" class="img-fluid"></p>
<p><img src="images/broadcastvsscatter.png" class="img-fluid"></p>
<div class="sourceCode" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(Rmpi)</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>id <span class="ot">&lt;-</span> <span class="fu">mpi.comm.rank</span>(<span class="at">comm=</span><span class="dv">0</span>)</span>
Expand All @@ -297,7 +297,7 @@ <h2 class="anchored" data-anchor-id="diffusion-sélective-mpi.scatter">Diffusion
</section>
<section id="collecte-mpi.gather" class="level2">
<h2 class="anchored" data-anchor-id="collecte-mpi.gather">Collecte <code>mpi.gather</code></h2>
<p><img src="gather.png" class="img-fluid"></p>
<p><img src="images/gather.png" class="img-fluid"></p>
<ol type="1">
<li>Envoi d’un message de chacun des processus du communicateur <code>comm</code></li>
<li>Collecte de chacun de ces messages, par le processus <code>root</code></li>
Expand All @@ -307,7 +307,7 @@ <h2 class="anchored" data-anchor-id="collecte-mpi.gather">Collecte <code>mpi.gat
<section id="collecte-générale-mpi.allgather" class="level2">
<h2 class="anchored" data-anchor-id="collecte-générale-mpi.allgather">Collecte générale <code>mpi.allgather</code></h2>
<p>Correspond à un <code>mpi.gather</code> suivi d’un <code>mpi.bcast</code></p>
<p><img src="allgather.png" class="img-fluid"></p>
<p><img src="images/allgather.png" class="img-fluid"></p>
<div class="callout callout-style-default callout-warning callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
Expand Down
4 changes: 2 additions & 2 deletions com_point_a_point.html
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a href="./index.html" class="navbar-brand navbar-brand-logo">
<img src="./logo.png" alt="" class="navbar-logo">
<img src="./images/logo.png" alt="" class="navbar-logo">
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
Expand Down Expand Up @@ -222,7 +222,7 @@ <h1><code>mpi.send</code> et <code>mpi.recv</code></h1>
</div>
</div>
<div class="callout-body-container callout-body">
<p>Les fonctions <code>mpi.send.Robj</code> et <code>mpi.recv.Robj</code> permettent d’envoyer et recevoir des objets R à condition qu’ils soient sérialisables comme les <code>data.frame</code> par exemple. Il existe des versions non bloquantes <code>mpi.isend</code> et <code>mpi.irecv</code> ainsi qu’une version contractée <code>mpi.sendrecv</code> bidirectionnel. Ces concepts ne seront pas abordés ici.</p>
<p>Les fonctions <code>mpi.send.Robj</code> et <code>mpi.recv.Robj</code> permettent d’envoyer et recevoir des objets R à condition qu’ils soient sérialisables comme les <code>data.frame</code> par exemple. Il existe des versions non bloquantes <code>mpi.isend</code> et <code>mpi.irecv</code> ainsi qu’une version contractée <code>mpi.sendrecv</code> bidirectionnelle. Ces concepts ne seront pas abordés ici.</p>
</div>
</div>
<section id="exemple" class="level2">
Expand Down
2 changes: 1 addition & 1 deletion exercice.html
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a href="./index.html" class="navbar-brand navbar-brand-logo">
<img src="./logo.png" alt="" class="navbar-logo">
<img src="./images/logo.png" alt="" class="navbar-logo">
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
Expand Down
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
10 changes: 5 additions & 5 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
<div class="navbar-container container-fluid">
<div class="navbar-brand-container mx-auto">
<a href="./index.html" class="navbar-brand navbar-brand-logo">
<img src="./logo.png" alt="" class="navbar-logo">
<img src="./images/logo.png" alt="" class="navbar-logo">
</a>
</div>
<div id="quarto-search" class="" title="Recherche"></div>
Expand Down Expand Up @@ -314,13 +314,13 @@ <h2 class="anchored" data-anchor-id="exemple-c">Exemple C</h2>
<h2 class="anchored" data-anchor-id="compilation-et-exécution-dun-code-mpi-en-c">Compilation et exécution d’un code MPI en C</h2>
<p>Pour compiler un code MPI, il faut faire le lien avec la librairie MPI utilisée en utilisant par exemple <code>mpicc</code></p>
<div class="sourceCode" id="cb2"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="op">&gt;</span> mpicc <span class="ex">hello_mpi.c</span> <span class="at">-o</span> hello</span></code><button title="Copier vers le presse-papier" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout callout-style-default callout-tip callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Note
Astuce
</div>
</div>
<div class="callout-body-container callout-body">
Expand Down Expand Up @@ -354,7 +354,7 @@ <h2 class="anchored" data-anchor-id="exemple-python">Exemple Python</h2>
</section>
<section id="exemple-r-spmd-single-program-multiple-data" class="level2">
<h2 class="anchored" data-anchor-id="exemple-r-spmd-single-program-multiple-data">Exemple R SPMD (Single Program Multiple Data)</h2>
<p><img src="spmd.png" class="img-fluid"></p>
<p><img src="images/spmd.png" class="img-fluid"></p>
<div class="sourceCode" id="cb6"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(Rmpi)</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a>id <span class="ot">&lt;-</span> <span class="fu">mpi.comm.rank</span>(<span class="at">comm=</span><span class="dv">0</span>)</span>
Expand Down Expand Up @@ -446,7 +446,7 @@ <h2 class="anchored" data-anchor-id="exécution-sur-le-cluster-perseus">Exécuti
</section>
<section id="exemple-r-mpmd-multiple-program-multiple-data" class="level2">
<h2 class="anchored" data-anchor-id="exemple-r-mpmd-multiple-program-multiple-data">Exemple R MPMD (Multiple Program Multiple Data)</h2>
<p><img src="mpmd.png" class="img-fluid"></p>
<p><img src="images/mpmd.png" class="img-fluid"></p>
<div class="sourceCode" id="cb14"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(Rmpi)</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="fu">mpi.spawn.Rslaves</span>(<span class="at">nslaves =</span> <span class="dv">4</span>, <span class="at">needlog =</span> <span class="cn">FALSE</span>)</span>
Expand Down
4 changes: 2 additions & 2 deletions search.json
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@
"href": "index.html#compilation-et-exécution-dun-code-mpi-en-c",
"title": "Rmpi",
"section": "Compilation et exécution d’un code MPI en C",
"text": "Compilation et exécution d’un code MPI en C\nPour compiler un code MPI, il faut faire le lien avec la librairie MPI utilisée en utilisant par exemple mpicc\n&gt; mpicc hello_mpi.c -o hello\n\n\n\n\n\n\nNote\n\n\n\nPackages ubuntu : libopenmpi-devet openmpi-bin\n\n\nPour exécuter un code MPI, on utilise un lanceur d’application MPI qui ordonne le lancement de l’exécution sur un nombre de processus choisi. Le lanceur défini par la norme MPI est mpiexec. Il existe également des lanceurs non standards, comme mpirun.\n&gt; mpiexec -n 4 ./hello\nHello world from processor ar039133.math.univ-rennes1.fr, rank 2 out of 4 processors\nHello world from processor ar039133.math.univ-rennes1.fr, rank 3 out of 4 processors\nHello world from processor ar039133.math.univ-rennes1.fr, rank 1 out of 4 processors\nHello world from processor ar039133.math.univ-rennes1.fr, rank 0 out of 4 processors"
"text": "Compilation et exécution d’un code MPI en C\nPour compiler un code MPI, il faut faire le lien avec la librairie MPI utilisée en utilisant par exemple mpicc\n&gt; mpicc hello_mpi.c -o hello\n\n\n\n\n\n\nAstuce\n\n\n\nPackages ubuntu : libopenmpi-devet openmpi-bin\n\n\nPour exécuter un code MPI, on utilise un lanceur d’application MPI qui ordonne le lancement de l’exécution sur un nombre de processus choisi. Le lanceur défini par la norme MPI est mpiexec. Il existe également des lanceurs non standards, comme mpirun.\n&gt; mpiexec -n 4 ./hello\nHello world from processor ar039133.math.univ-rennes1.fr, rank 2 out of 4 processors\nHello world from processor ar039133.math.univ-rennes1.fr, rank 3 out of 4 processors\nHello world from processor ar039133.math.univ-rennes1.fr, rank 1 out of 4 processors\nHello world from processor ar039133.math.univ-rennes1.fr, rank 0 out of 4 processors"
},
{
"objectID": "index.html#exemple-python",
Expand Down Expand Up @@ -193,7 +193,7 @@
"href": "com_point_a_point.html",
"title": "Rmpi : communications point à point",
"section": "",
"text": "Une communication dite point à point a lieu entre deux processus, l’un appelé processus émetteur et l’autre processus récepteur (ou destinataire). L’émetteur et le récepteur sont identifiés par leur rang dans le communicateur. L’entité transmise entre deux processus est appelée message. Un message est caractérisé par son enveloppe. Celle-ci est constituée :\n\ndu rang du processus émetteur source;\ndu rang du processus récepteur dest ;\nde l’étiquette du message tag;\ndu communicateur qui définit le groupe de processus et le contexte de communication comm.\nLes données échangées sont typées (entiers, réels, etc…) type.\n\nCette opération est bloquante : l’exécution reste bloquée jusqu’à ce que le contenu de message puisse être réécrit sans risque d’écraser la valeur qui devait être envoyée.\n\nmpi.send(x, type, dest, tag, comm = 1)\nmpi.recv(x, type, source, tag, comm = 1, status = 0)\n\ntype : 1 pour les entiers, 2 pour les flottants, 3 pour les caractères.\nL’appel mpi.recv pourra fonctionner avec une opération mpi.send si ces deux appels ont la même enveloppe (source, dest, tag, comm).\nCette opération est bloquante : l’exécution reste bloquée jusqu’à ce que le contenu de message corresponde au message reçu.\n\n\n\n\n\n\nNote\n\n\n\nLes fonctions mpi.send.Robj et mpi.recv.Robj permettent d’envoyer et recevoir des objets R à condition qu’ils soient sérialisables comme les data.frame par exemple. Il existe des versions non bloquantes mpi.isend et mpi.irecv ainsi qu’une version contractée mpi.sendrecv bidirectionnel. Ces concepts ne seront pas abordés ici.\n\n\n\n\nlibrary(Rmpi)\n\nid &lt;- mpi.comm.rank(comm = 0)\nnp &lt;- mpi.comm.size(comm = 0)\n\nif (id == 0) {\n for (i in seq(1, np-1)) {\n recv &lt;- mpi.recv(x = integer(1), type = 1, source = i, tag = 0, comm = 0)\n cat(\"Process 0: Received from process\", i, \"saying:\", recv, \"\\n\")\n }\n} else {\n msg &lt;- as.integer(id)\n cat(\"Process\", id, \" sent to process 0:\", msg, \"\\n\")\n invisible(mpi.send(msg, 1, dest = 0, tag = 0, comm = 0))\n}\n\ninvisible(mpi.barrier(comm = 0))\ninvisible(mpi.finalize())\n$ mpiexec -np 4 Rscript send_recv.R\nProcess 3 sent to process 0: 3\nProcess 2 sent to process 0: 2\nProcess 1 sent to process 0: 1\nProcess 0: Received from process 1 saying: 1\nProcess 0: Received from process 2 saying: 2\nProcess 0: Received from process 3 saying: 3\n\n\n\nL’exercice est décomposé en 3 étapes :\n\nPing: compléter le script ping_pong_1.R de manière à ce que le processus de rang 0 envoie un message contenant une série aléatoire de 1000 réels au rang 1.\nPing-Pong: compléter le script ping_pong_2.R de manière à ce que le processus de rang 1 renvoie le message vers le processus de rang 0.\nMatch de Ping-Pong: compléter le script ping_pong_3.R de manière à enchainer 9 échanges."
"text": "Une communication dite point à point a lieu entre deux processus, l’un appelé processus émetteur et l’autre processus récepteur (ou destinataire). L’émetteur et le récepteur sont identifiés par leur rang dans le communicateur. L’entité transmise entre deux processus est appelée message. Un message est caractérisé par son enveloppe. Celle-ci est constituée :\n\ndu rang du processus émetteur source;\ndu rang du processus récepteur dest ;\nde l’étiquette du message tag;\ndu communicateur qui définit le groupe de processus et le contexte de communication comm.\nLes données échangées sont typées (entiers, réels, etc…) type.\n\nCette opération est bloquante : l’exécution reste bloquée jusqu’à ce que le contenu de message puisse être réécrit sans risque d’écraser la valeur qui devait être envoyée.\n\nmpi.send(x, type, dest, tag, comm = 1)\nmpi.recv(x, type, source, tag, comm = 1, status = 0)\n\ntype : 1 pour les entiers, 2 pour les flottants, 3 pour les caractères.\nL’appel mpi.recv pourra fonctionner avec une opération mpi.send si ces deux appels ont la même enveloppe (source, dest, tag, comm).\nCette opération est bloquante : l’exécution reste bloquée jusqu’à ce que le contenu de message corresponde au message reçu.\n\n\n\n\n\n\nNote\n\n\n\nLes fonctions mpi.send.Robj et mpi.recv.Robj permettent d’envoyer et recevoir des objets R à condition qu’ils soient sérialisables comme les data.frame par exemple. Il existe des versions non bloquantes mpi.isend et mpi.irecv ainsi qu’une version contractée mpi.sendrecv bidirectionnelle. Ces concepts ne seront pas abordés ici.\n\n\n\n\nlibrary(Rmpi)\n\nid &lt;- mpi.comm.rank(comm = 0)\nnp &lt;- mpi.comm.size(comm = 0)\n\nif (id == 0) {\n for (i in seq(1, np-1)) {\n recv &lt;- mpi.recv(x = integer(1), type = 1, source = i, tag = 0, comm = 0)\n cat(\"Process 0: Received from process\", i, \"saying:\", recv, \"\\n\")\n }\n} else {\n msg &lt;- as.integer(id)\n cat(\"Process\", id, \" sent to process 0:\", msg, \"\\n\")\n invisible(mpi.send(msg, 1, dest = 0, tag = 0, comm = 0))\n}\n\ninvisible(mpi.barrier(comm = 0))\ninvisible(mpi.finalize())\n$ mpiexec -np 4 Rscript send_recv.R\nProcess 3 sent to process 0: 3\nProcess 2 sent to process 0: 2\nProcess 1 sent to process 0: 1\nProcess 0: Received from process 1 saying: 1\nProcess 0: Received from process 2 saying: 2\nProcess 0: Received from process 3 saying: 3\n\n\n\nL’exercice est décomposé en 3 étapes :\n\nPing: compléter le script ping_pong_1.R de manière à ce que le processus de rang 0 envoie un message contenant une série aléatoire de 1000 réels au rang 1.\nPing-Pong: compléter le script ping_pong_2.R de manière à ce que le processus de rang 1 renvoie le message vers le processus de rang 0.\nMatch de Ping-Pong: compléter le script ping_pong_3.R de manière à enchainer 9 échanges."
},
{
"objectID": "com_point_a_point.html#exemple",
Expand Down
8 changes: 4 additions & 4 deletions sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://groupecalcul.github.io/ANFRCalculRmpi/com_collectives.html</loc>
<lastmod>2024-09-24T21:56:09.134Z</lastmod>
<lastmod>2024-09-25T07:48:11.988Z</lastmod>
</url>
<url>
<loc>https://groupecalcul.github.io/ANFRCalculRmpi/exercice.html</loc>
<lastmod>2024-09-24T21:56:09.135Z</lastmod>
<lastmod>2024-09-25T07:48:11.989Z</lastmod>
</url>
<url>
<loc>https://groupecalcul.github.io/ANFRCalculRmpi/index.html</loc>
<lastmod>2024-09-24T21:56:09.135Z</lastmod>
<lastmod>2024-09-25T07:48:11.991Z</lastmod>
</url>
<url>
<loc>https://groupecalcul.github.io/ANFRCalculRmpi/com_point_a_point.html</loc>
<lastmod>2024-09-24T21:56:09.135Z</lastmod>
<lastmod>2024-09-25T07:48:11.988Z</lastmod>
</url>
</urlset>

0 comments on commit 620489c

Please sign in to comment.