インテルのベクトル化ツールキット: 5. GAP のアドバイスや他の提案を実装する

同カテゴリーの次の記事

インテル Parallel Universe 19 号日本語版の公開

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel Vectorization Toolkit: 5. Implement GAP Advice, Other Suggestions」の日本語参考訳です。


———————————————————-
ベクトル化の 6 ステップの手順へ戻る
———————————————————-

インテルのベクトル化ツールキット: ステップ 5

GAP のアドバイスや他の提案 (SIMD 対応関数や配列表記の利用) を実装します。

ループに対して GAP レポートを取得できました。可能であれば提案を実装します。

アドバイスにはコードの変更も含まれます。コードを変更する場合は、コードを変更しても「安全」であること、つまり、ループのセマンティクスや安全性に影響がないことを確認します。依存性がないことを保証する 1 つの方法は、ループを逆に実行したときに結果が変わるかどうかをチェックすることです。ランダムな順序でループを実行したときの結果を確認するのも 1 つの方法です。結果が変わればループ反復には依存性があり、ベクトル化は “安全” ではありません。依存性を排除することで、ベクトル化できる可能性があります。

ソースを変更して、適切なベクトル化が行われるように、コンパイラーに情報を知らせるか、ループを最適化します。

例 (ステップ 4 のコード)

ベクトル化されました!!

ループをベクトル化することが決まっているとしても、GAP レポートは次のいずれかの方法を推奨するかもしれません。詳しい情報は各トピックのリンク先をご覧ください。

C/C++
インテル® Cilk™ Plus
開発者が管理するベクトル化 (Pragma SIMD)
配列表記
SIMD 対応関数 (以前は要素関数と呼ばれていました)

Fortran
DO CONCURRENT
cDEC$ SIMD

——————————–
このステップでのその他の参考資料
——————————–

ウェビナー:

インテル® Cilk™ Plus の配列表記/SIMD 対応関数を使用してデータを並列に操作
(iSUS へ会員登録後、限定コンテンツの iSUS カンファレンス「並列化ゾーン」でご覧いただけます)

インテル® C++ Composer XE を使用して、最大限にコードをベクトル化してアプリケーションのパフォーマンスを改善
(iSUS オンライントレーニングのインテル® コンパイラー入門をご覧ください)

ホワイトペーパー:

インテル C++ コンパイラーによるベクトル化へのガイドの 7 章と 8 章 (GAP のアドバイスを適用) を参照

インテル® Cilk™ Plus の SIMD 対応関数を使用する

浮動小数点計算の一貫性とさまざまな最適化の影響

インテル® Xeon® プロセッサーとインテル® Xeon Phi™ コプロセッサーの浮動小数点演算の違い

コンパイラーを評価する: インテル® ソフトウェア製品の評価版を入手

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

関連記事

  • マルチスレッド開発ガイド: 4.6 インテル® Parallel Composer を利用して並列コードを開発するマルチスレッド開発ガイド: 4.6 インテル® Parallel Composer を利用して並列コードを開発する コードの並列化にはさまざまな手法があります。この記事では、インテル® Parallel Composer で利用可能な手法の概要を説明し、各手法の主な長所を比較します。インテル® Parallel Composer は Windows* 上の C/C++ を使用した開発のみを対象としていますが、これらの手法の多くは Fortran や […]
  • データとコードの並べ替え: 最適化とメモリー – パート 2データとコードの並べ替え: 最適化とメモリー – パート 2 この記事は、インテル® デベロッパー・ゾーンに公開されている「Putting Your Data and Code in Order: Data and layout - Part 2」の日本語参考訳です。 この記事の PDF 版はこちらからご利用になれます。 パフォーマンスとメモリーに関するこのシリーズ (全 2 […]
  • コードの現代化を成功に導く 3 つのアドバイスコードの現代化を成功に導く 3 つのアドバイス この記事は、インテル® デベロッパー・ゾーンに公開されている「Three Pieces of Advice for Code Modernization Success」の日本語参考訳です。 プログラムを高速化するための開発者への 3 つのアドバイスについてブログの執筆依頼を受けたとき、最初に思い浮かんだのは […]
  • 2016 年春のインテル® ソフトウェア製品技術ウェビナーシリーズ2016 年春のインテル® ソフトウェア製品技術ウェビナーシリーズ 無料のインテル® ソフトウェア製品技術ウェビナーシリーズ 2016 年春のインテル® ソフトウェア製品技術ウェビナーが開催されます。インテルのソフトウェア・エクスパートによるヒントやコツを、アプリケーション・パフォーマンスの向上とワークロードの合理化にお役立てください。3 月 16 […]
  • プログラマーの生産性を高めるプログラマーの生産性を高める この記事は、インテル® デベロッパー・ゾーンに公開されている「Making programmers more productive」の日本語参考訳です。 EMEA で開催された、今年のインテル® ソフトウェア・カンファレンスの 1 つのテーマは、プログラマーの生産性でした。4 […]