🍴

並列処理は最強の計算科学分野のひとつである、と思う

2024/05/03に公開

並列処理とは

並列処理とはその名の通り「並列」に「処理」すると言うことです。計算オーダが大きくていくら計算機があっても足りないなんてものに使われています。

並列計算の恩恵を受けて生きている

じつは皆さんの生活に欠かせない「天気予報」は今では気象の数値シミュレーションの結果を使っています。この気象の数値シミュレーションにはその時の最高性能のスーパーコンピュータを使用しており、並列処理はこの処理には欠かせない技術であることは知らない人もいるのではないかと思います。

並列処理の魅力

並列処理の魅力は、ひとつのプロセッサコアで1という時間がかかっていたものを1以下の作業時間で正確に終わらせられるところにあります。そのアプローチは様々あり、アルゴリズムの改良からアプローチしたり、単体の計算機性能を上げて処理速度を上げたりすることが挙げられます。

なぜ並列処理が最強なのか

なぜ私が並列処理が最強かと思っているかというと、並列処理をおこなうためには以下のようなコンピュータサイエンスの粋をあつめたものであるからだと思っているからです。

プロセッサ

プロセッサは勿論高速処理ができればできるほど良いです、一昔前はムーアの法則に則ってCPUコアの単体性能を上げることに注力していましたが、現在のCPUは1つのダイで複数の処理を一度におこなえるメニーコアプロセッサが主流になっています。このメニーコアプロセッサを自在に操る事ができるのが並列処理の醍醐味のひとつです。

メモリ

メモリも高速であれば高速であるだけ処理が早くなるのは自明です、それに加えて高性能なメモリにはECCなどのエラー訂正が含まれます。また、CPUに積まれているキャッシュメモリも容量が増えてきており、処理をより高速におこなえるようになりました。これも並列処理に寄与しています。

ネットワーク

ひとつのPCでは処理しきれなくなったら、こんどはPCをネットワークで束ねたPCクラスタが台頭してくるようになりました、PCクラスタは現在でも使用されている要素であり、スーパーコンピュータはPCクラスタの化け物であると言っても過言では無いです。その時に必要になってくるのは高速なネットワークです。高速なだけでなく、レイテンシの少ないネットワークが要求されます。そのための研究開発は日進月歩でおこなわれいています。勿論プロトコルも含めてです。

OS

じつは世界のスーパーコンピュータのOSはLinuxが主である事はあまり知られていないことであります。

https://top500.org/statistics/list/

ここで、CategoryでOperatinsg System Familyを選択してSubmitを押すとLinuxがいかに多くのスーパーコンピュータに搭載されているかがわります。OSの進化はスーパーコンピュータの進化にも繋がるのです。

ミドルウェア

ミドルウェアの世界に2つのデファクトスタンダードがあります。MPIとOpenMPです。
MPIはネットワークで束ねられたPCクラスタのPC間で上手く処理をするためのAPIの仕様の名称であり、OpenMPはそのPC内部でのメニーコアプロセッサ内で高速処理を実現するためのAPIの仕様の名称であます。各計算機ベンダーやコンパイラ作成者はこれら仕様をインプリメントしたものを提供しているわけです。
その使い方は私が以前投稿したとおりです。

https://zenn.dev/evakichi/articles/900720e2cbdb8b

https://zenn.dev/evakichi/articles/7d017a12742297

GPUの台頭

じゃぁGPGPUはどうなのよ?と言われれば勿論GPUは並列処理に大変寄与してきました。GPUをコンピューティングに応用しようと言い始めたのは私が学生だった頃なのでPCクラスタやメニーコアプロセッサほどは歴史がありませんが今や日常生活に欠かせなくなってきました。ChatGPT等に使用される学習にはGPUは必要不可欠であり今後もその必要性はなくならないでしょう。

・・・と挙げれば切りが無い様々な分野の技術が詰まっているのが並列処理の世界なのです。だから私は「並列処理は最強の計算科学分野のひとつである」と思っているのです。

並列処理を学ばない手はない

私が結局何を言いたいかというと今後の嗜みとして並列処理を学んでみてはいかがかと言いたかったのです。
プログラムの実行時間が短くなったら爽快ですよ。

Discussion