インテル® MIC アーキテクチャー向けの最適化手法

同カテゴリーの次の記事

James Reinders とのインタビュー: 今後のインテル® MIC アーキテクチャー、並列プログラミング、教育について

この記事は、インテル® デベロッパー・ゾーンに公開されている「A Guide to Optimization Techniques for the Intel® MIC Architecture」の日本語参考訳です。


インテル® MIC アーキテクチャー向けの最適化手法シリーズ (全 3 部) は、Colfax Research により提供されています。このシリーズでは、インテルのマルチコア/メニーコア・アーキテクチャー (インテル® Xeon® プロセッサーおよびインテル® Xeon Phi™ プロセッサー) 向けアプリケーションの最適化に関するトピックを取り上げます。

その 1: マルチスレッドと並列リダクション

その 1 では、スレッド並列処理と競合状態に注目し、 OpenMP* の mutex を使用して競合状態を解決する方法を説明します。例では、座標に基づいて粒子をビニングするマイクロカーネルを構築して最適化します。この種のワークロードは、モンテカルロ・シミュレーション、素粒子物理学ソフトウェア、統計解析などのアプリケーションで使用されます。

ここで説明している最適化手法は、同じアーキテクチャーのシングルスレッド実装と比較して、24 コア CPU で 25 倍、インテル® MIC アーキテクチャーで最大 100 倍、パフォーマンスが向上します。

その 2: ベクトル化のストリップマイニング

その 2 では、データ並列処理に注目し、 コンパイラーによる自動ベクトル化について説明します。 例では、粒子をビニングするマイクロカーネルを構築して最適化します。この種のワークロードも、同様に、モンテカルロ・シミュレーション、素粒子物理学ソフトウェア、統計解析などのアプリケーションで使用されます。

ここで説明する最適化手法は、コードのベクトル化により、インテル® Xeon® プロセッサーのパフォーマンスを 1 桁以上高めます。ハイエンドのインテル® Xeon® プロセッサーと比較した場合のインテル® Xeon Phi™ コプロセッサーのパフォーマンスは、単精度で 1.4 倍、倍精度で 1.6 倍になります。

その 3: フォルス・シェアリングとパディング 

その 3 では、フォルス・シェアリングが発生する状況と、データコンテナーをパディングしてフォルス・シェアリングを排除する方法を説明します。 例では、座標に基づいて粒子をビニングするマイクロカーネルを構築して最適化します。フォルス・シェアリングの影響は並列アプリケーションのパフォーマンス損失と同程度であることが結果で示されます。インテル® Xeon® プロセッサーではフォルス・シェアリングを排除するために追加するパディングがインテル® Xeon Phi™ コプロセッサーよりも大きくなるため、実際のアプリケーションではターゲット固有のパディング値が使用されます。

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

関連記事