MPI and UPC Users Guide

MPI use depends upon the type of MPI being used.
MPIの使用は、使用されているMPIのタイプによって異なります。
There are three fundamentally different modes of operation used by these various MPI implementation.
これらのさまざまなMPI実装で使用される3つの根本的に異なる動作モードがあります。

  1. Slurm directly launches the tasks and performs initialization of communications through the PMI2 or PMIx APIs.
    Slurmはタスクを直接起動し、PMI2またはPMIxAPIを介して通信の初期化を実行します。
    (Supported by most modern MPI implementations.)
    (最新のMPI実装でサポートされています。)
  2. Slurm creates a resource allocation for the job and then mpirun launches tasks using Slurm's infrastructure (older versions of OpenMPI).
    Slurmはジョブのリソース割り当てを作成し、mpirunはSlurmのインフラストラクチャ(古いバージョンのOpenMPI)を使用してタスクを起動します。
  3. Slurm creates a resource allocation for the job and then mpirun launches tasks using some mechanism other than Slurm, such as SSH or RSH.
    Slurmはジョブのリソース割り当てを作成し、mpirunはSSHやRSHなどのSlurm以外のメカニズムを使用してタスクを起動します。
    These tasks initiated outside of Slurm's monitoring or control.
    これらのタスクは、Slurmの監視または制御の外部で開始されました。
    Slurm's epilog should be configured to purge these tasks when the job's allocation is relinquished.
    Slurmのエピローグは、ジョブの割り当てが放棄されたときにこれらのタスクをパージするように構成する必要があります。
    The use of pam_slurm_adopt is also strongly recommended.
    pam_slurm_adoptの使用も強くお勧めします。

Note: Slurm is not directly launching the user application in case 3, which may prevent the desired behavior of binding tasks to CPUs and/or accounting.
注:ケース3の場合、Slurmはユーザーアプリケーションを直接起動しません。これにより、タスクをCPUにバインドしたりアカウンティングしたりするという望ましい動作が妨げられる可能性があります。
Some versions of some MPI implementations work, so testing your particular installation may be required to determie the actual behavior.
一部のMPI実装の一部のバージョンは機能するため、実際の動作を判断するには、特定のインストールをテストする必要がある場合があります。

Two Slurm parameters control which MPI implementation will be supported.
2つのSlurmパラメーターは、サポートされるMPI実装を制御します。
Proper configuration is essential for Slurm to establish the proper environment for the MPI job, such as setting the appropriate environment variables.
適切な環境変数の設定など、SlurmがMPIジョブに適切な環境を確立するには、適切な構成が不可欠です。
The MpiDefault configuration parameter in slurm.conf establishes the system default MPI to be supported.
slurm.confのMpiDefault構成パラメーターは、サポートされるシステムデフォルトMPIを確立します。
The srun option --mpi= (or the equivalent environment variable SLURM_MPI_TYPE can be used to specify when a different MPI implementation is to be supported for an individual job).
srunオプション--mpi =(または同等の環境変数SLURM_MPI_TYPEを使用して、個々のジョブで異なるMPI実装をサポートするタイミングを指定できます)。

Note: Use of an MPI implementation without the appropriate Slurm plugin may result in application failure.
注:適切なSlurmプラグインなしでMPI実装を使用すると、アプリケーションが失敗する可能性があります。
If multiple MPI implementations are used on a system then some users may be required to explicitly specify a suitable Slurm MPI plugin.
システムで複数のMPI実装が使用されている場合、一部のユーザーは適切なSlurmMPIプラグインを明示的に指定する必要があります。

Links to instructions for using several varieties of MPI/PMI with Slurm are provided below.
Slurmでいくつかの種類のMPI / PMIを使用するための手順へのリンクを以下に示します。


PMIx

Building PMIx

Before building PMIx, it is advisable to read these How-To Guides.
PMIxを構築する前に、これらのハウツーガイドを読むことをお勧めします。
They provide some details on building dependencies and installation steps as well as some relevant notes with regards to Slurm Support.
これらは、依存関係の構築とインストール手順に関する詳細、およびSlurmサポートに関するいくつかの関連する注意事項を提供します。

This section is intended to complement the PMIx FAQ with some notes on how to prepare Slurm and PMIx to work together.
このセクションは、SlurmとPMIxが連携するように準備する方法に関するいくつかのメモでPMIxFAQを補足することを目的としています。
PMIx can be obtained from the official PMIx GitHub repository, either by cloning the repository or by downloading a packaged release.
PMIxは、リポジトリのクローンを作成するか、パッケージ化されたリリースをダウンロードすることにより、公式のPMIxGitHubリポジトリから取得できます。

