この記事は、インテル® デベロッパー・ゾーンに公開されている「Celebrating a Decade of Parallel Programming with Intel® Threading Building Blocks (Intel®TBB)」 (https://goparallel.sourceforge.net/using-lambda-functions-threading-building-blocks/) の日本語参考訳です。
インテル® スレッディング・ビルディング・ブロック (インテル® TBB) は、今年でリリースから 10 周年を迎えました。インテル® TBB がいつ始まり、どのように成長し、どのように開発者のニーズに応えてきたか、これまでの 10 年間を振り返る、ちょうどよいタイミングと言えるでしょう。
プロセッサーとコンピューターの世界は、過去 10 年で大きく変化しました。この 10 年間のプロセッサーの開発は、コア数を増やすことに注力されてきました。クロック速度の向上が限界を迎えたとき、個々のプロセッサーで複数のタスクを同時に実行できるように、コア数を増してパフォーマンスを向上するソリューションが導入されました。このソリューションでは、従来のクロック速度によりパフォーマンスを向上していた頃とは異なるアプローチが必要です。開発者は、複数のコアを利用してパフォーマンスが向上するようにコードの記述方法を変更する必要があります。
プロセッサーの複数のコアを効率的に利用するという課題に対する開発者の取り組みを支援するため、複数のソリューションが考案されました。これらのソリューションのほとんどは、並列プログラミングの作業が大変で、実装も困難でした。インテル® TBB は、タスクベースの並列処理を使用してスレッドを効率良く実装できる画期的なソリューションとして、2006 年の登場以来、絶え間なく進化を続け、飛躍的に成長してきました。現在では、教育機関、医療、金融、石油/ガス、ゲーム開発、生命科学、製造、クラウド・サービス・プロバイダーなど、さまざまな業種の C++ 並列プログラマーの間で最も支持されているスレッド・ライブラリーの 1 つとなっています。
始まり
インテル® TBB は、ループ・テンプレート、タスク・スケジューラー、およびメモリー割り当てによりタスクの並列化を支援する、単純な C++ テンプレート・ライブラリーとしてスタートしました。ほかのスレッド化パッケージと互換性があり、コンパイラーに依存しないため、あらゆるコンパイラーで使用することができます。
インテル® TBB は、構築されたソリューションに高い構成の容易性を保証するように設計されています。並列化されたアプリケーションやコンポーネントの構成の容易性は、ほかの並列化されたコンポーネントと同時に、またはその内部で実行した場合と同じレベルの効率を保ちます。特に、ワークスチール・アルゴリズムに基づくインテル® TBB スケジューラーは、計算中に利用可能なハードウェア・リソースが変化した場合でも、最適なハードウェア使用率を達成できます。入れ子の並列処理もシームレスにサポートします。
現在
インテル® TBB には、ロードバランス機能が備わっているため、プログラマーはシステムの負荷分散を心配する必要がありません。インテル® TBB は、C++11 ラムダ関数を利用して、機能的な並列プログラミングを記述できます。インテル® TBB は、マルチスレッドだけでなく、フローグラフ機能によりヘテロジニアス計算のサポートも強化しています (詳細はウェビナーを参照)。インテル® TBB 向けの Python* API もあります。Python* で効率的なスレッドのスケジュールを行い、Numpy*、Scipy* などと併用することでスレッドを高速化できます。インテル® TBB は、インテル® マス・カーネル・ライブラリー (インテル® MKL) のパフォーマンスの向上にも役立ちます。インテル® TBB によりスレッド化される関数でプロセッサー・コアに対するスレッド・アフィニティーを保証することにより、インテル® MKL のパフォーマンスを向上できます。
将来
商用の、汎用計算における並列処理の普及により、ムーアの法則は本質的に保たれています。ビッグデータ、マシンラーニング、IoT が発展するにつれて、並列処理はより主流かつ不可欠になるでしょう。インテル® TBB は、この 10 年間の計算環境の変化により生じた課題にも適切に対応してきました。永続的で一貫した進化が、インテル® TBB の本質と言えます。インテル® TBB は、今後も継続的に成長し、顧客の変化する要求に応えながら、同じ利点と価値を開発者に提供し続けることでしょう。
皆さんとインテル® TBB の次の 10 周年を迎えることを楽しみにしています。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。