Knights Corner マイクロアーキテクチャーのサポート

同カテゴリーの次の記事

MPI と OpenMP* の併用によりハードウェアを活用する

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Knights Corner micro-architecture support」の日本語参考訳です。

2012年6月18日に、Knights Coner の正式名称が発表されました。インテル® Xeon® Phi™ コプロセッサーが製品名となります。アーキテクチャーについては、インテル® メニー・インテグレーテッド・コア(MIC)という名称が引き続き使用されます。


「ハイパフォーマンス SMP オンチップ」という言葉から何を思い浮かべますか? ようやく、そのハイパフォーマンス SMP オンチップである Knights Corner についてのビジョンと、そのソフトウェア・アーキテクチャーおよび機能について皆さんにお知らせできるようになりました。非常に多くの情報があるため、この記事では概要を、「Knights Corner: オープンソースのソフトウェア・スタック」ではソフトウェア・スタックについて説明します。

現在、試作品の Knights Corner コプロセッサー用のソフトウェア・スタックおよび低水準プログラミングに関するドキュメントが提供されています。これらのドキュメントは、プリプロダクション・システムを利用できるソフトウェア開発者にとって非常に役立つことでしょう。

Linux* を実行する Knights Corner は、柔軟で使い慣れた環境を提供します。多くの人は Knights Corner で動作するソフトウェアを使用したり、アプリケーションをビルドするだけでしょうが、操作環境を変更してテストする (そして改良を進める) ことに魅せられている人たちもいます。2011年 11 月の SC’11 における東京大学の石川 裕 教授チームのデモンストレーションには大いに感動したものです。彼らは、2012 年 6 月 17-20 日にドイツのハンブルクで開催される ISC で、「Development of a System Software Stack for Many-Core Based Supercomputers (メニーコアベースのスーパーコンピューター向けシステム・ソフトウェア・スタックの開発)」と題して講演を行う予定です。

Linux* とツール

このソフトウェア・スタックには、Knights Corner コプロセッサーで実行する組込み Linux* 環境のソースと Knights Corner コプロセッサーとホスト・プロセッサーを接続するドライバーコードが含まれています。また、このソフトウェア・スタックのビルド用に、最小限の修正を加えた GCC コンパイラーも含まれています。アプリケーションの開発をサポートするため、GDB にも対応しています。これらの取り組みは始まったばかりです。