Slurm support for PMIx was first included in Slurm 16.05 based on the PMIx v1.2 release.
PMIxのSlurmサポートは、PMIxv1.2リリースに基づいてSlurm16.05に最初に含まれました。
It has since been updated to support the PMIx v2.x and v3.x series, as per the following table:
その後、次の表に示すように、PMIxv2.xおよびv3.xシリーズをサポートするように更新されました。

  • Slurm 16.05+ supports only the PMIx v1.x series, starting with v1.2.0.
    Slurm 16.05+は、v1.2.0以降のPMIxv1.xシリーズのみをサポートします。
    This Slurm version specifically does not support PMIx v2.x and above.
    このSlurmバージョンは、特にPMIxv2.x以降をサポートしていません。
  • Slurm 17.11+ supports both PMIx v1.2+ and v2.x but not v3.x.
    Slurm 17.11+は、PMIx v1.2 +とv2.xの両方をサポートしますが、v3.xはサポートしません。
  • Slurm 18.08+ supports PMIx v1.2+, v2.x and v3.x.
    Slurm 18.08+は、PMIx v1.2 +、v2.x、およびv3.xをサポートします。
If running PMIx v1, it is recommended to run at least 1.2.5 since older versions may have some compatibility issues with support of pmi and pmi2 APIs.
PMIx v1を実行している場合、古いバージョンではpmiおよびpmi2 APIのサポートとの互換性の問題が発生する可能性があるため、少なくとも1.2.5を実行することをお勧めします。
Note also that Intel MPI doesn't officially support PMIx, so thought it can run there is not any guarantee.
Intel MPIは公式にはPMIxをサポートしていないため、実行できると考えても保証はありません。

Altough it is recommended to build PMIx from the packaged releases, here is an example on how to build PMIx v2.1 by cloning the git repository:
パッケージ化されたリリースからPMIxをビルドすることをお勧めしますが、gitリポジトリのクローンを作成してPMIxv2.1をビルドする方法の例を次に示します。

user@testbox:~/git$ mkdir -p pmix/build/2.1 pmix/install/2.1
user@testbox:~/git$ cd pmix
user@testbox:~/git/pmix$ git clone https://github.com/pmix/pmix.git source
user@testbox:~/git/pmix$ cd source/
user@testbox:~/git/pmix/source$ git branch -a
user@testbox:~/git/pmix/source$ git checkout v2.1
user@testbox:~/git/pmix/source$ git pull
user@testbox:~/git/pmix/source$ ./autogen.sh
user@testbox:~/git/pmix/source$ cd ../build/2.1/
user@testbox:~/git/pmix/build/2.1$ ../../source/configure \
> --prefix=/home/user/git/pmix/install/2.1
user@testbox:~/git/pmix/build/2.1$ make -j install >/dev/null
user@testbox:~/git/pmix/build/2.1$ cd ../../install/2.1/
user@testbox:~/git/pmix/install/2.1$ grep PMIX_VERSION include/pmix_version.h
#define PMIX_VERSION_MAJOR 2L
#define PMIX_VERSION_MINOR 1L
user@testbox:~/git/pmix/install/2.1$

For the purpose of these instructions let's imagine PMIx v2.1 has been installed on the following path:
これらの手順の目的で、PMIxv2.1が次のパスにインストールされていると想像してみましょう。

user@testbox:/home/user/git/pmix/install/2.1

Additional PMIx notes can be found in the SchedMD Publications and Presentations page.
追加のPMIxノートは、SchedMD Publications andPresentationsページにあります。

Building Slurm with PMIx support

At configure time, Slurm looks by default for a PMIx installation under:
構成時に、Slurmはデフォルトで以下のPMIxインストールを検索します。

/usr
/usr/local

If PMIx isn't installed in any of the previous locations, the Slurm configure script can be requested to point to the non default location.
PMIxが以前の場所のいずれにもインストールされていない場合は、Slurmconfigureスクリプトにデフォルト以外の場所を指すように要求できます。
Here's an example:
次に例を示します。

user@testbox:~/slurm/17.11/testbox/slurm$ ../../slurm/configure \
> --prefix=/home/user/slurm/17.11/testbox \
> --with-pmix=/home/user/git/pmix/install/2.1 \
> --enable-multiple-slurmd

Or the analogous with RPM based building:
または、RPMベースの構築と類似しています。

[user@testbox Downloads]$ rpmbuild \
> --define '_prefix /home/user/slurm/17.11/testbox' \
> --define '_slurm_sysconfdir /home/user/slurm/17.11/testbox/etc' \
> --with multiple_slurmd \
> --define '_with_pmix --with-pmix=/home/user/git/pmix/install/2.1' \
> -ta slurm-17.11.1.tar.bz2

NOTE: It is also possible to build against multiple PMIx versions with a ':' separator.
注:「:」区切り文字を使用して、複数のPMIxバージョンに対してビルドすることもできます。
For instance to build against 1.2 and 2.1:
たとえば、1.2および2.1に対してビルドするには:

...
> --with-pmix=/path/to/pmix/install/1.2:/path/to/pmix/install/2.1 \
...

NOTE: When submitting a job, the desired version can then be selected using any of the available from --mpi=list.
注:ジョブを送信するときは、-mpi = listから利用可能ないずれかを使用して目的のバージョンを選択できます。
The default for pmix will be the highest version of the library:
pmixのデフォルトは、ライブラリの最高バージョンになります。

