Opensource.comの前回の記事で、ハイパフォーマンスコンピューティング(HPC)の革新を加速することを目的としたOpenHPCプロジェクトを紹介しました。この記事では、OpenHPCの機能を使用して小規模なHPCシステムを構築することでさらに一歩進んでいます。これをHPCシステムと呼ぶには それよりも大きく聞こえるかもしれないので、これはOpenHPCプロジェクトによって公開されたクラスター構築レシピに基づくシステムであると言ったほうがよいかもしれません。
結果として得られるクラスターは、計算ノードとして機能する2つのRaspberry Pi 3システムと、マスターノードとして機能する1つの仮想マシンで構成されます。
マスターノードはx86_64でCentOSを実行しており、計算ノードはaarch64でわずかに変更されたCentOSを実行しています。
これが実際のセットアップの外観です:
システムをHPCシステムのようにセットアップするために、OpenHPCのクラスター構築レシピインストールガイド(CentOS 7.4 / aarch64 + Warewulf + Slurm)(PDF)のいくつかの手順に従いました。このレシピには、Warewulfを使用したプロビジョニング手順が含まれています。 3つのシステムを手動でインストールしたため、Warewulfのパーツをスキップして、実行した手順のAnsibleプレイブックを作成しました。
Linuxコンテナ
- Linuxコンテナとは何ですか?
- コンテナ用語の概要
- ダウンロード:Containers Primer
- Kubernetesオペレーター:コンテナオーケストレーションプラットフォームの自動化
- eBook:クラウドネイティブアプリを設計するためのKubernetesパターン
- Kubernetesとは何ですか?
Ansibleプレイブックによってクラスターがセットアップされると、リソースマネージャーにジョブを送信できるようになりました。リソースマネージャー(私の場合はSlurm)は、クラスター内のインスタンスであり、ジョブを実行する場所とタイミングを決定します。クラスターで単純なジョブを開始する1つの可能性は、次のとおりです。
[ohpc@centos01 ~]$ srun hostname
calvin
さらにリソースが必要な場合は、コマンドを8つのCPUで実行するようにSlurmに指示できます。
[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin
最初の例では、Slurmは指定されたコマンド(hostname
)を実行しました )単一のCPUで、2番目の例ではSlurmが8つのCPUでコマンドを実行しました。私の計算ノードの1つはcalvin
という名前です もう1つはhobbes
という名前です;これは、上記のコマンドの出力で確認できます。各計算ノードは、4つのCPUコアを備えたRaspberryPi3です。
クラスタにジョブを送信するもう1つの方法は、コマンドsbatch
です。 、これを使用して、端末の代わりにファイルに出力が書き込まれたスクリプトを実行できます。
[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101
これにより、slurm-101.out
という出力ファイルが作成されます。 次の内容で:
Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017
リソースマネージャーの基本的な機能を示すには、シンプルでシリアルなコマンドラインツールが適していますが、HPCのようなシステムをセットアップするためのすべての作業を行った後は少し退屈です。
さらに興味深いアプリケーションは、クラスターで使用可能なすべてのCPUでOpenMPI並列化ジョブを実行することです。 「RedHatEnterpriseLinuxを使用した複数のアーキテクチャでのライフゲームの実行」というビデオで使用されたゲームオブライフに基づくアプリケーションを使用しています。以前に使用されていたMPIベースのGameofLifeの実装に加えて、現在私のクラスターで実行されているバージョンでは、関係する各ホストのセルの色が異なります。次のスクリプトは、グラフィカル出力を使用してアプリケーションをインタラクティブに起動します。
$ cat life.mpi
#!/bin/bash
module load gnu6 openmpi3
if [[ "$SLURM_PROCID" != "0" ]]; then
exit
fi
mpirun ./mpi_life -a -p -b
次のコマンドでジョブを開始します。このコマンドは、Slurmにジョブに8つのCPUを割り当てるように指示します。
$ srun -n 8 --x11 life.mpi
デモンストレーションの目的で、ジョブには、計算の現在の結果を示すグラフィカルインターフェイスがあります。
赤いセルの位置は一方の計算ノードで計算され、緑色のセルはもう一方の計算ノードで計算されます。また、Game of Lifeプログラムに、使用されているCPUごとにセルの色を変えるように指示することもできます(計算ノードごとに4つあります)。これにより、次の出力が得られます。
OpenHPCが提供するインストールレシピとソフトウェアパッケージのおかげで、HPCタイプの構成で2つの計算ノードと1つのマスターノードをセットアップすることができました。リソースマネージャーにジョブを送信でき、OpenHPCが提供するソフトウェアを使用して、すべてのRaspberryPisのCPUを使用してMPIアプリケーションを起動できます。
OpenHPCを使用してRaspberryPiクラスターを構築する方法の詳細については、1月26〜28日にチェコ共和国のブルノで開催されるDevConf.cz 2018と、2月2日に開催されるCentOSDojo2018でのAdrianReberの講演に参加してください。ブリュッセル。