インテル® Parallel Studio XE とインテル® Cluster Studio XE の Linux* 版も、Knights Corner コプロセッサーのサポートを含む、公開フィールドテストに入っています。ハイパフォーマンスで使い慣れたこれらのツールは、ターゲットとして Knights Corner をサポートします。新しいツールや別の製品を購入する必要はありません。多くのベンダー (http://software.intel.com/en-us/blogs/2011/11/17/early-announcements-of-tools-for-knights-corner-mic-architecture/) も、自社の製品で Knights Corner をサポートするために取り組んでいます。

低水準プログラミングのドキュメント

『Knights Corner 低水準プログラミング・ドキュメント』(英語) には、『Knights Corner Instruction Set Reference Manual』、ABI ドキュメント『System V Application Binary Interface K1OM Architecture Processor Supplement』、『Knights Corner Performance Monitoring Units』が含まれます。これらのドキュメントはツールおよびライブラリー開発者向けに記述されたものですが、すべての開発者にとって有用な情報が含まれています。特に、Knights Corner のベクトル機能と、インテル® VTune Amplifier XE のようなツールで使用されるパフォーマンス・モニタリング機能の説明は役立つでしょう。

Knights Corner: 電力効率と高度な並列ワークロードに焦点を当てて最適化された、高度にプログラム可能なコプロセッサー

インテル® MIC アーキテクチャーは、電力効率と高度な並列ワークロードに焦点を当てて最適化された、プログラム可能な SMP システムを提供することを目標として設計されました。Knights Corner は、このアーキテクチャーを採用し、このビジョンを実現した最初の製品です。SMP オンチップとして提供され、次のような特長を備えています。

  • 小さくシンプルなマイクロアーキテクチャーを採用しています。スケーリングが容易になり消費電力が低下するというメリットが得られます。64 ビットをサポートするようにインテル® Pentium® プロセッサーの設計を拡張し、いくつかの命令 (CPUID など) を追加しました。詳細は、『Knights Corner Instruction Set Reference Manual』の「Appendix B」を参照してください。
  • 高度なデータ並列化のために、ほかのインテル® プロセッサーにはない、Knights Corner ベクトル機能を追加しました。
  • ハイパフォーマンスなオンチップ・インターコネクト・デザインにより多くのコアを接続しています。
  • Knights Corner は PCIe バスに追加装着するコプロセッサーとして設計されており、システムをブートするためのホスト・プロセッサーが必要です。

Linux*、64 ビット、インテル® Pentium® プロセッサーから派生したコアの組み合わせであるため、Knights Corner は以前のインテル® プロセッサーとの完全なバイナリー互換性がないことを意味します。そのため、提供されるコードには次のような注意事項が含まれています。

「免責事項: これらのモジュールに含まれているコードは、特定のインテル® ソフトウェア開発プラットフォーム (開発コード名: Knights Ferry) およびインテル製品 (開発コード名: Knights Corner) 固有のもので、ほかのインテル製品との後方互換性はありません。また、インテルは将来の製品でこれらのコードあるいは命令セットをサポートすることを保証しません。」

この注意事項は主に低水準のツールベンダーを対象としたものです。インテルのツール、GCC、ほかのベンダー (http://software.intel.com/en-us/blogs/2011/11/17/early-announcements-of-tools-for-knights-corner-mic-architecture/) のツールは、命令セット・アーキテクチャー (ISA) およびアプリケーション・バイナリー・インターフェイス (ISA) のドキュメントに従って Knights Corner をサポートします。そのため、ほとんどの開発者はアプリケーションを完全に移植可能なレベルでプログラムすることができます。

高水準言語 (C、C++、Fortran、その他) で記述されたプログラムは、ISA や ABI が異なる場合でも容易に移植可能です。プログラミングの労力は、ベクトル化とスケーリングによって高度な並列化を実現することに集中されるでしょう。ベクトル化 には Knights Corner のベクトル命令を使用し、スケーリング には 50 を超えるコアを使用します。つまり、複数の CPU ベースの、高度に並列化された SMP システムを使用する最適化を行うことになります。この最適化は、これまで使い慣れたプログラミング・モデルを利用して十分に達成可能です。

1 回の最適化で 2 つの効果

Knights Corner 向けのアプリケーション開発において重要な点は、インテル® Xeon® プロセッサー向けのアプリケーションと同じく、スケーリングとベクトル化です。具体的には、スケーリングの手法 (OpenMPMPIインテル® TBB、その他) と、ベクトル化の手法 (コンパイラー・オプション、プラグマ、インテル® Cilk™ Plus、その他) を選択してチューニングを行います。

一般に、インテル® MIC アーキテクチャー・ベースのマシン向けのチューニングを行うと、インテル® Xeon® プロセッサーのパフォーマンスも同様に向上します。「1 回のチューニングが 2 度役に立つ」ということは、最適なスケーリングとベクトル化が行われるようにプログラムをチューニングするモチベーションが 2 倍になります。最適化に取り組むときに、その最適化が広く適用可能であることは大きな利点といえます。

Linux* をブートできる強力なコプロセッサー

Knights Corner はコプロセッサーであるため、システム全体をブートしてコプロセッサーに指示を行う「ホスト」プロセッサーとともにシステムに含まれます。これはアーキテクチャー上の特徴ではなく、製品の設計によるものです。

SMP オンチップであるため、オペレーティング・システムの観点から Knights Corner は組込みシステムであると見なすことができます。そのため、Knights Corner は、組込み Linux* カーネルをブートして実行し、ホストシステムと組込みシステムの両方でドライバーを制御するソフトウェアを利用して、システムに接続されます。

オープンソース・コンポーネントの更新点は、SMP オンチップの初期化と制御を行う命令セット、ABI (Application Binary Interface)、およびコプロセッサーとホストシステム間の通信を支援する周辺ソフトウェアのサポートです。

Knights Corner 用の Linux*、GCC および GDB についての詳細は、「Knights Corner: オープンソースのソフトウェア・スタック」をご覧ください。

最新情報

ソフトウェア・スタックおよび Knights Corner のドキュメントについての最新情報は、インテル® メニー・インテグレーテッド・コア (MIC) アーキテクチャー・フォーラム (英語) でご覧になれます。このフォーラムで並列コンピューティングの将来について皆さんと語り合えることを楽しみにしています。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事