user@testbox:~/t$ srun --mpi=list
srun: MPI types are...
srun: pmix_v1
srun: pmi2
srun: none
srun: pmix
srun: pmix_v2

NOTE: There is no need to configure Slurm with the multiple-slurmd option, but if it is configured with it, additional steps will be required to make PMIx work.
注:multis-slurmdオプションを使用してSlurmを構成する必要はありませんが、Slurmを使用して構成されている場合は、PMIxを機能させるために追加の手順が必要になります。
That case is covered a few paragraphs below.
その場合は、以下のいくつかの段落で説明されています。

Continuing with the configuration, if Slurm is unable to locate the PMIx installation and/or finds it but considers it not usable, the configure output should log something like this:
構成を続行すると、SlurmがPMIxインストールを見つけることができないか、それを見つけたが使用できないと見なした場合、構成出力は次のようにログに記録する必要があります。

checking for pmix installation...
configure: WARNING: unable to locate pmix installation

Otherwise, if Slurm finds it and considers it usable, something like this:
それ以外の場合、Slurmがそれを見つけて使用可能と見なすと、次のようになります。

checking for pmix installation... /home/user/git/pmix/install/2.1

Inspecting the generated config.log in the Slurm build directory might provide even more detail for troubleshooting purposes.
Slurmビルドディレクトリで生成されたconfig.logを調べると、トラブルシューティングの目的でさらに詳細な情報が得られる場合があります。
After configuration, we can proceed to install Slurm (using make or rpm accordingly):
構成後、Slurmのインストールに進むことができます(それに応じてmakeまたはrpmを使用)。

user@testbox:~/slurm/17.11/testbox/slurm$ make -j install > /dev/null
user@testbox:~/slurm/17.11/testbox/slurm$ cd ../lib/slurm/
user@testbox:~/slurm/17.11/testbox/lib/slurm$ ls -l | grep pmix
lrwxrwxrwx 1 user user       16 Dec  6 19:35 mpi_pmix.so -> ./mpi_pmix_v2.so
-rw-r--r-- 1 user user  7008260 Dec  6 19:35 mpi_pmix_v2.a
-rwxr-xr-x 1 user user     1040 Dec  6 19:35 mpi_pmix_v2.la
-rwxr-xr-x 1 user user  1020112 Dec  6 19:35 mpi_pmix_v2.so
user@testbox:~/slurm/17.11/testbox/lib/slurm$

If support for PMI2 version is also needed, it can also be installed from the contribs directory:
PMI2バージョンのサポートも必要な場合は、contribsディレクトリからインストールすることもできます。

user@testbox:~/slurm/17.11/testbox/lib/slurm$ cd ../../slurm/contribs/pmi2
user@testbox:~/slurm/17.11/testbox/slurm/contribs/pmi2$ make -j install
user@testbox:~/slurm/17.11/testbox/slurm/contribs/pmi2$ cd ../../../lib
user@testbox:~/slurm/17.11/testbox/lib$ ls -l | grep pmi
-rw-r--r-- 1 user user   498144 Dec  6 20:05 libpmi2.a
-rwxr-xr-x 1 user user      958 Dec  6 20:05 libpmi2.la
lrwxrwxrwx 1 user user       16 Dec  6 20:05 libpmi2.so -> libpmi2.so.0.0.0
lrwxrwxrwx 1 user user       16 Dec  6 20:05 libpmi2.so.0 -> libpmi2.so.0.0.0
-rwxr-xr-x 1 user user   214512 Dec  6 20:05 libpmi2.so.0.0.0
-rw-r--r-- 1 user user   414680 Dec  6 19:35 libpmi.a
-rwxr-xr-x 1 user user     1011 Dec  6 19:35 libpmi.la
lrwxrwxrwx 1 user user       15 Dec  6 19:35 libpmi.so -> libpmi.so.0.0.0
lrwxrwxrwx 1 user user       15 Dec  6 19:35 libpmi.so.0 -> libpmi.so.0.0.0
-rwxr-xr-x 1 user user   230552 Dec  6 19:35 libpmi.so.0.0.0
user@testbox:~/slurm/17.11/testbox/lib$

NOTE: Since both Slurm and PMIx provide libpmi[2].so libraries, we recommend to install both pieces of software in different locations.
注:SlurmとPMIxの両方がlibpmi [2] .soライブラリを提供するため、両方のソフトウェアを異なる場所にインストールすることをお勧めします。
Otherwise, both libraries provided by Slurm and PMIx might end up being installed under standard locations like /usr/lib64 and the package manager erroring out and reporting the conflict.
そうしないと、SlurmとPMIxによって提供される両方のライブラリが/ usr / lib64などの標準の場所にインストールされ、パッケージマネージャーがエラーを起こして競合を報告する可能性があります。
It is planned to alleviate that by putting these libraries in a separate libpmi-slurm package.
これらのライブラリを別のlibpmi-slurmパッケージに入れることで、これを軽減することが計画されています。

