Table of Contents

概要

準備

ハードウェアの確認

事前に各ノードのCPUのコア数(物理コア数)とスレッド数(論理コア数)を確認してください

並列計算

作業は全て管理ノードで行います

サンプルプログラム

次のコードを使って説明します

hello.c
#include <stdio.h>
#include "mpi.h"
 
int main( int argc, char *argv[] )
{
    int     rank, size, len;
    char    name[MPI_MAX_PROCESSOR_NAME];
 
    MPI_Init( &argc, &argv );
    MPI_Comm_rank( MPI_COMM_WORLD, &rank );
    MPI_Comm_size( MPI_COMM_WORLD, &size );
    MPI_Get_processor_name( name, &len );
    name[len] = '\0';
 
    printf( "Hello world: rank %d of %d running on %s\n", rank, size, name );
 
    MPI_Finalize();
    return 0;
}

ノード内並列計算

指定した計算ノードにジョブを投げてみます。

ノード間並列計算

通常の使い方

複数の計算ノードにわたるジョブを投げてみます。

ホストファイルによるジョブの投入

ホスト名を毎回入力したくない、計算ノードによってプロセス数を変えたいなどの場合は、ホストファイルを作成します。

hosts.txt
keisan11 slots=2
keisan12 slots=4
hosts.txt
keisan11:2
keisan12:4

次のように実行します

$ mpirun -n 6 -f hosts.txt ./hello
Hello world: rank 0 of 6 running on keisan11
Hello world: rank 1 of 6 running on keisan11
Hello world: rank 2 of 6 running on keisan12
Hello world: rank 3 of 6 running on keisan12
Hello world: rank 4 of 6 running on keisan12
Hello world: rank 5 of 6 running on keisan12

参考