• 検索結果がありません。

時代とともに進化し、 CPU に追加されてきた SIMD 命令セット

ドキュメント内 インテル(R) Visual Fortran Composer XE (ページ 38-70)

主な機能 命令セット名

1999 70

命令、単精度ベクトル、ストリーミング操作 SSE

2000 144

命令、倍精度ベクトル、

8/16/32/64/128

ビット整数

ベクトル SSE2

2004 13

命令、複素数データ SSE3

2006 32

命令、デコード SSSE3

2007 47

命令、ビデオ・アクセラレータ、グラフィック操作、

高度なベクトル命令 SSE4.1

2009 7

命令、パックド比較とポピュレーション・カウント命令 SSE4.2

2011 12

命令、浮動小数点数オペランドを

256

ビット幅に拡張

いくつかの命令は3オペランドを持つ AVX

4

世代

Core

プロセッサーファミリー(開発コード名

Haswell

AVX2, FMA

Fused Multiply-Add

2013

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

39

インテル ® AVX の利点

AVX 命令 256 ビット( YMM レジスタ)

8x float(32-bit) 4x double (64-bit)

4x float(32-bit)

SSE 命令

128 ビット( XMM レジスタ)

2x double(64-bit)

4x float(32-bit) 2x double(64-bit)

l SIMD

演算用のレジスタ幅が

256bit

になり、浮動小数点数の演算効率が倍に

インテル

®

コンパイラーでは、ベクトル化可能なコードであれば、コンパイル

オプションを変更して再コンパイルするのみで AVX を利用可能

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

40

自動ベクトル化(オプション一覧)

n

インテル

®

プロセッサー専用コード+汎用コードの生成オプション

  Windows: /Qax<Code>   例) /QaxSSSE3 

/QaxSSE3,AVX

 

専用コードの生成が有益であると判断された場合、専用コードのパスと

  自動ディスパッチャーが追加され、実行されるコードがランタイムで決定される  

汎用コードのデフォルトは /arch:SSE2 (Windows) と等価

 

汎用コードは /arch または /Qx (Windows) で指定したコードとなる

-O2

以上の最適化 オプションが必須

n

インテルおよびインテル互換プロセッサー用オプション

  Windows: /arch:<Code>   例) /arch:SSE2

 

実行時に CPU をチェックしない

n

インテル

®

プロセッサー専用オプション

  

Windows

/Qx<Code>

  例)

/QxAVX

 

インテル® プロセッサーに固有の最適化が有効になる

 

実行時に

CPU

をチェックし、サポート外

CPU

上では動作しない

<Code> : SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX CORE-AVX-I CORE-AVX2

Ø /QxHost

コンパイルを実行しているマシン

に適したコードを生成

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

41

自動ベクトル化(コンパイル例−その1)

デフォルトオプション:

/arch:SSE2

Windows

O2

以上の最適化オプションが使用された場合は暗黙的にオンとなる。

Windows

> ifort main.f90

Windows

> ifort /QxSSE4.2 main.f90

Windows

> ifort /QaxSSE4.2 main.f90

/O2 オプションがデフォルトなので、/arch:SSE2

のコードが生成される。

SSE4.2 命令に特化された、インテル® プロセッサー専用コードが生成される。

SSE4.2

命令が搭載されていないプロセッサーでは動作しない。

コンパイラーが SSE4.2 コードの生成を有益と見なした場合、SSE4.2 コード

と汎用コードとして /arch:SSE2 コードが生成される。そうでない場合は、汎

用コードのみを生成。

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

42

自動ベクトル化(コンパイル例−その2)

Windows

> ifort /QaxAVX /QxSSE4.1 main.f90

Windows

> ifort /QaxAVX /arch:SSE3 main.f90

Windows

> ifort /QaxAVX,SSE4.1 /arch:SSE3 main.f90

コンパイラーが AVX コードの生成を有益と見なした場合、AVX コードと汎用 コードとして /QxSSE4.1 コードが生成される。そうでない場合は、汎用コー ドのみを生成。

コンパイラーが AVX コードの生成を有益と見なした場合、AVX コードと汎用 コードとして /arch:SSE3 コードが生成される。そうでない場合は、汎用コー ドのみを生成。

コンパイラーが AVX や SSE4.1 コードの生成を有益と見なした場合、AVX や

SSE4.1

コードと汎用コードとして

/arch:SSE3

コードが生成される。そうでな

い場合は、汎用コードのみを生成。

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

43

自動ベクトル化(結果レポート)

オプション:

  /Qvec-report[n] n : 0 〜 6

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

44

自動ベクトル化(プロパティ ページ)

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

45

自動並列化

l コンパイラーがループ文に対して、マルチスレッドへの変換を 試みます。

l マルチスレッドを安全に実装でき、また効率的だと判断された 場合に適用される。

l 実装は、 OpenMP* の並列化モデルが使用される。