NOTE: If support for multiple-slurmd is required, the TmpFS option in slurm.conf needs to be specified and as many directory paths as nodes be created.
注:複数のslurmdのサポートが必要な場合は、slurm.confのTmpFSオプションを指定し、ノードと同じ数のディレクトリパスを作成する必要があります。
These directories are used by the Slurm PMIx plugin to create temporal files and/or UNIX sockets.
これらのディレクトリは、一時ファイルやUNIXソケットを作成するためにSlurmPMIxプラグインによって使用されます。
Here's an example setup for two nodes named compute[1-2]:
以下は、compute [1-2]という名前の2つのノードのセットアップ例です。

TmpFS=/home/user/slurm/17.11/testbox/spool/slurmd-tmpfs-%n
user@testbox:~/slurm/17.11/testbox$ mkdir spool/slurmd-tmpfs-compute1
user@testbox:~/slurm/17.11/testbox$ mkdir spool/slurmd-tmpfs-compute2

Testing Slurm and PMIx

It is possible to directly test Slurm and PMIx without the need of a MPI implementation software being installed.
MPI実装ソフトウェアをインストールしなくても、SlurmとPMIxを直接テストすることができます。
Here's an example indicating that both components work properly:
両方のコンポーネントが正しく機能することを示す例を次に示します。

user@testbox:~/t$ srun --mpi=list
srun: MPI types are...
srun: pmi2
srun: none
srun: pmix
srun: pmix_v2
user@testbox:~/t$ srun --mpi=pmix -n2 -N2 \
> ~/git/pmix/build/2.1/test/pmix_client -n 2 --job-fence -c
OK
OK
user@testbox:~/t$ srun --mpi=pmix_v2 -n2 -N2 \
> ~/git/pmix/build/2.1/test/pmix_client -n 2 --job-fence -c
OK
OK
user@testbox:~/t$

OpenMPI

The current versions of Slurm and Open MPI support task launch using the srun command.
SlurmおよびOpenMPIの現在のバージョンは、srunコマンドを使用したタスクの起動をサポートしています。
It relies upon Slurm managing reservations of communication ports for use by the Open MPI version 1.5.
これは、OpenMPIバージョン1.5で使用する通信ポートの予約を管理するSlurmに依存しています。

If OpenMPI is configured with --with-pmi either pmi or pmi2, the OMPI jobs can be launched directly using the srun command.
OpenMPIがpmiまたはpmi2のいずれかで--with-pmiを使用して構成されている場合、OMPIジョブはsrunコマンドを使用して直接起動できます。
This is the preferred mode of operation.
これは、推奨される操作モードです。
If the pmi2 support is enabled, the option '--mpi=pmi2' or '--mpi=pmi2_v2' must be specified on the srun command line.
pmi2サポートが有効になっている場合は、オプション '--mpi = pmi2'または '--mpi = pmi2_v2'をsrunコマンドラインで指定する必要があります。
Alternately configure 'MpiDefault=pmi' or 'MpiDefault=pmi_v2' in slurm.conf.
または、slurm.confで「MpiDefault = pmi」または「MpiDefault = pmi_v2」を構成します。

Starting with Open MPI version 3.1, PMIx version 2 is natively supported.
Open MPIバージョン3.1以降、PMIxバージョン2がネイティブでサポートされています。
To launch Open MPI application using PMIx version 2 the '--mpi=pmix_v2' option must be specified on the srun command line or 'MpiDefault=pmi_v2' configured in slurm.conf.
PMIxバージョン2を使用してOpenMPIアプリケーションを起動するには、srunコマンドラインで「--mpi = pmix_v2」オプションを指定するか、slurm.confで「MpiDefault = pmi_v2」を構成する必要があります。
Open MPI version 4.0, adds support for PMIx version 3 and is invoked in the same way, with '--mpi=pmix_v3'.
MPIバージョン4.0を開き、PMIxバージョン3のサポートを追加し、同じ方法で「--mpi = pmix_v3」を使用して呼び出されます。

