入門チュートリアル: インテル® インテグレーテッド・パフォーマンス・プリミティブ 8.2 を使用したアプリケーションの最適化
このセクションは、さまざまな手法 (インテル® IPP と、インテル® TBB またはインテル® Cilk™ Plus) を使用して、シリアル・アプリケーションから並列アプリケーションにライフゲーム・アプリケーションを変換する方法を説明します。 シリアル・プロジェクトは、パフォーマンスのベースラインとなります。
次の手順に従って、シリアルおよびスレッド化バージョンのライフゲーム・アプリケーションをビルドします。
チュートリアルのディレクトリーでソリューション・ファイル Life.sln をダブルクリックし、Microsoft* Visual Studio* で開きます。
CheckSerialLife をスタートアップ・プロジェクトに設定します。
Life プロジェクトの Life.vb のコードを確認します。
IPPTBBLife および IPPCilkLife の呼び出しをコメントアウトします。
54 行目付近の SerialLife の呼び出しのコメントを外します。
68 行目付近の PictureBox1.Refresh() の呼び出しのコメントを外します。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
以下のような画面が表示されます。
タスク・マネージャーを起動して CPU 使用率を記録します。 この使用率には、アプリケーションの実行のほかに画像の表示に消費されている CPU サイクルが含まれています。
表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。
PictureBox1.Refresh() の呼び出しをコメントアウトします。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
タスク・マネージャーを起動して CPU 使用率を記録します。 これが CPU 使用率のベースラインです。
ベクトル化バージョンの作成:
CheckIPPTBBLife をスタートアップ・プロジェクトに設定します。
Life プロジェクトの Life.vb のコードを確認します。
48 行目付近の IPPTBBLife の呼び出しのコメントを外します。
PictureBox1.Refresh() の呼び出しのコメントを外します。
SerialLife および IPPCilkLife の呼び出しをコメントアウトします。
IPPTBBLife.cpp ファイルを開きます。
USE_TBB の定義をコメントアウトします。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
タスク・マネージャーを起動して CPU 使用率を記録します。 この使用率には、アプリケーションの実行のほかに画像の表示に消費されている CPU サイクルが含まれています。
表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。
PictureBox1.Refresh() の呼び出しをコメントアウトします。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
タスク・マネージャーを起動して CPU 使用率を記録します。 これが CPU 使用率のベースラインです。
CPU 使用率をシリアルバージョンと比較してください。インテル® IPP を使用すると、インテル® ストリーミング SIMD 拡張命令を利用した優れたベクトル化が行われ、CPU 使用率が向上します。
ベクトル化バージョンの並列化:
IPPTBBLife.cpp ファイルを開きます。
USE_TBB の定義のコメントを外します。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
1 秒あたりのフレーム数を記録して、インテル® IPP のみの (ベクトル化) バージョンと比較します。これがインテル® IPP にインテル® TBB を加えた場合のベースラインです。
表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。
PictureBox1.Refresh() の呼び出しをコメントアウトします。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
タスク・マネージャーを起動して CPU 使用率を記録します。 これがインテル® IPP にインテル® TBB を加えた場合の CPU 使用率のベースラインです。
CPU 使用率をシリアルバージョンやインテル® IPP のみの (ベクトル化) バージョンと比較してください。インテル® TBB を使用すると、マシンのすべてのコアが使用される効率的なスレッド化が行われ、CPU 使用率が向上します。
ベクトル化およびスレッド化バージョンの作成:
CheckCilkLife をスタートアップ・プロジェクトに設定します。
Life プロジェクトの Life.vb のコードを確認します。
51 行目付近の IPPCilkLife の呼び出しのコメントを外します。
PictureBox1.Refresh() の呼び出しのコメントを外します。
SerialLife および IPPTBBLife の呼び出しをコメントアウトします。
IPPCilkLife.cpp ファイルを開きます。
USE_CILK の定義のコメントを外します。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
タスク・マネージャーを起動して CPU 使用率を記録します。 この使用率には、アプリケーションの実行のほかに画像の表示に消費されている CPU サイクルが含まれています。
表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。
PictureBox1.Refresh() の呼び出しをコメントアウトします。
[Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。
Life.exe アプリケーションを実行します。
タスク・マネージャーを起動して CPU 使用率を記録します。 これが CPU 使用率のベースラインです。
CPU 使用率をシリアルバージョンと比較してください。インテル® IPP とインテル® Cilk™ Plus を使用すると、インテル® ストリーミング SIMD 拡張命令を利用した優れたベクトル化が行われ、CPU 使用率が向上します。インテル® Cilk™ Plus を使用すると、マシンのより多くのコアが使用されるスレッド化が行われ、CPU 使用率が向上します。