ライフゲーム - 並列化アプローチ

このセクションでは、ステップごとに手順を示し、異なるアプローチ - インテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) およびインテル® スレッディング・ビルディング・ブロック (インテル® TBB) またはインテル® Cilk™ Plus - を使用してシリアル・アプリケーションから並列アプリケーションへライフゲーム・アプリケーションを変換する方法を説明します。 シリアル・プロジェクトでパフォーマンスのベースラインを確定します。

次の手順に従って、ライフゲーム・アプリケーションのシリアルバージョンとマルチスレッド・バージョンをビルドしてください。

シリアル・プロジェクト


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

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

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

  4. IPPTBBLifeIPPCilkLife への呼び出しをコメントアウトします。

  5. 行 54 あたりの SerialLife への呼び出しのコメントを外します。

  6. 行 68 あたりの PictureBox1.Refresh() への呼び出しのコメントを外します。

  7. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

  9. 以下のようなウィンドウが表示されます。

    VC++ ディレクトリー

  10. タスク マネージャを起動し、CPU 使用率を記録します。これには、アプリケーションを実行し、イメージを表示するための CPU サイクルが含まれます。

ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。


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

  2. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

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

インテル® TBB を使用したベクトル化およびスレッド化バージョン

ベクトル化バージョンを作成するには:


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

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

  3. 行 48 あたりの IPPTBBLife への呼び出しのコメントを外します。

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

  5. SerialLifeIPPCilkLife への呼び出しをコメントアウトします。

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

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

  8. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

  10. タスク マネージャを起動し、CPU 使用率を記録します。これには、アプリケーションを実行し、イメージを表示するための CPU サイクルが含まれます。

ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。


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

  2. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

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

シリアルバージョンより高い CPU 使用率はありますか? インテル® IPP は優れたベクトル化を提供します。つまり、インテル® IPP は、CPU 使用率を高くするインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) を活用しています。

ベクトル化バージョンを並列化するには:


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

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

  3. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

  5. 1 秒あたりのフレーム数を記録して、インテル® IPP のみを使用したバージョンと比較します。これが、インテル® IPP とインテル® TBB を併用したパフォーマンスのベースラインになります。

ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。


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

  2. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

  4. タスク マネージャを起動し、CPU 使用率を記録します。これが、インテル® IPP とインテル® TBB を併用した CPU 使用率のベースラインになります。

シリアルバージョンやインテル® IPP のみのバージョンより高い CPU 使用率はありますか? インテル® TBB は効率良いスレッド化を提供するため、すべてのコアが使用されて、高い CPU 使用率をもたらします。

インテル® Cilk™ Plus を使用したベクトル化およびスレッド化バージョン

ベクトル化バージョンおよびをスレッド化バージョンを作成するには:


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

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

  3. 行 51 あたりの IPPCilkLife への呼び出しのコメントを外します。

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

  5. SerialLifeIPPTBBLife への呼び出しをコメントアウトします。

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

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

  8. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

  10. タスク マネージャを起動し、CPU 使用率を記録します。これには、アプリケーションを実行し、イメージを表示するための CPU サイクルが含まれます。

ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。


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

  2. [ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。

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

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

シリアルバージョンより高い CPU 使用率はありますか? インテル® IPP とインテル® Cilk™ Plus の併用は優れたベクトル化を提供します。つまり、これは、CPU 使用率を高くするインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) を活用しています。 インテル® Cilk™ Plus はスレッド化を提供するため、より多くのコアが使用されて、高い CPU 使用率をもたらします。

戻る: アプリケーションをスレッド化する  次へ: サマリー


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

© 2010 Intel Corporation. 無断での引用、転載を禁じます。