この記事は、Dr.Dobb’s Go Parallel に掲載されている「Welcome to the Parallel Jungle!」の日本語参考訳です。
編集注記:
本記事は、2012 年 6 月 29 日に公開されたものを、加筆・修正したものです。
この一連の記事の著者である Herb Sutter 氏は、早い時期からプロセッサーのマルチコア化がソフトウェア開発に及ぼす影響と、ソフトウェア開発者が考えるべき移行における課題を示していました。Sutter 氏による 「フリーランチは終わった」は、IT 業界での名語録にもなっています。この記事は、Sutter 氏が 2012 年の時点で「ムーアの法則」の終焉とそれを取り巻くソフトウェア開発の変化をまとめているものです。2020 年時点で読み返しても興味深い内容です。
このシリーズでは、モバイルデバイスからデスクトップ、クラスター、最高粒度のクラウドまで、並列化がもたらす影響について解説します。さまざまな並列化の実装が存在することによる混乱は、プログラミングにおける大きな挑戦をもたらしました。シリアル・プログラミングでフリーランチの恩恵を受ける時代はすでに終わりを迎えています。
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6
要約と結論
メインストリームのハードウェアは、並列、ヘテロジニアス、分散型へと変化しています。これらの変化は一時的なものではなく、我々がメインストリームのアーキテクチャー上でパフォーマンスを重視するコードを記述する方法にも永続的に影響します。
喜ぶべきニュースは、ムーアの「ローカルスケールイン」トランジスター鉱山はまだ掘りつくされてはいないということです。トランジスターの富鉱帯はまだ 10 年程度は引き続き採鉱可能なので、ムーアの法則の活用形 #2 を使用してデスクトップとポケットタブレットを同等にするための期間は十分残されています。悪いニュースは、トランジスター数の増加ペースが次第に減少し、収益逓減が起きているのが明らかなことです。プロセッサーの世代が新しくなるごとに、ソフトウェア開発者はより熱心に働かなければならず、チップの能力を引き出すのがますます難しくなります。また、収益逓減の車輪のクランクが新しくなるごとに、ハードウェア設計者とソフトウェア設計者が次のハードルを克服する方法を見つけ出す時間は短くなっています。主鉱脈のフリーランチは 30 年続きましたが、ホモジニアス・マルチコア時代は約 6 年で終了し、現在はすでにヘテロジニアス・コアとクラウドコアという次の 2 つの時代に入っています。
しかし、何も心配することはありません。現在の鉱山が空になりかけたら、パニックになることなく、新しい主鉱脈で新しい鉱山を開き、しばらく両方の鉱山を運営して、最初の鉱山が完全に空になり博物館と化したら、新しい鉱山から利益を上げれば良いのです。いつもそうであるように、今回も最も有力な波の終わりは次の有力な波の始まりと重なっています。現在我々は、2 つの波が重なった期間の初めにいて、ムーアの鉱山とクラウドの鉱山の両方の波で作業しているところです。おそらく、最高のニュースは、クラウドの波がすでにムーアの法則の波よりも速くスケーリングしており、今後も長く続く見込みがあることです。
まだクラウドに対応していないのであれば、今こそアプリケーションの設計をよく見直して、現在または近い将来に CPU の影響を受ける既存の機能を判断し (または非常に労力が必要になる新しい機能を想定し)、それらの機能でローカルおよび分散型並列処理をどのように活用できるか判断する時期でしょう。また、ヘテロジニアス並列化 (GPGPU など) やクラウド・プログラミング (Amazon Web Services*、Microsoft Azure*、Google App Engine* など) の要件、落とし穴、スタイル、特性を理解する時期でもあります。
現在のハードウェアで適切に動作し、将来のハードウェアでより速く適切に動作する、アプリケーションのフリーランチを今後も楽しむには、可変数の異なる種類 (ローカルコア、分散型コア、大きい/小さい/専用コア) のコアを活用するように表現された潜在的な並列処理を多く含むアプリケーションを記述する必要があります。スループットを向上させるには、余分なコスト (余分な開発労力、不要なコードの複雑さ、余分なテスト労力) がかかります。
良いニュースは、並列化により、多くのアプリケーションではこれらの余分なコストが有益になることです。残りのクラウドの採鉱を続けることで、ムーアの法則が終了する段階に入った後も長い間、計算スループットを引き続きより大きくより速く向上させることができるでしょう。
謝辞
Jeffrey Barr 氏、David Callahan 氏、Olivier Giroux 氏、Yossi Levanoni 氏、Henry Moreton 氏、James Reinders 氏には、背景情報に関する質問への回答、プロセッサー/メモリーのグラフへの適切なマッピングでご協力いただきました。ここに感謝の意を表します。