クーの自由研究

マスターのかえるのクーは、弟子達の召喚術により新たな依り代を得てⅡ世として復活しました。

異種族結合レビュー報告

異種族間における交渉の成立およびその限界に関する中間報告書

井戸中 聖*1

Introduction

並列計算機において各ノード間のインターコネクションは年々高速化され、各ノードも高性能化かつコンパクト化されている。計算に使われるノードはできるだけその分散計算において、性能が均一化されることが要求され、統一規格化されたホモジニアスなアーキテクチャが採用される。

しかしながら、予算不足にあえぐ研究所では少しでも「そこにあるものを使って性能を高めないといけない逼迫した状況にあり」当「KooWells自由研究所」においてもその例に漏れない。

そこで、ヘテロジニアス/パラレル・アーキテクチャ(異種並列構造)を持つノードとして「Lunix」及び「Windows」混在での高速並列計を目指すこととする。また、その可能性と現時点での限界を明確にすることを趣旨とする。

Materials and methods

予算不足が深刻で、すぐには実機を調達できないため、Linux及びWindowsをそれぞれ2機(計4機)仮想環境で準備をして、その設定における実現性を試行した。

OSには以下を使用した。


  (1) Linux1号機 ubuntu 20.04 LTS

  (2) Linux2号機 CentOS Linux release 8.2.2004 (Core)

  (3) Windows1号機 Windows 10 Pro 1909

  (4) Windows2号機 Windows 10 Pro 1909


MPIソフトウェア、確認用ソフトウェアは以下を使用した


  (1) Intel MPI Library 2019 for Linux (Update 7)  2019.7.217

  (2) Intel Distribution for Python* (Linux) 2020.1.893

  (3) Intel MPI Library 2019 for Windows (Update 7) 2019.7.216

  (4) Intel Distribution for Python* (Windows) 2020.1.893


Python環境構築についてはpip/condaを一切使用せず、Intelのディストリビューションで準備された統一的な組み合わせ(etc. mklバージョンの統一など)のもと、検証を行った。

Windows機間ではHydraサービスによるノード間通信、Linux機間では公開鍵を交換設定した状態でのssh通信(パスワード認証なし)を行う。Windows機ではHydraサービスを起動するだけで済むが、Linux機間ではsshの特定の設定が必要となる。この設定方法・注意点については、本報告の趣旨から外れるため、別途報告する。

Windos機Linux機間ではどのような「異種族間ネゴシエーション(交渉)・コネクト(結合)」をするのか不明であったため相互間のssh認証登録をした。(sshの認証を公開鍵情報を交換することによりパスワードなし認証とした)

これらの環境設定を行ったうえ、所定の共通プログラムを各ノードで実行するコマンドにて動作検証をおこなった。

Results

・Windows機同士間では問題なくコネクト(結合)動作した。なお、Windows機間ではsshの相互認証設定をしなくても動作可能であり、(Windows間では)ssh通信を使用していないことが読み取れる。

・Linux機同士間で問題なくコネクト(結合)動作した。仮想環境上で動作させるため、仮想的な接続としてtcp/ipによるsshしか選択肢がなかった。実機ではInfinibandなどの高速インターコネクトができるので、Linux間通信については改めて性能検証を行う予定である。

・異種族ではLinux→Windows 、Winows→Linuxの両方を確認した。Linux、Windowsのどちらが受け側であってもコネクト(結合)は成立しなかった。


$ mpiexec -n 2 -host Atropos -hostos linux python MPI_TEST01.py
[mpiexec@Atropos] match_arg (../../../../../src/pm/i_hydra/libhydra/arg/hydra_arg.c:91): unrecognized argument hostos


これは発信、受信のどちらかに問題(プロトコル不一致や定義不整合)があるのではなく、そもそもマニュアルに記載されている異種族間結合のオプションが、現バージョンに存在しないことが判明した。


マニュアル記載内容

-hostos <host OS>

特定のホストにインストールされているオペレーティング・システムを指定します。MPI プロセスは、このオ プションの指示に従って各ホスト上で起動されます。デフォルト値は linux です。

引数

<arg> 文字列パラメーター。
linux ホストには Linux* がインストールされています。これは、デフォルト値です。
windows ホストには Windows* がインストールされています。

注意
このオプションは、–host オプションと組み合わせて使用されます。例えば、次のコマンドラインは、host1で a.exe を実行し、host2 で b.out を実行します。

$ mpiexec.hydra -n 1 -host host1 -hostos windows a.exe : -n 1 -host host2 -hostos linux ./a.out


本件についてはIntel社に問合せ中であるが、禁断のバイナリ・リバースを行っても、Windows側、Linux側ともに異種族結合オプション(-hostos)の実装がないことが判明している。

Discussion

異種族結合ができない本件については以下のように考える

・過去のIntel社のマニュアルから、異種族結合の機能は存在する。(オプションとコマンド例についてもLinix側、Windows側マニュアルにそれぞれ記載がある)そのため、マニュアルの記載誤り、実装漏れである可能性は低い。

・本オプション以外にも過去の実装がそれ以降・特定時点で除外されているケースが報告されている。( manページにはあるが、実際に指定してもオプションなしとなる機能が存在する。戦略的なインシデントか、技術的はそれかは推測の域を出ない。)

・本バージョンのみの状況を以て、問題ありとするには尚早と認識する。

よって、本レビュー報告はノードの異種族結合においての判断を保留とし、現在の状況を中間報告するものである。

 References

 1) Peter S. Pacheco、「MPI 並列プログラミング」、培風館、2001. 

 2) 青木幸也、「並列プログラミング虎の巻 MPI 版」、日本 IBM 株式会社、2001. 

 3) Clay Breshears、「並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング」、オライリー、2009. 

 4) Intel Corporation、「インテル® MPI ライブラリー for Linux* リファレンス・マニュアル」、Intel 、2019. 

 5) Intel Corporation、「インテル® MPI ライブラリー for Windows* リファレンス・マニュアル」、Intel 、2019. 

*1:KooWells自由研究所 主席補リサーチャー