Knights Corner: オープンソースのソフトウェア・スタック

同カテゴリーの次の記事

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

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

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


Knights Corner マイクロアーキテクチャーのサポート」で述べたように、このオープンソースのソフトウェア・スタックは、組込み Linux*、最小限の修正が加えられた GCC、ドライバー・ソフトウェアで構成されます。GDB 用のパッケージも別に用意されています。intel.com/software/mic の記事中の、RESOURCES (including downloads) にあるリンクからダウンロードできます。

MPSS

このソフトウェア・スタックの正式名称は、「インテル® メニー・インテグレーテッド・コア (MIC) プラットフォーム・ソフトウェア・スタック」です。通常は、省略して MPSS と呼ばれます。MPSS は、2.6.34 Linux* カーネルに依存しており、64 ビット Red Hat* Enterprise 6.0、6.1、6.2、および SuSE* Linux* Enterprise Server (SLES) 11 SP1 の特定のバージョンでテストされています。スタックのビルドとインストール方法の詳細は、readme.txt ファイルに記載されています。

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

対称コミュニケーション・インターフェイス (SCIF) は RPM バンドルに含まれています。SCIF は、単一プラットフォーム内のノード間コミュニケーション用のメカニズムを提供します。SCIF では、ノードは Knights Corner デバイスまたはインテル® Xeon® プロセッサーのいずれかとして定義されます。SCIF は、PCI Express バス上の通信の詳細な内容の抽出に特化しています。SCIF API は、ユーザーベース (uSCIF) およびカーネル空間 (kSCIF) の両方から呼び出すことができます。

最初に MPSS を実装する際に私たちはいくつかのことを学びました。どのようにインテル® MIC アーキテクチャーをサポートすべきか、アップストリーム・プロジェクトで議論されることを楽しみにしています。今回リリースしたコードは、コミュニティーから「代表的なベンダーコード」であるという評価を受けるに値するものですが、今後もアップグレードを続けていきます。もちろん、現在のコードで確認を行うことは推奨しませんが、機能は十分に使用できます。実際、このコードはプロトタイプ・マシンやプリプロダクション・マシンで長い間使用されていたものです。環境のテストとビルドをより簡単に行えるように、ビルドシステムには Yocto を利用する予定です。

GCC: 基本となるツール

Knights Ferry プロトタイプまたは Knights Corner コプロセッサー対応のドライバーを含む、コプロセッサーの Linux* 環境をビルドできるように、私たちは GCC ツールに変更を加えました。この変更には、Knights Corner ベクトル命令と関連する最適化機能のサポートは含まれていません。Knights Corner 対応 GCC は、カーネルと関連ツールのビルド用に提供されています。アプリケーションのビルド用ではありません。

GCC を使用して Knights Corner 対応のアプリケーション をビルドすると、現時点では新しい Knights Corner ベクトル命令によるベクトル化ができないため、パフォーマンスの低いコードが生成されてしまいます。Knights Corner ベクトル命令を完全に利用できるようにするには、これらの命令のマスキング機能を利用するように GCC ベクトライザーを変更する必要があります。コード・ジェネレーターを変更する場合とは異なり、GCC コミュニティーで広範囲な議論が必要となるでしょう。

GCC では、現時点でオフロード宣言子もサポートされていません。インテル® コンパイラーはオフロード言語拡張 (LEO) に対応していますが、OpenACC でもコプロセッサーに対応したより柔軟な LEO オフロードモデルが採用されるように働きかけています。インテルは、こういった組み合わせが一般に適用可能か、OpenMP* に統合可能か、(OpenMP* コードをオフロードする機能を含めて) OpenMP* と完全な互換性があるかを OpenMP* 委員会に調査を依頼しています。結果に問題がなければ、GCC の OpenMP* サポートを拡張すべきか確認したことが意味をなすことになります。その後、これらの機能の GCC への追加について議論し支援するため、GCC コミュニティーと協力して取り組むことになります。

GDB: C/C++ 開発者は利用可能

オフロード言語拡張 (LEO) が使用されている場合を除き、C/C++ アプリケーションのデバッグには GDB が最適です。しかし、Fortran アプリケーションのデバッグとオフロードを使用したプログラムのデバッグには、インテル® デバッガーが適しています。Fortran とオフロードのデバッグに対応するため、GDB コミュニティーと協力して GDB の拡張を行っています。

Knights Corner の Linux* サポート

Linux* カーネルの変更は、主に以下の 3 つの理由によるものです。

  1. インテル® Pentium® プロセッサーのコアの組み合わせと Knights Corner ベクトル命令を含む 64 ビットをサポートするための多数の小変更。
  2. パワーマネージメント (オリジナルのインテル® Pentium® プロセッサーでは未対応の機能)。1 つのダイに 50 以上のコアを搭載する場合、パワーマネージメントは非常に重要になります。
  3. Knights Corner マシン・チェック・アーキテクチャー (オリジナルのインテル® Pentium® プロセッサーでは未対応の機能)。

今後の作業にぜひご協力ください!

今回リリースしたコードは、オープンソースのコミュニティー・メンバーから「代表的なベンダーコード」であるという評価を受けています。通常のコミュニティーのレビュー、フィードバック、支援プロセスを経て、これらの概念がオープンソースのプロジェクトに採用されるように、コミュニティーと一緒に取り組むことを楽しみにしています。そのまま利用可能なコードもありますが、最初の実装には含まれなかった標準的な手法を利用するには、多少修正が必要なコードや書き直 しが必要なコードがまだあります。同じことが、カーネルの変更、ドライバー、GCC と GDB の修正にも当てはまります。

オープンソースのソフトウェア・スタックを SMP オンチップで実行することは非常に魅力的なことです。インテル® メニー・インテグレーテッド・コア (MIC) アーキテクチャー・フォーラム (英語) へのご参加をお待ちしています。無限の可能性をともに切り拓いていきましょう。

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

関連記事