インテル® Fortran コンパイラーの新しいベクトル化診断
この記事は、インテル® デベロッパー・ゾーンに掲載されている「New Vectorization Diagnostics starting from Intel® Fortran Compiler 15.0」(https://software.intel.com/en-us/articles/intel-fortran-15-vectorization-diagnostics) の日本語参考訳です。
インテル® C++ コンパイラーのベクトル化診断についてはこちらを参照してください。
以下は、インテル® Fortran コンパイラーによって生成されるベクトル化レポートの診断メッセージです。インテル® Fortran コンパイラーでベクトル化レポートを取得するには、オプション -qopt-report -qopt-report-phase=vec (Linux* および macOS*) または /Qopt-report /Qopt-report-phase:vec (Windows*) を使用します。
診断番号 |
診断の説明 |
診断 15552 (英語) | ループは "simd" でベクトル化されませんでした。 |
診断 15300 (英語) | ループがベクトル化されました。 |
診断 15304 (英語) | マルチバージョンのベクトル化できないループ・インスタンスです。 |
診断 15310 (英語) | ループはベクトル化されませんでした: 操作はベクトル化できません。 |
診断 15319 (英語) | ループはベクトル化されませんでした: novector ディレクティブが使用されています。 |
診断 15328 (英語) | ベクトル化のサポート: 不規則インデックス・ロードがエミュレートされました (変数 <a(index(i))>) |
診断 15331 (英語) | precise FP モデルがベクトル化を妨げています。 |
診断 15335 (英語) | ベクトル化は可能ですが非効率です |
診断 15316 (英語) | simd ループはベクトル化されませんでした: simd ループでのスカラー代入は許可されていません。private、lastprivate、または reduction 句の使用を検討してください。 |
診断 15340 (英語) | プラグマは以前の設定に置き換わります。 |
診断 15344 (英語) | ループはベクトル化されませんでした: ベクトル依存関係がベクトル化を妨げています。 |
診断 15346 (英語) | ベクトル依存関係: ANTI の依存関係が 行 x と行 x の間に仮定されました。 |
診断 15378 (英語) | xxxx はベクトル化されませんでした: /Qfreestanding オプションが整数除算/剰余のベクトル化を妨げています。 |
診断 15398 (英語) | ループはベクトル化されませんでした: ループは memset または memcpy に変換されました。 |
診断 15414 (英語) | ループはベクトル化されませんでした: 最適化後にループ本体が空になりました。 |
診断 15415 (英語) | ベクトル化のサポート: 集約 (gather) が生成されました (変数 a): 間接アクセス |
診断 15423 (英語) | ループの反復数が 1 です。 |
診断 15516 (英語) | ループはベクトル化されませんでした: 効率化のためベクトル長 x を選択しました。vectorlength 句を含むプラグマ/ディレクティブでオーバーライドされます。 |
診断 15517 (英語) | インライン・アセンブリーで EBX/RBX レジスターが使用されているため、このサブルーチンのループはベクトル化できません。 |
診断 15520 (英語) | ループはベクトル化されませんでした: 早期終了を含むループはベクトル化できません。 |
診断 15521 (英語) | ループはベクトル化されませんでした: ループを実行する前に反復数を計算できる式に置き換えてください。 |
診断 15522 (英語) | ループはベクトル化されませんでした: ループの制御フローが複雑すぎます。制御フローを単純化してください。 |
診断 15523 (英語) | ループはベクトル化されませんでした: ループを実行する前に反復数を計算できません。 |
診断 15524 (英語) | ループはベクトル化されませんでした: すべてのメモリー参照をアライメントされたベクトルロードにできなければ検索ループはベクトル化できません。 |
診断 15527 (英語) | ループはベクトル化されませんでした: xxxx への関数呼び出しはベクトル化できません。 |
診断 15529 (英語) | ループはベクトル化されませんでした: volatile 代入はベクトル化されませんでした。非 volatile 代入を使用してください。 |
診断 15532 (英語) | ループはベクトル化されませんでした: コンパイル時定数がループの最適化を妨げています。 |
診断 15534 (英語) | ループはベクトル化されませんでした: ループに算術 if または計算型 goto 文が含まれています。。if-else 文の使用を検討してください。 |
診断 15535 (英語) | xxxx はベクトル化されませんでした: ループに switch 文が含まれています。if-else 文の使用を検討してください。 |
診断 15537 (英語) | ループはベクトル化されませんでした: 暗黙の FP 例外モデルが、切り捨てまたは整数除算/剰余に必要な SVML ライブラリーの使用を妨げています。 |
診断 15541 (英語) | 外部ループは自動ベクトル化されませんでした: SIMD ディレクティブの使用を検討してください。 |
診断 15542 (英語) | ループはベクトル化されませんでした: 内部ループがすでにベクトル化されています。 |
診断 15543 (英語) | ループはベクトル化されませんでした: 関数の呼び出しを持つループは最適化の候補と見なされません。 |
診断 25463 (英語) | このルーチンの最適化はコンパイル時間を制限するためスキップされました。制限の変更を検討してください (-qoverride-limits)。 |
診断 25464 (英語) | 一部の最適化はコンパイル時間を制限するためスキップされました。制限の変更を検討してください (-qoverride-limits)。 |
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。