0

私はクラスターを使用して、負荷の高いコンピューティングを実行しています。わからないことがいくつかあります。たとえば、これまでのすべての仕事でこの構成を使用してきました

#SBATCH -J ss      
#SBATCH -N 1         # allocate 1 nodes for the job
#SBATCH -n 15        # 20 tasks total
#SBATCH -t 12:0:0    
#SBATCH --mem=12000 

ただ、ノードがコンピュータ(-N 1)なのか、タスク(-n 15)なのかはわかりません。

私のコードは MPI ですが、理想的にはハイブリッド MPI と OpenMP を実行したいと考えています。そのためには、SBATCH をどのように構成すればよいですか?

ありがとうございました。

4

2 に答える 2

1

クラスターはノードのグループであり、各ノードは独立したコンピューター (多数の CPU といくつかの GPU またはその他のアクセラレーター) であり、ノードはネットワークによって接続されます (通常、スーパーコンピューターではメモリ アドレスがグローバルであることに注意してください)。次に、共有メモリと分散メモリの 2 種類のスーパーコンピュータがあります。

スーパーコンピューターのアーキテクチャについて少し読む価値があります... ウィキペディアは良い出発点です!

プロセスは独立した作業単位です。プロセスはメモリを共有しません。お互いのメモリにアクセスする方法が必要です。そのためには、MPI などのライブラリを使用します。

slurm では、プロセスはタスクと呼ばれます...

タスク (実際にはプロセス) の数を設定するには、-ntasks または単純に -n を使用します。次に、ノードごとのタスク数またはノード数を設定できます。これは2つの異なるものです!

--ntasks-per-node は、ノードごとのタスク数を示します --nodes は、必要なノードの最小数を示します。--nodes=2 を指定すると、最小で 2 つのノードを持つことになりますが、それ以上になる可能性があります...ノードに 18 コアがあり、40 のタスクを要求する場合、少なくとも 3 つのノードが必要です...これが --nodes の使用を避けるべき理由です (自分が何をしているのかを知っている場合を除きます!)

次に、特定の数の CPU (プロセッサのコア) を 1 つのタスクに割り当てることができます。これは --cpu-per-task を使用して設定されます。

1 つの MPI ランクが 1 つのタスクです。その後、タスクは複数のスレッドを起動できます。--cpu-per-task を 1 に設定すると、すべてのスレッドが同じコアで実行されます。したがって、リソースを競います。通常、コアごとに 1 つのスレッド (ハイパースレッディングを使用する場合は 2 つ) が必要です。

--cpu-per-task を設定する場合、タスクは 1 つのノードでしか実行できないため、ノードあたりのコア数を少なくする必要があります。(分散メモリ システム上)。

要約する:

したがって、それぞれ N スレッドを起動する M mpi プロセスを実行したい場合。最初の N は、ノードあたりのコア数よりも小さくする必要があります。ノードあたりのコア数の整数の除算器にすることをお勧めします (そうしないと、一部のコアが無駄になります)。

--ntasks="M" --cpus-per-task="N" を設定します。

次に、以下を使用して実行します: srun ./your_hybrid_app

次に、2 つのことを忘れないでください: OpenMP を使用する場合: スレッド数を設定します。

export OMP_NUM_THREADS="N"

マルチスレッド用にMPIを適切に初期化することを忘れないでください...

!/bin/bash -l
#
#SBATCH --account=myAccount
#SBATCH --job-name="a job"
#SBATCH --time=24:00:00
#SBATCH --ntasks=16
#SBATCH --cpus-per-task=4
#SBATCH --output=%j.o
#SBATCH --error=%j.e

export OMP_NUM_THREADS=4
srun ./your_hybrid_app

これにより、タスクごとに 4 コア (およびタスクごとに 4 つの OMP スレッド、したがってコアごとに 1 つ) で、16 のタスクが起動されます。

于 2019-02-23T18:56:03.033 に答える