このセクションでは、ステップごとに手順を示し、異なるアプローチ - インテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) およびインテル® スレッディング・ビルディング・ブロック (インテル® TBB) またはインテル® Cilk™ Plus - を使用してシリアル・アプリケーションから並列アプリケーションへライフゲーム・アプリケーションを変換する方法を説明します。 シリアル・プロジェクトでパフォーマンスのベースラインを確定します。
次の手順に従って、ライフゲーム・アプリケーションのシリアルバージョンとマルチスレッド・バージョンをビルドしてください。
ソリューション・ファイル Life.sln をダブルクリックして、Microsoft* Visual Studio* で開きます。
CheckSerialLife プロジェクトをスタートアップ・プロジェクトに設定します。
Life プロジェクトの Life.vb のコードを確認します。
IPPTBBLife と IPPCilkLife への呼び出しをコメントアウトします。
行 54 あたりの SerialLife への呼び出しのコメントを外します。
行 68 あたりの PictureBox1.Refresh() への呼び出しのコメントを外します。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
以下のようなウィンドウが表示されます。
タスク マネージャを起動し、CPU 使用率を記録します。これには、アプリケーションを実行し、イメージを表示するための CPU サイクルが含まれます。
ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。
PictureBox1.Refresh() への呼び出しをコメントアウトします。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
タスク マネージャを起動し、CPU 使用率を記録します。これが、CPU 使用率のベースラインになります。
ベクトル化バージョンを作成するには:
CheckIPPTBBLife プロジェクトをスタートアップ・プロジェクトに設定します。
Life プロジェクトの Life.vb のコードを確認します。
行 48 あたりの IPPTBBLife への呼び出しのコメントを外します。
PictureBox1.Refresh() への呼び出しのコメントを外します。
SerialLife と IPPCilkLife への呼び出しをコメントアウトします。
IPPTBBLife.cpp ファイルを開きます。
USE_TBB の定義をコメントアウトします。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
タスク マネージャを起動し、CPU 使用率を記録します。これには、アプリケーションを実行し、イメージを表示するための CPU サイクルが含まれます。
ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。
PictureBox1.Refresh() への呼び出しをコメントアウトします。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
タスク マネージャを起動し、CPU 使用率を記録します。これが、CPU 使用率のベースラインになります。
シリアルバージョンより高い CPU 使用率はありますか? インテル® IPP は優れたベクトル化を提供します。つまり、インテル® IPP は、CPU 使用率を高くするインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) を活用しています。
ベクトル化バージョンを並列化するには:
IPPTBBLife.cpp ファイルを開きます。
USE_TBB の定義のコメントを外します。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
1 秒あたりのフレーム数を記録して、インテル® IPP のみを使用したバージョンと比較します。これが、インテル® IPP とインテル® TBB を併用したパフォーマンスのベースラインになります。
ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。
PictureBox1.Refresh() への呼び出しをコメントアウトします。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
タスク マネージャを起動し、CPU 使用率を記録します。これが、インテル® IPP とインテル® TBB を併用した CPU 使用率のベースラインになります。
シリアルバージョンやインテル® IPP のみのバージョンより高い CPU 使用率はありますか? インテル® TBB は効率良いスレッド化を提供するため、すべてのコアが使用されて、高い CPU 使用率をもたらします。
ベクトル化バージョンおよびをスレッド化バージョンを作成するには:
CheckCilkLife プロジェクトをスタートアップ・プロジェクトに設定します。
Life プロジェクトの Life.vb のコードを確認します。
行 51 あたりの IPPCilkLife への呼び出しのコメントを外します。
PictureBox1.Refresh() への呼び出しのコメントを外します。
SerialLife と IPPTBBLife への呼び出しをコメントアウトします。
IPPCilkLife.cpp ファイルを開きます。
USE_CILK の定義のコメントを外します。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
タスク マネージャを起動し、CPU 使用率を記録します。これには、アプリケーションを実行し、イメージを表示するための CPU サイクルが含まれます。
ライフゲーム・アプリケーションのみ (表示に費やされるサイクルはなし) の CPU 使用率を取得する場合は、次の手順を行います。
PictureBox1.Refresh() への呼び出しをコメントアウトします。
[ビルド] >... メニューから Release を選択して、プロジェクトをビルドします。
Life.exe アプリケーションを実行します。
タスク マネージャを起動し、CPU 使用率を記録します。これが、CPU 使用率のベースラインになります。
シリアルバージョンより高い CPU 使用率はありますか? インテル® IPP とインテル® Cilk™ Plus の併用は優れたベクトル化を提供します。つまり、これは、CPU 使用率を高くするインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) を活用しています。 インテル® Cilk™ Plus はスレッド化を提供するため、より多くのコアが使用されて、高い CPU 使用率をもたらします。
© 2010 Intel Corporation. 無断での引用、転載を禁じます。