PCクラスタを利用したHPCの試験構築

1.概要

PCクラスタを利用したHPC(high-performance computing)がどのようなものであるかを調べているとOpen MPIを見つけました。Open MPIはHPCのライブラリで具体的な構築方法を探していると大学のWebサイトでMPIを利用し、Ubuntu Serverをベースとした環境構築資料を見つけました。

試験的な構築をするため、Ubuntu DesktopのKVMを利用して、VMのUbuntu serverでhpcの仕組みを調べてみました。その内容を記述します。

2.詳細

(1) 導入手順

(a) kvm install
(b) ubuntu-20.04 server install
(c) ip-address変更(vmは192.168.122.10, 192.168.122.20に設定)
(d) ubuntu update
(e) vm clone(vm ubuntu serverを2台構築)
(f) hostname変更
(g) master node(ubuntu desktop)にnfs-server構築
(h) worker node(vm ubuntu server)にnfs-client構築
(i) open MPIをmaster node, worker nodeに導入
(j) sshの追加設定
(k) sample programのmaster nodeでbuild
(l) maser nodeでsample program実行
(m) worker nodeでsample program実行

(2) 詳細

(a)〜(f)までは、KVM環境にubuntu serverを2台構築するので省略します

(g) master node(ubuntu desktop)にnfs-server構築

$ sudo apt install nfs-kernel-server

nfs server設定
$ mkdir /home/username/share

/etc/exportsに下記1行を追加
/home/username/share 192.168.122.0/24(rw,async,no_root_squash)

(h) worker node(vm ubuntu server)にnfs-client構築

$ sudo apt install nfs-common

/etc/fstabに下記1行を追加
192.168.122.1:/home/username/share  /home/username/share  nfs defaults 0 0

(i) open MPIをmaster node, worker nodeに導入

$ sudo apt install gcc g++ gfortran
$ sudo apt install openmpi-bin libopenmpi-dev

(j) sshの追加設定

master nodeでssh-keygen実行
$ ssh-keygen -t rsa -b 4096
$ cp .ssh/id_rsa.pub share

worker nodeでssh設定変更

$ cp share/id_rsa.pub .ssh/authorized_keys

Public-keyでの認証でssh-loginできるかmaster nodeで確認
/etc/ssh/sshd_configの下記箇所を修正
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no

(k) sample programのmaster nodeでbuild

参考資料にサンプルがあります。利用しました。
master nodeの/home/username/shareに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;
}

buildします
$ mpicc -o hello hello.c

(l) maser nodeでsample program実行

$ mpirun -n 4 ./hello

(m) worker nodeでsample program実行

master nodeの/home/username/shareにhostを下記内容で作成

192.168.122.20 slots=4
192.168.122.30 slots=4

worker nodeを利用した実行
$ mpirun -hostfile host -np 8 ./hello

参考

[本ブログ内参照]
ubuntuとKVMを利用してandroid-x86の動作試験をしました
[外部サイト参照]
Open MPI: Open Source High Performance Computing
自作クラスタ計算機 • mpiによる並列計算

コメント

過去30日間に良く読まれた記事

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

Windows95/98のPCゲームをUbuntu/LinuxMintの最新PCで楽しむ方法 ( KVM / Wine / dosbox-x / midi )

LinuxMint/ubuntuにWine 11導入を試しました ( LinuxMint 21.3 / 22.3 ubuntu 22.04 / 26.04 Wine 11.0 / 11.6 / 11.8 / 11.13 )