[Target System (ターゲットシステム)] で [Intel® Xeon Phi™ (インテル® Xeon Phi™)] または [Offload to Intel Xeon Phi (インテル® Xeon Phi™ へオフロード)] を選択すると、[Intel Xeon Phi Advanced Modeling (インテル® Xeon Phi™ 製品向けの高度なモデル化)] の [Runtime Modeling (ランタイムのモデル化)] エリアに追加のモデル化引数が表示されます。
後でベクトル並列実行を改善するため、並列コードの変更に同意する場合、[Consider Code Vectorization (コードのベクトル化を検討する)] を選択します。選択すると以下を指定できます。
リファレンス CPU のベクトル化スピードアップ を予測します。この値は、リファレンス CPU でベクトル化手法を使用することで得られるスピードアップ (倍数) を示します。ターゲットデバイスの特性とコード領域をどの程度、またどれくらい効率良くベクトル化できるかを基に予測します。
インテル® Xeon Phi™ のベクトル化のスピードアップ達成を予測します。この値は、インテル® Xeon Phi™ プロセッサーでベクトル化手法を使用することで得られるスピードアップ (倍数) を示します。ターゲットデバイスの特性とコード領域をどの程度、またどれくらい効率良くベクトル化できるかを基に予測します。
[Target System (ターゲットシステム)] で [Offload to Intel Xeon Phi (インテル® Xeon Phi™ へオフロード)] を選択すると、[Offload Transfer Data Size (オフロードデータ転送サイズ)] をオンにして予想されるデータ転送サイズを指定できます (KB 単位)。
場合によっては、コードを再構築してベクトル操作の効率を向上できます。ループのベクトル化により、ハードウェアは配列データの操作など小さなユニット (通常 64 バイト) で、データを独立して処理することが可能となります。
これは、単一のループに新たに外部ループを作成して、2 つのループが同じ反復空間を処理するように変更することで達成できます。ストリップマイニングと呼ばれる手法により、最内ループは小さなチャンクでベクトル操作を活用できます。
より効率良いベクトル操作を可能にする方法として、スレッド化がすでに行われている外部ループを調査し、最内ループや呼び出し先の関数のベクトル化を検討します。
最内のループは、OpenMP* 4.0 の構文から利益が得られる可能性があります。特定の条件下では、omp parallel for スレッド化プラグマと omp simd (または同等の) SIMD ベクトル化プラグマの両方を使用できます (コンパイラーのベクトル化レポートと、http://openmp.org (英語) の説明を参照)。
プロセッサーのマイクロアーキテクチャーにより、サポートされるベクトル命令のタイプとハードウェアが効率良く処理できるデータサイズが異なります。