In Open MPI version 2.0, PMIx is natively supported too.
Open MPIバージョン2.0では、PMIxもネイティブでサポートされています。
To launch Open MPI application using PMIx the '--mpi=pmix' or '--mpi=pmix_v1' option has to be specified on the srun command line.
PMIxを使用してOpenMPIアプリケーションを起動するには、srunコマンドラインで「--mpi = pmix」または「--mpi = pmix_v1」オプションを指定する必要があります。
It is also possible to build OpenMPI using an external PMIx installation.
外部PMIxインストールを使用してOpenMPIを構築することも可能です。
That option can take one of three values: "internal", "external", or a valid directory name. "internal" (or no DIR value) forces Open MPI to use its internal copy of PMIx. "external" forces Open MPI to use an external installation of PMIx. Supplying a valid directory name also forces Open MPI to use an external installation of PMIx, and adds DIR/include, DIR/lib, and DIR/lib64 to the search path for headers and libraries.
このオプションは、「internal」、「external」、または有効なディレクトリ名の3つの値のいずれかを取ることができます。「内部」(またはDIR値なし)は、OpenMPIにPMIxの内部コピーを使用するように強制します。「external」は、OpenMPIにPMIxの外部インストールを使用するように強制します。有効なディレクトリ名を指定すると、Open MPIはPMIxの外部インストールを使用するように強制され、ヘッダーとライブラリの検索パスにDIR / include、DIR / lib、およびDIR / lib64が追加されます。
Note that Open MPI does not support --without-pmix.
OpenMPIは--without-pmixをサポートしていないことに注意してください。
Note also that if building OpenMPI using an external PMIx installation, both OpenMPI and PMIx need to be built against the same libevent/hwloc installations, otherwise a warning is shown.
外部PMIxインストールを使用してOpenMPIをビルドする場合は、OpenMPIとPMIxの両方を同じlibevent / hwlocインストールに対してビルドする必要があることにも注意してください。そうしないと、警告が表示されます。
OpenMPI configure script provides the options --with-libevent=PATH and/or --with-hwloc=PATH to make OpenMPI match what PMIx was built against.
OpenMPI設定スクリプトは、OpenMPIをPMIxの構築対象と一致させるためのオプション--with-libevent = PATHおよび/または--with-hwloc = PATHを提供します。

A set of environment variables are available to control the behavior of Slurm PMIx plugin:
Slurm PMIxプラグインの動作を制御するために、一連の環境変数を使用できます。

  • SLURM_PMIX_SRV_TMPDIR base directory for PMIx/server service files.
    PMIx /サーバーサービスファイルのSLURM_PMIX_SRV_TMPDIRベースディレクトリ。
  • SLURM_PMIX_TMPDIR base directory for applications session directories.
    アプリケーションセッションディレクトリのSLURM_PMIX_TMPDIRベースディレクトリ。
  • SLURM_PMIX_DIRECT_CONN (default - yes) enables (1/yes/true) or disables (0/no/false) controls wheter direct connections between slurmstepd's are astablished or Slurm RPCs are used for data exchange.
    SLURM_PMIX_DIRECT_CONN(デフォルト-yes)は、slurmstepd間の直接接続が確立されているか、Slurm RPCがデータ交換に使用されているかを制御します(1 / yes / true)または無効(0 / no / false)します。
    Direct connection shows better performanse for fully-packed nodes when PMIx is running in the direct-modex mode.
    直接接続は、PMIxが直接モデムモードで実行されている場合、完全にパックされたノードのパフォーマンスが向上します。

For older versions of OMPI not compiled with the pmi support the system administrator must specify the range of ports to be reserved in the slurm.conf file using the MpiParams parameter.
pmiサポートでコンパイルされていない古いバージョンのOMPIの場合、システム管理者はMpiParamsパラメーターを使用してslurm.confファイルで予約するポートの範囲を指定する必要があります。
For example: MpiParams=ports=12000-12999
例:MpiParams = ports = 12000-12999

Alternatively tasks can be launched using the srun command plus the option --resv-ports or using the environment variable SLURM_RESV_PORT, which is equivalent to always including --resv-ports on srun's execute line.
または、srunコマンドとオプション--resv-portsを使用するか、環境変数SLURM_RESV_PORTを使用してタスクを起動できます。これは、srunの実行行に常に--resv-portsを含めることと同じです。
The ports reserved on every allocated node will be identified in an environment variable available to the tasks as shown here: SLURM_STEP_RESV_PORTS=12000-12015
割り当てられたすべてのノードで予約されているポートは、次のようにタスクで使用可能な環境変数で識別されます:SLURM_STEP_RESV_PORTS = 1200-12015

$ salloc -n4 sh   # allocates 4 processors and spawns shell for job
> srun a.out
> exit   # exits shell spawned by initial salloc command

or

> srun -n 4 a.out

or using the pmi2 support

> srun --mpi=pmi2 -n 4 a.out

or using the pmix support

> srun --mpi=pmix -n 4 a.out

If the ports reserved for a job step are found by the Open MPI library to be in use, a message of this form will be printed and the job step will be re-launched:
ジョブステップ用に予約されたポートがOpenMPIライブラリによって使用中であることが検出された場合、このフォームのメッセージが出力され、ジョブステップが再起動されます。

srun: error: sun000: task 0 unble to claim reserved port, retrying
srun:エラー:sun000:タスク0は予約済みポートを要求できず、再試行します

After three failed attempts, the job step will be aborted.
3回失敗すると、ジョブステップは中止されます。
Repeated failures should be reported to your system administrator in order to rectify the problem by cancelling the processes holding those ports.
これらのポートを保持しているプロセスをキャンセルして問題を修正するには、繰り返し発生する障害をシステム管理者に報告する必要があります。

NOTE: Some kernels and system configurations have resulted in a locked memory too small for proper OpemMPI functionality, resulting in application failure with a segmentation fault.
注:一部のカーネルとシステム構成では、ロックされたメモリが小さすぎて適切なOpemMPI機能を実行できず、セグメンテーション違反でアプリケーションが失敗します。
This may be fixed by configuring the slurmd daemon to execute with a larger limit.
これは、slurmdデーモンをより大きな制限で実行するように構成することで修正できます。
For example, add "LimitMEMLOCK=infinity" to your slurmd.service file.
たとえば、slurmd.serviceファイルに「LimitMEMLOCK = infinity」を追加します。


