「スパコンを作ってみよう!」と言っても、そう簡単に作れるものではないだろう。
と思っていたら、こんな本が出ていたので、当然入手した。
書 名:Raspberry Pi でスーパーコンピュータを作ろう!
原 題:Build Supercomputers with Raspberry Pi 3
著 者:Carlos R. Morrison
訳 者:齊藤 哲哉
発行日:2018年8月25日
体 裁:B5・196頁
定 価:2500円+税
出版社:共立出版
ISBN-13 : 978-4320124370
本書は、ラズパイ3を8台つないだ場合の並列処理について書かれている。今はラズパイ4が一般的なので、本書を参考に、ラズパイ4を8台繋いでスパコンを作ってみた。
今は半導体不足もあって、ラズパイを入手するのはかなり困難か、かなり高い価格で売っているのをやむを得ず買うことになると思うが、この本を入手したのは2021年の春で、調布オフィスから徒歩2mの距離にある電子パーツ屋(マルツエレック)西東京営業所)でラズパイを少しずつ買い足していたのだが、2021年夏には品薄になったので、急いで8台を集めた。メモリはそれなりに搭載されていれば十分だろうと標準的な4GBタイプで集めていたのだが、最後は入手困難になったので、8GBタイプで間に合わせた。
書籍はプログラミング言語Cでの説明だったが、今はPythonが流行っているので、Raspberry Pi を複数台繋いでPythonで何か試してみよう。並列処理を制御するのは難しいと感じるだろうが、今はMPIという方法があり、並列処理特有の面倒な部分はMPIが対応してくれるので、ほぼ実行したいアプリケーションのことだけ考えれば済む楽な時代になっている。MPIについては、次回以降でじっくりと説明する予定である。
さて、ラズパイを入手したら、それらを繋がないといけない。LANケーブル用のコネクタが挿せるようになっているので、安いLANケーブル(ダイソー、定価100円+税)で繋いでみた。とりあえずラズパイスパコン実験で、台数も少ないので、それほど信頼性はいらないだろうというので安く済ませたが、今の所全く問題なし。
OSは、ネット上に用意されているので、これをダウンロードしてmicroSDに書き込んで使う。しかし、どれも同じOSなので、ダウンロードは1回だけで、あとはmicroSDのコピーを利用すれば簡単である。最新のRasbian(Raspberry Pi のOS)なら、自身のmicroSD内容を別のmicroSDに複製することができるようになったので、とても便利である。
microSDの容量は8GBもあれば十分なのだが、16GB、32GBになっても値段がほとんど変わらないので、32GBで揃えてしまった。ビデオ撮影などでは高速なmicroSDが必要だが、普通に使う分には、安い低速なもので十分。
ラズパイには専用ケースもあり、最初はケースに入れた状態のままLANケーブルで繋いで実験していたのだが、発熱の問題などもあり、結局ケースを使わず直接スペーサーで繋ぎ、冷却は西友で入手したアイリスオオヤマのサーキュレーターで、スパコンとスパコンの電源に風を送って冷ますことにした。本当のスパコンなら水冷とか液浸、油浸とかだろうけれど、ラズパイはそこまで発熱しない。そのぶん、速度はパソコンより1桁遅い。
ラズパイの基板間は30mmとし、短い足は半分の15mmとした。丸い薄いプラスチック形状のものがワッシャーで、これを間に挟みつつ積み上げていった。一般的には、ネジの太さは3mmのものが多数売られているのだが、ラズパイの穴に合わせて、2.6mmを選んだ。写真の右下のスペーサーが3mmのネジで、他より太いのが分かるだろう。
次々と重ねて締めていくのだが、工具の都合も考えないと、組み立て困難になる。多数を重ねてスペーサーで繋ぐ時、上から順に組み立てるのと、下から順に組み立てるのとでは、どう違うかしっかり考えてから始めよう。まあ、失敗したら、やり直せば良いだけだが。
電源はUSB電源で、コネクタはType-Cになっている。ラズパイ用の電源用アダプタは大きくて邪魔になるし、お値段も安くないので、これもダイソーで購入してきた。1つのアダプタから2台に電源供給も可能なようなのだが、電圧が下がりそうなことと、それぞれのラズパイに対応してテーブルタップのスイッチで電源のON/OFFができる方が便利と考えてこうなった。USBの口が多数あるUSB電源装置もあるが、高くなるので止めた。
電源ケーブル以外に、キーボード、マウス、HDMIディスプレイケーブルなどが必要になる。これらは、ラズパイの台数分揃える必要はなく、それぞれ1つあれば十分である。
写真は3種類のHDMIケーブルであるが、左からmicroHDMI,miniHDMI,HDMIである。
ラズパイ4には、microHDMIが2口ついている。つまり、小さなコンピュータであるが、HDMIのディスプレイを2台つなげられる。マルチディスプレイ対応なのだ。
microHDMIはとても小さく、抜けやすい。とくに、ラズパイをケースに入れた場合にはmicroHDMIは非常に抜けやすくなっていまう。その対策として、しっかり固定するのではなく、HDMIケーブルを使わなくても済ませる方法を用いた。これも、後で説明しよう。
キーボードやマウスについても、繋がないで済ませる方法を用いた。といっても、ネットにつながるまでは繋いで行うしかないのだが、基本的なセットアップが終わったら、あとは全部ネット経由で作業したいところ。
ラズパイ8台のうち、1台をマスターマシン、その他をワーカーマシン(※)とした。microSDカードの内容は、マスターとワーカーで若干異なるのでそれぞれ1枚のmicorSDカードで設定し、その他のワーカーは、ワーカーのmicroSDカードをコピーして、マシン名、IPアドレスなど違えないといけない部分だけを変更することで、microSDカードの準備が早く済む。
※最初に紹介した本では、マスター/スレーブとなっていたが、最近はスレーブの代わりにワーカーを使うことが多いので、この記事でもマスター/ワーカーを使うことにした。意味はまったく同じである。書籍などでのこの種の説明ではまだスレーブと書かれたものが多いが、読み替えよう。
ラズパイスパコンは楽しそうというので作っただけでなく、実際に高性能なコンピュータを数台繋いで並列処理を行うための事前実験であった。それは、アスクルの物流センター在庫配置最適化で、並列処理にすることで、安定して良い結果が出せた。いきなり並列処理の実装をやっても動いたとは思うが、ラズパイスパコンをイジっていたので、不安なく実装・テストを行うことができた。
構成を図示すると、次のようになっている。8台接続した図はぐちゃぐちゃするので、4台構成の図にしてある。
ということで、次から分散並列処理についての説明を始めようと思う。そして、上の構成図も、もっとソフト寄りの構成図を次回に示す予定だ。