HPCを広めるためのキャッチフレーズを考えよう!!
HPCをご存じですか?
HPC(High Performance Computing)って皆さんご存じですか?
HPCのホットな話題になりやすいのは半年に一回流れるニュース
日本が誇るスーパーコンピュータ「富岳」のことではないでしょうか。
スーパーコンピュータは日本におけるHPCのハードウェアやソフトウェアの技術の粋を集めてできあがったものだと思っていただけたらと思います。
今、身近にあるHPC
身近なHPCは実は皆さんの使っているPCやスマホにあります。
昔のPCは1台のPCに1個のCPU、1個のCPUに1個の計算コアを搭載していたのですが、現在皆様がお使いのPCやスマホは1台のPCに1個のCPUは変わらないのですが、1個のCPUに複数の計算コアを搭載しているのが普通になりました。
しかし、普通の人があまりこれを実感することはないのです。その裏にはプログラマさんが徹底的にコアを有効活用するために努力をしているのは間違いなく、我々はその恩恵を日常的に無意識に受けているのです。
HPCに関する間違い
では、コアがたくさんあるなら、昔作ったプログラムを今のCPUの上でそのまま動かしたらCPUコアの分だけ速くなるか?と思ったら大間違いで、そこには「並列化」「高速化」というのが必要になってきます。
しかし、そのような解説をしていることはあまりありません。
実は、昔作ったプログラムを高速化するにはそれなりに努力が必要になります。
じゃぁ、どうしたら良いのか?
昔のプログラムを高速化するに対する2つの処方箋
たくさんのPCをまとめて使う分散メモリ型並列計算機
昔からある方法としては、n台のPCを同時に使って一台で実行していたときのn倍程度の実行速度を達成しようとする試みです。各PCにメモリが分散しているのでこの形式を「分散メモリ型並列計算機」と言います。分散メモリ型並列計算機で代表的なものはPCクラスタがあげられます。PC、いわゆる計算機(コンピュータ)同士を高速なネットワークで接続し、各PCを強調動作させながら一つの計算をおこなうことが目的です。今動いている富岳などのスーパーコンピュータはすべて計算機クラスタで構成されています。
この計算機クラスタ上でうまく計算させるためにはライブラリが存在していてそれが「MPI(Message Passing Interface)」です。詳しいことは別の機会にお話ししますが、各計算機同士の通信をうまくおこなうために提供されるものです。
1台のPCで高速計算を実現する共有メモリ型並列計算機
分散メモリ型と並んで紹介されるのは「共有メモリ型並列計算機」です。これはCPU内部で複数のコアを並列に動かし、PCに付いているメモリを複数のコアで協調して使用している方法です。一つのメモリを複数のコアで共有しているから「共有メモリ型」なのです。この共有メモリ型の並列計算機で効率の良い処理方法を実現するために提供されているライブラリが「OpenMP」です。このライブラリを使うと、スレッドというプロセスよりも軽快に動かせる処理方式を使って一つの計算を並列化して例えばn個のコアを持っているCPUなら最大でn個程度の高速化を目指します。
ナウなヤングにバカウケなGPGPU
もう一つ最近出てきたのが、ゲームなどをするときに使用しているGPUを汎用的に使って高速計算させる「GPGPU(General-Purpose computing on Graphics Processing Units)」です。GPUは画像を高速に処理するためのプロセッサコアをかなり多い数もっていて、その有効性に目をつけた人がGPUのプロセッサに適した問題を使って、通常時間のかかっていた処理を劇的に速くすることができました。その適した問題というのは最近流行のディープラーニングに代表される人工知能系の処理問題などです。これにはOpenACCやCUDAと呼ばれるソフトウェア技術が使用されています。
富岳にはGPUは搭載されていませんが近年のスーパーコンピュータはGPUを多く搭載することで実行速度を飛躍的に向上させることに成功しています。
そこで、キャッチフレーズを作ろう!!
はなしはだいぶそれましたが、HPCをもっと身近に感じてもらうために、キャッチフレーズを考えたいと思ったのがこのnoteに投稿するきっかけになっています。もうすこしHPCを皆さんに知ってもらうために頭を捻って、夜寝ないで昼寝して考えているのですが、決め手に欠けています。以下案です。なにか良いフレーズがないか日々精進です。
読み書きそろばんHPC
HPCを読み書きそろばんと並べるのはどうだろうと思って書いてみました。もっと呼吸をするがごとくHPCを身近に感じて欲しいのですが・・・。
散切り頭を叩いてみれば「スパコン・スパコン」と音がする
これもいまいち、意味わかんないし。
もっとこう、なんて言ったら良いか、HPCや並列処理が常用されるような世界観を表すキャッチフレーズがないものか。私は模索しております。
今回はここまで。