{"id":367,"date":"2020-04-10T14:56:27","date_gmt":"2020-04-10T12:56:27","guid":{"rendered":"http:\/\/calculs.univ-cotedazur.fr\/?page_id=367"},"modified":"2025-04-25T11:36:44","modified_gmt":"2025-04-25T09:36:44","slug":"mpi","status":"publish","type":"page","link":"https:\/\/calculs.univ-cotedazur.fr\/?page_id=367","title":{"rendered":"MPI"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_11 counter-hierarchy counter-decimal ez-toc-grey\">\n<nav><ul class=\"ez-toc-list ez-toc-list-level-1\"><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/calculs.univ-cotedazur.fr\/?page_id=367#OpenMPI\" title=\"OpenMPI\">OpenMPI<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/calculs.univ-cotedazur.fr\/?page_id=367#Intel_MPI\" title=\"Intel MPI\">Intel MPI<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"OpenMPI\"><\/span>OpenMPI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Si vous soumettez vos jobs avec sbatch et que votre job charge un module OpenMPI, vous pouvez lancer vos commandes <em>mpirun<\/em> sans option d\u00e9crivant les ressources \u00e0 utiliser (telles que -np, -H, -npersocket, etc.). OpenMPI a en effet \u00e9t\u00e9 configur\u00e9 pour r\u00e9cup\u00e9rer ces informations directement aupr\u00e8s de Slurm.<\/p>\n\n\n\n<p>Afin d&rsquo;optimiser les performances de vos jobs, il est donc conseill\u00e9 de bien param\u00e9trer les options pour la r\u00e9servation de ressources avec Slurm.  Si vous ne donnez pas une d\u00e9finition assez pr\u00e9cise des ressources r\u00e9serv\u00e9es,  vos t\u00e2ches risquent d\u2019\u00eatre dispatch\u00e9es sur diff\u00e9rents n\u0153uds (en passant par la file <em>cpucourt <\/em>et si le cluster est tr\u00e8s utilis\u00e9) et donc vous allez perdre en performances. Il est donc recommand\u00e9 d\u2019utiliser des options qui pr\u00e9cisent la r\u00e9servation, comme&nbsp;: <\/p>\n\n\n\n<pre class=\"wp-block-verse\">--nodes=1  <br>--ntasks=4<br>--ntasks-per-node=4 <br>--ntasks-per-socket=4 <\/pre>\n\n\n\n<p>Ici, on r\u00e9serve 4 c\u0153urs sur le m\u00eame n\u0153ud et le m\u00eame processeur. Pour information, les n\u0153uds de calcul (files <em>cpucourt <\/em>et <em>cpulong<\/em>) sont \u00e9quip\u00e9s de 2 processeurs (socket), chacun ayant 20 c\u0153urs. <\/p>\n\n\n\n<p>Voici un exemple de d\u00e9claration de job avec Slurm o\u00f9 le code va tourner sur 2 noeuds (10 coeurs seront utilis\u00e9s sur chacun des 2 processeurs d&rsquo;un noeud) :<\/p>\n\n\n\n<pre class=\"wp-block-verse\">#!\/bin\/bash\n#SBATCH --job-name=check_mpi\n#SBATCH --output=check_mpi.txt\n\n#SBATCH --time=10:00\n#SBATCH --account=project_name\n\n#SBATCH --ntasks=40 \n#SBATCH --ntasks-per-node=20\n#SBATCH --nodes=2\n#SBATCH --ntasks-per-socket=10\n\nmodule purge\nmodule load openmpi\/4.1.7\n\nmpirun program.mpi<\/pre>\n\n\n\n<h3><span class=\"ez-toc-section\" id=\"Intel_MPI\"><\/span>Intel MPI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Exemple de job :<\/p>\n\n\n\n<pre class=\"wp-block-verse\">#!\/bin\/bash\n#SBATCH --job-name=test_mpi\n#SBATCH --output=mpi.txt\n#SBATCH --ntasks=4\n#SBATCH --time=10:00\n#SBATCH --account=projectname\n#SBATCH --constraint=intel\n\nmodule purge\nmodule load intel\/2020-cluster-xe\n\nmpirun -bootstrap slurm -n $SLURM_NTASKS \/home\/username\/jobs\/my_code.mpi<\/pre>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\"Cliquez ici (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/documentation\/mpi-developer-reference-linux\/top.html\" target=\"_blank\">Cliquez ici<\/a> pour consulter la documentation officielle Intel MPI.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenMPI Si vous soumettez vos jobs avec sbatch et que votre job charge un module OpenMPI, vous pouvez lancer vos commandes mpirun sans option d\u00e9crivant les ressources \u00e0 utiliser (telles que -np, -H, -npersocket, etc.). OpenMPI a en effet \u00e9t\u00e9 &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":140,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/pages\/367"}],"collection":[{"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=367"}],"version-history":[{"count":20,"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/pages\/367\/revisions"}],"predecessor-version":[{"id":3001,"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/pages\/367\/revisions\/3001"}],"up":[{"embeddable":true,"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=\/wp\/v2\/pages\/140"}],"wp:attachment":[{"href":"https:\/\/calculs.univ-cotedazur.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}