オプション: /Qparallel レポートオプション:

  /Qpar-report[n] n : 0 〜 3

 

※ n

は表示レベル、

3

が最も詳細なレポートを表示。

しきい値設定オプション:(効率性の診断レベル)

  /Qpar-threshold[n] n : 0 〜 100

 

※ n

の数字を小さくすれば並列化の可能性が高くなるが、逆にパフォーマンスが 落ちる可能性もある。

 

デフォルトのしきい値は最高レベルの

100

に設定され高い効率性を要求される。

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

46

自動並列化(プロパティ ページ)

47

〜 内容 〜

1. 製品概要

2. インストールについて 3. ビルドと開発環境

4. コマンドラインからのビルド手順

5. Visual Studio からのビルドおよび実行手順

6. Visual Studio からのデバッグ方法 7. 最適化オプションと使用方法

8. Compaq Visual Fortran からの移行に関して

9. Visual Studio ソースエディター拡張機能

10. 関連情報と参考資料のご紹介

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

48

Compaq* Visual Fortran との違い(その1)

Compaq : 単一ソースファイル内における、サブルーチン

および関数の引数チェック

Intel :複数のソースファイル間における、サブルーチン

および関数の引数チェック

Compaq* Visual Fortran

コンパイラーの動作に合わせる場合は、以下のインテル

®

Fortran

コンパイラーのオプションを 無効 にする。

オプション:

/warn:interfaces

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

49

Compaq* Visual Fortran との違い(その2)

Compaq :ローカル変数は静的変数扱い、ゼロ初期化

Intel :ローカル変数は自動変数扱い、初期値未定

Compaq* Visual Fortran

コンパイラーの動作に合わせる場合は、以下のインテル

®

Fortran

コンパイラーのオプションを 有効 にする。

オプション:

/Qsave /Qzero

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

50

Compaq* Visual Fortran との違い(その3)

Compaq :浮動小数点演算は、 ”X87” 命令を使用

Intel :浮動小数点演算は、 ”SSE” 命令を使用

Compaq* Visual Fortran

コンパイラーの動作に合わせる場合は、以下のインテル

®

Fortran

コンパイラーのオプションを 試して みる。 

浮動小数点モデル オプション:

/fp:source X87

命令の使用 オプション:

/arch:IA32

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

51

Compaq* Visual Fortran のプロジェクト変換

Compaq Visual Fortran 6.x プロジェクトから 

インテル ® Visual Fortran プロジェクトへの変換

ただし、この変換機能は

Microsoft* Visual Studio* 2010 Shell

では使用できない。

その場合は、新規にプロジェクトを作成する必要がある。

52

〜 内容 〜

1. 製品概要

2. インストールについて 3. ビルドと開発環境

4. コマンドラインからのビルド手順

5. Visual Studio からのビルドおよび実行手順

6. Visual Studio からのデバッグ方法 7. 最適化オプションと使用方法

8. Compaq Visual Fortran からの移行に関して

9. Visual Studio ソースエディター拡張機能

10. 関連情報と参考資料のご紹介

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

53

ソースコードの行番号表示

Visual Studio

メニューから

[

ツール

] > [

オプション

]

ソースコードの行番号表示

はこれをチェック

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

54

Visual Studio ソースエディタ拡張機能の有効化

Visual Studio

メニューから

[

ツール

] > [

オプション

]

True

に設定する。

データベースの無効化以外)

ここは

False

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

55

「定義へ移動」と「すべての参照の検索」

対象を右クリック

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

56

ブロック構文記述子のマッチング

IF … THEN … END IF

DO … END DO

の ブロック構文の記述子をクリックする とそれに対応した記述子がハイライト される。

Ctrl + ]

を押下すると、カーソルが

対応する記述子にジャンプする。

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

57

オブジェクト ブラウザー

Visual Studio

メニューから

[

表示

] > [

オブジェクト ブラウザー

]

プロジェクト内のすべてのプロシージャ をツリー表示する。

ダブルクリックしてそのプロシージャに

ジャンプする。

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

58

構文ひな型の挿入

コード内を右クリックして「スニペットの挿入」

挿入したい構文を選択

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

59

組み込み関数情報の表示

組み込み関数に続いて

”(”

を入力すると、

引数情報をポップアップ表示する。

組み込み関数の上にマウスを合わせると

関数情報をポップアップ表示する。

© 2014 XLsoft Corporation. *その他の社名、製品名などは、一般に各社の表示、商標または登録商標です

60

呼び出し先/呼び出し元情報の表示

① 対象の関数、サブルーチンを右ク リックして「

Call Browser

」を選択

② 表示内容を選択する

Show callers Graph

」・・・親関数表示

Show Call Graph

」・・・子関数表示

③ こちらに選択内容が

表示される

ドキュメント内 インテル(R) Visual Fortran Composer XE (ページ 38-70)

関連したドキュメント