Intel MPI

Intel® MPI Library for Linux OS supports the following methods of launching the MPI jobs under the control of the Slurm job manager:
Linux OS用インテル®MPIライブラリーは、Slurmジョブマネージャーの制御下でMPIジョブを起動する次の方法をサポートしています。

  • The mpirun command over the MPD Process Manager (PM)
  • The mpirun command over the Hydra PM
  • The mpiexec.hydra command (Hydra PM)
  • The srun command (Slurm, recommended)
  • This description provides detailed information on all of these methods.
    この説明は、これらすべての方法に関する詳細情報を提供します。

    The mpirun Command over the MPD Process Manager

    Slurm is supported by the mpirun command of the Intel® MPI Library 3.1 Build 029 for Linux OS and later releases.
    Slurmは、LinuxOS以降のリリース用のインテル®MPIライブラリー3.1ビルド029のmpirunコマンドでサポートされています。

    When launched within a session allocated using the Slurm commands sbatch or salloc, the mpirun command automatically detects and queries certain Slurm environment variables to obtain the list of the allocated cluster nodes.
    Slurmコマンドsbatchまたはsallocを使用して割り当てられたセッション内で起動されると、mpirunコマンドは、特定のSlurm環境変数を自動的に検出して照会し、割り当てられたクラスターノードのリストを取得します。

    Use the following commands to start an MPI job within an existing Slurm session over the MPD PM:
    次のコマンドを使用して、MPDPMを介した既存のSlurmセッション内でMPIジョブを開始します。

    export I_MPI_PROCESS_MANAGER=mpd
    mpirun -n <num_procs> a.out
    

    The mpirun Command over the Hydra Process Manager

    Slurm is supported by the mpirun command of the Intel® MPI Library 4.0 Update 3 through the Hydra PM by default.
    Slurmは、デフォルトでHydraPMを介してIntel®MPILibrary4.0Update3のmpirunコマンドでサポートされています。
    The behavior of this command is analogous to the MPD case described above.
    このコマンドの動作は、上記のMPDの場合と同様です。

    Use the one of the following commands to start an MPI job within an existing Slurm session over the Hydra PM:
    次のいずれかのコマンドを使用して、HydraPMを介した既存のSlurmセッション内でMPIジョブを開始します。

    mpirun -n <num_procs> a.out
    

    or

    mpirun -bootstrap slurm -n <num_procs> a.out
    

    We recommend that you use the second command.
    2番目のコマンドを使用することをお勧めします。
    It uses the srun command rather than the default ssh based method to launch the remote Hydra PM service processes.
    デフォルトのsshベースの方法ではなくsrunコマンドを使用して、リモートHydraPMサービスプロセスを起動します。

    The mpiexec.hydra Command (Hydra Process Manager)

    Slurm is supported by the Intel® MPI Library 4.0 Update 3 directly through the Hydra PM.
    Slurmは、HydraPMを介して直接Intel®MPILibrary4.0Update3でサポートされています。

    Use the following command to start an MPI job within an existing Slurm session:
    次のコマンドを使用して、既存のSlurmセッション内でMPIジョブを開始します。

    mpiexec.hydra -bootstrap slurm -n <num_procs> a.out
    

    The srun Command (Slurm, recommended)

    This advanced method is supported by the Intel® MPI Library 4.0 Update 3.
    この高度な方法は、インテル®MPIライブラリー4.0アップデート3でサポートされています。
    This method is the best integrated with Slurm and supports process tracking, accounting, task affinity, suspend/resume and other features.
    この方法はSlurmとの統合に最適であり、プロセストラッキング、アカウンティング、タスクアフィニティ、一時停止/再開などの機能をサポートします。
    Use the following commands to allocate a Slurm session and start an MPI job in it, or to start an MPI job within a Slurm session already created using the sbatch or salloc commands:
    次のコマンドを使用して、Slurmセッションを割り当ててその中でMPIジョブを開始するか、sbatchまたはsallocコマンドを使用してすでに作成されているSlurmセッション内でMPIジョブを開始します。

    • Set the I_MPI_PMI_LIBRARY environment variable to point to the Slurm Process Management Interface (PMI) library:
      I_MPI_PMI_LIBRARY環境変数を設定して、Slurm Process Management Interface(PMI)ライブラリーを指すようにします。
    • export I_MPI_PMI_LIBRARY=/path/to/slurm/pmi/library/libpmi.so
      

      NOTE: Due to licensing reasons IMPI doesn't link directly to any external PMI implementation.
      注:ライセンス上の理由により、IMPIは外部のPMI実装に直接リンクしていません。
      Instead one must point to the desired library just exporting the environment variable mentioned above, which will then be dlopened by IMPI.
      代わりに、上記の環境変数をエクスポートするだけで目的のライブラリをポイントする必要があります。これは、IMPIによって削除されます。
      Also, there is no official support provided by Intel against PMIx libraries.
      また、PMIxライブラリに対してIntelが提供する公式サポートはありません。
      Since IMPI is based on MPICH, using PMIx with Intel may work due PMIx mantaining compatibility with pmi and pmi2, which are the ones used in MPICH, but it is not guaranteed to run in all cases.
      IMPIはMPICHに基づいているため、IntelでPMIxを使用すると、MPICHで使用されるpmiおよびpmi2との互換性を維持するPMIxが機能する場合がありますが、すべての場合に実行できるとは限りません。

    • Use the srun command to launch the MPI job:
      srunコマンドを使用して、MPIジョブを起動します。
    • srun -n <num_procs> a.out
      

    Above information used by permission from Intel. For more information see Intel MPI Library.
    上記の情報は、Intelの許可を得て使用しています。詳細については、IntelMPIライブラリを参照してください。

    MPICH (a.k.a. MPICH2)

    MPICH2 jobs can be launched using the srun command using pmi 1 or 2, or mpiexec.
    MPICH2ジョブは、pmi 1または2、またはmpiexecを使用してsrunコマンドを使用して起動できます。
    All modes of operation are described below.
    すべての動作モードを以下に説明します。

    MPICH2 with srun and PMI version 2

    MPICH2 must be built specifically for use with Slurm and PMI2 using a configure line similar to that shown below.
    MPICH2は、以下に示すような構成行を使用して、SlurmおよびPMI2で使用するために特別に構築する必要があります。

    ./configure --with-slurm=<PATH> --with-pmi=pmi2
    

    The PATH must point to the Slurm installation directory, in other words the parent directory of bin and lib.
    PATHは、Slurmインストールディレクトリ、つまりbinとlibの親ディレクトリを指している必要があります。
    In addition, if Slurm is not configured with MpiDefault=pmi2, then the srun command must be invoked with the option --mpi=pmi2 as shown in the example below below.
    さらに、SlurmがMpiDefault = pmi2で構成されていない場合は、以下の例に示すように、オプション--mpi = pmi2を指定してsrunコマンドを呼び出す必要があります。

    srun -n4 --mpi=pmi2 ./a.out
    

    The PMI2 support in Slurm works only if the MPI implementation supports it, in other words if the MPI has the PMI2 interface implemented.
    SlurmでのPMI2サポートは、MPI実装がサポートしている場合、つまりMPIにPMI2インターフェイスが実装されている場合にのみ機能します。
    The --mpi=pmi2 will load the library lib/slurm/mpi_pmi2.so which provides the server side functionality but the client side must implement PMI2_Init() and the other interface calls.
    --mpi = pmi2は、サーバー側の機能を提供するライブラリlib / slurm / mpi_pmi2.soをロードしますが、クライアント側はPMI2_Init()およびその他のインターフェイス呼び出しを実装する必要があります。

    This does require that the MPICH intallation have been installed with the --with-pmi=pmi2 configure option.
    これには、MPICHインストールが--with-pmi = pmi2configureオプションとともにインストールされている必要があります。

    To check if the MPI version you are using supports PMI2 check for PMI2_* symbols in the MPI library.
    使用しているMPIバージョンがPMI2をサポートしているかどうかを確認するには、MPIライブラリでPMI2_ *シンボルを確認します。

    Slurm provides a version of the PMI2 client library in the contribs directory.
    Slurmは、contribsディレクトリにPMI2クライアントライブラリのバージョンを提供します。
    This library gets installed in the Slurm lib directory.
    このライブラリはSlurmlibディレクトリにインストールされます。
    If your MPI implementation supports PMI2 and you wish to use the Slurm provided library you have to link the Slurm provided library explicitly:
    MPI実装がPMI2をサポートしていて、Slurm提供のライブラリを使用する場合は、Slurm提供のライブラリを明示的にリンクする必要があります。

    $ mpicc -L<path_to_pmi2_lib> -lpmi2 ...
    $ srun -n20 a.out
    

    MPICH2 with srun and PMI version 1

    Link your program with Slurm's implementation of the PMI library so that tasks can communicate host and port information at startup.
    プログラムをSlurmのPMIライブラリの実装とリンクして、タスクが起動時にホストとポートの情報を通信できるようにします。
    (The system administrator can add these option to the mpicc and mpif77 commands directly, so the user will not need to bother).
    (システム管理者はこれらのオプションをmpiccコマンドとmpif77コマンドに直接追加できるため、ユーザーは気にする必要はありません)。
    For example:
    例えば:

    $ mpicc -L<path_to_slurm_lib> -lpmi ...
    $ srun -n20 a.out
    
    NOTES:
    • Some MPICH2 functions are not currently supported by the PMI library integrated with Slurm
      一部のMPICH2関数は、現在Slurmと統合されたPMIライブラリではサポートされていません。
    • Set the environment variable PMI_DEBUG to a numeric value of 1 or higher for the PMI library to print debugging information.
      PMIライブラリがデバッグ情報を出力するには、環境変数PMI_DEBUGを1以上の数値に設定します。
      Use srun's -l option for better clarity.
      わかりやすくするために、srunの-lオプションを使用してください。
    • Set the environment variable SLURM_PMI_KVS_NO_DUP_KEYS for improved performance with MPICH2 by eliminating a test for duplicate keys.
      重複キーのテストを排除することでMPICH2のパフォーマンスを向上させるために、環境変数SLURM_PMI_KVS_NO_DUP_KEYSを設定します。
    • The environment variables can be used to tune performance depending upon network performance: PMI_FANOUT, PMI_FANOUT_OFF_HOST, and PMI_TIME.
      環境変数を使用して、ネットワークパフォーマンスに応じてパフォーマンスを調整できます:PMI_FANOUT、PMI_FANOUT_OFF_HOST、およびPMI_TIME。
      See the srun man pages in the INPUT ENVIRONMENT VARIABLES section for a more information.
      詳細については、「入力環境変数」セクションのsrunのマニュアルページを参照してください。
    • Information about building MPICH2 for use with Slurm is described on the MPICH2 FAQ web page and below.
      Slurmで使用するためのMPICH2の構築に関する情報は、MPICH2 FAQWebページおよび以下に記載されています。

    MPICH2 with mpiexec

    Do not add any flags to mpich and build the default (e.g. "./configure -prefix ... ".
    mpichにフラグを追加せず、デフォルトを作成します(例:「./ configure-prefix ...」。
    Do NOT pass the --with-slurm, --with-pmi, --enable-pmiport options).
    --with-slurm、-with-pmi、-enable-pmiportオプションを渡さないでください)。

    Do not add -lpmi to your application (it will force slurm's pmi 1 interface which doesn't support PMI_Spawn_multiple).
    アプリケーションに-lpmiを追加しないでください(PMI_Spawn_multipleをサポートしないslurmのpmi 1インターフェースを強制します)。

    Launch the application using salloc to create the job allocation and mpiexec to launch the tasks.
    sallocを使用してアプリケーションを起動し、ジョブ割り当てを作成し、mpiexecを使用してタスクを起動します。
    A simple example is shown below.
    簡単な例を以下に示します。

    salloc -N 2 mpiexec my_application

    All MPI_comm_spawn work fine now going through hydra's PMI 1.1 interface.
    すべてのMPI_comm_spawnは、hydraのPMI1.1インターフェイスを介して正常に動作するようになりました。


    MVAPICH (a.k.a. MVAPICH2)

    MVAPICH2 supports launching multithreaded programs by Slurm as well as mpirun_rsh.
    MVAPICH2は、Slurmおよびmpirun_rshによるマルチスレッドプログラムの起動をサポートしています。
    Please note that if you intend to use use srun, you need to build MVAPICH2 with Slurm support with a command line of this sort:
    use srunを使用する場合は、次の種類のコマンドラインを使用してSlurmをサポートするMVAPICH2をビルドする必要があることに注意してください。

    $ ./configure --with-pmi=pmi2 --with-pm=slurm
    

    Use of Slurm's pmi2 plugin provides substantially higher performance and scalability than Slurm's pmi plugin.
    Slurmのpmi2プラグインを使用すると、Slurmのpmiプラグインよりも大幅に高いパフォーマンスとスケーラビリティが提供されます。
    If pmi2 is not configured to be Slurm's default MPI plugin at your site, this can be specified using the srun command's "--mpi-pmi2" option as shown below or with the environment variable setting of "SLURM_MPI_TYPE=pmi2".
    pmi2がサイトでSlurmのデフォルトMPIプラグインとして構成されていない場合、これは、以下に示すようにsrunコマンドの「--mpi-pmi2」オプションを使用するか、「SLURM_MPI_TYPE = pmi2」の環境変数設定を使用して指定できます。

    $ srun -n16 --mpi=pmi2 a.out
    

    MVAPICH2 can be built using the following options:
    MVAPICH2は、次のオプションを使用して構築できます。

    --with-pmi=pmi2 \
    --with-pm=slurm \
    --with-slurm=<install directory> \
    --enable-slurm=yes

    For more information, please see the MVAPICH2 User Guide
    詳細については、MVAPICH2ユーザーガイドを参照してください。


    UPC (Unified Parallel C)

    Berkeley UPC (and likely other UPC implementations) rely upon Slurm to allocate resources and launch the application's tasks.
    Berkeley UPC(およびおそらく他のUPC実装)は、Slurmに依存してリソースを割り当て、アプリケーションのタスクを起動します。
    The UPC library then read.
    次に、UPCライブラリが読み取ります。
    Slurm environment variables in order to determine how the job's task count and location.
    ジョブのタスク数と場所を決定するために、環境変数をスラームします。
    One would build the UPC program in the normal manner then initiate it using a command line of this sort:
    通常の方法でUPCプログラムを作成し、次の種類のコマンドラインを使用して開始します。

    $ srun -N4 -n16 a.out
    

    Last modified 18 December 2019