HPC 30年史:ハードウェアの大幅な進化に対し、新しいプログラミング言語の採用は停滞している
この記事は、過去30年間の高性能計算(HPC)領域におけるハードウェアの著しい進化と、それに対比してChapel、Rust、Juluaなどの新しいプログラミング言語がほとんど採用されていない現象を考察しています。HPC分野では処理能力やメモリが飛躍的に向上してきたにもかかわらず...
この記事は、過去30年間の高性能計算(HPC)領域におけるハードウェアの著しい進化と、それに対比してChapel、Rust、Juluaなどの新しいプログラミング言語がほとんど採用されていない現象を考察しています。HPC分野では処理能力やメモリが飛躍的に向上してきたにもかかわらず、開発者はいまだにC/C++や、さらには古い言語を使用し続けている実態があります。
その理由としては、新言語が実際のHPCの課題を解決していないこと、並列処理の理論と実装のギャップの大きさ、メモリ帯域幅がボトルネックである現実があり、最適なコードは単一スレッドで書かれることが多いという技術的課題があります。さらに実務的には、Python、R、Perl、awkといった従来言語が使い続けられており、大規模な分散計算より単一の大型マシンが好まれる傾向にあります。
開発者育成の観点からも、C/C++エキスパートがOpenMPを学ぶことは容易ですが、Chapel等の新言語を習得した開発者を雇用することは困難です。この状況は、HPCの進歩とソフトウェア開発言語の選択肢の間に根本的なミスマッチが存在することを示唆しています。
HNコミュニティからは、新言語の実用性への懐疑と、実際のクラスター環境では従来言語と単一マシンソリューションが支配的であるという実務的現実が一致した見解として示されています。また、開発者の可用性と小規模用途への応用可能性が、新言語採用を阻む重要な要因として指摘されています。
「HPCの新言語が採用されない理由として、開発者を見つけやすさという要素が議論に欠けているという指摘があります。C/C++の開発者がOpenMPを習得することと比較して、Chapel言語の知識を持つ開発者を雇用することは著しく困難です。また、あるツールが小規模な用途でどれほど使いやすく興味深いかという『スケーリングダウン』の要因も、専用HPC言語の不利な点として考えられるべきです。」— @riffraff