入門チュートリアル: インテル® インテグレーテッド・パフォーマンス・プリミティブ 8.2 を使用したアプリケーションの最適化

ライフゲーム - 並列化手法

このセクションは、さまざまな手法 (インテル® IPP と、インテル® TBB またはインテル® Cilk™ Plus) を使用して、シリアル・アプリケーションから並列アプリケーションにライフゲーム・アプリケーションを変換する方法を説明します。 シリアル・プロジェクトは、パフォーマンスのベースラインとなります。

次の手順に従って、シリアルおよびスレッド化バージョンのライフゲーム・アプリケーションをビルドします。

シリアル・プロジェクト

  1. チュートリアルのディレクトリーでソリューション・ファイル Life.sln をダブルクリックし、Microsoft* Visual Studio* で開きます。

  2. CheckSerialLifeスタートアップ・プロジェクトに設定します。

  3. Life プロジェクトの Life.vb のコードを確認します。

  4. IPPTBBLife および IPPCilkLife の呼び出しをコメントアウトします。

  5. 54 行目付近の SerialLife の呼び出しのコメントを外します。

  6. 68 行目付近の PictureBox1.Refresh() の呼び出しのコメントを外します。

  7. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  8. Life.exe アプリケーションを実行します。

  9. 以下のような画面が表示されます。

    VC++ ディレクトリー

  10. タスク・マネージャーを起動して CPU 使用率を記録します。 この使用率には、アプリケーションの実行のほかに画像の表示に消費されている CPU サイクルが含まれています。

表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。

  1. PictureBox1.Refresh() の呼び出しをコメントアウトします。

  2. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  3. Life.exe アプリケーションを実行します。

  4. タスク・マネージャーを起動して CPU 使用率を記録します。 これが CPU 使用率のベースラインです。

ベクトル化してインテル® TBB でスレッド化

ベクトル化バージョンの作成:

  1. CheckIPPTBBLifeスタートアップ・プロジェクトに設定します。

  2. Life プロジェクトの Life.vb のコードを確認します。

  3. 48 行目付近の IPPTBBLife の呼び出しのコメントを外します。

  4. PictureBox1.Refresh() の呼び出しのコメントを外します。

  5. SerialLife および IPPCilkLife の呼び出しをコメントアウトします。

  6. IPPTBBLife.cpp ファイルを開きます。

  7. USE_TBB の定義をコメントアウトします。

  8. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  9. Life.exe アプリケーションを実行します。

  10. タスク・マネージャーを起動して CPU 使用率を記録します。 この使用率には、アプリケーションの実行のほかに画像の表示に消費されている CPU サイクルが含まれています。

表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。

  1. PictureBox1.Refresh() の呼び出しをコメントアウトします。

  2. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  3. Life.exe アプリケーションを実行します。

  4. タスク・マネージャーを起動して CPU 使用率を記録します。 これが CPU 使用率のベースラインです。

CPU 使用率をシリアルバージョンと比較してください。インテル® IPP を使用すると、インテル® ストリーミング SIMD 拡張命令を利用した優れたベクトル化が行われ、CPU 使用率が向上します。

ベクトル化バージョンの並列化:

  1. IPPTBBLife.cpp ファイルを開きます。

  2. USE_TBB の定義のコメントを外します。

  3. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  4. Life.exe アプリケーションを実行します。

  5. 1 秒あたりのフレーム数を記録して、インテル® IPP のみの (ベクトル化) バージョンと比較します。これがインテル® IPP にインテル® TBB を加えた場合のベースラインです。

表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。

  1. PictureBox1.Refresh() の呼び出しをコメントアウトします。

  2. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  3. Life.exe アプリケーションを実行します。

  4. タスク・マネージャーを起動して CPU 使用率を記録します。 これがインテル® IPP にインテル® TBB を加えた場合の CPU 使用率のベースラインです。

CPU 使用率をシリアルバージョンやインテル® IPP のみの (ベクトル化) バージョンと比較してください。インテル® TBB を使用すると、マシンのすべてのコアが使用される効率的なスレッド化が行われ、CPU 使用率が向上します。

ベクトル化してインテル® Cilk™ Plus でスレッド化

ベクトル化およびスレッド化バージョンの作成:

  1. CheckCilkLifeスタートアップ・プロジェクトに設定します。

  2. Life プロジェクトの Life.vb のコードを確認します。

  3. 51 行目付近の IPPCilkLife の呼び出しのコメントを外します。

  4. PictureBox1.Refresh() の呼び出しのコメントを外します。

  5. SerialLife および IPPTBBLife の呼び出しをコメントアウトします。

  6. IPPCilkLife.cpp ファイルを開きます。

  7. USE_CILK の定義のコメントを外します。

  8. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  9. Life.exe アプリケーションを実行します。

  10. タスク・マネージャーを起動して CPU 使用率を記録します。 この使用率には、アプリケーションの実行のほかに画像の表示に消費されている CPU サイクルが含まれています。

表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、以下の操作を行います。

  1. PictureBox1.Refresh() の呼び出しをコメントアウトします。

  2. [Build (ビルド)] メニューから [Release] を選択して、プロジェクトのリリースバージョンをビルドします。

  3. Life.exe アプリケーションを実行します。

  4. タスク・マネージャーを起動して CPU 使用率を記録します。 これが CPU 使用率のベースラインです。

CPU 使用率をシリアルバージョンと比較してください。インテル® IPP とインテル® Cilk™ Plus を使用すると、インテル® ストリーミング SIMD 拡張命令を利用した優れたベクトル化が行われ、CPU 使用率が向上します。インテル® Cilk™ Plus を使用すると、マシンのより多くのコアが使用されるスレッド化が行われ、CPU 使用率が向上します。

戻る 次へ


このヘルプトピックについてのフィードバックを送信