入門チュートリアル: インテル® インテグレーテッド・パフォーマンス・プリミティブ 8.2 を使用したアプリケーションの最適化
インテル® IPP 関数はスレッドセーフです。つまり、同じ関数が異なるスレッドで呼び出されても、同期問題が発生することなく、アプリケーションをスレッド化してインテル® IPP 関数を呼び出すことができます。インテル® TBB およびインテル® Cilk™ Plus は、マルチコア・アーキテクチャーを活用できる 2 つのスレッド化テクノロジーです。
IPPTBBLife.cpp の 5 行目付近の #define USE_TBB ステートメントをコメントアウトします。 この変更により、ライフゲーム・アプリケーションはシリアルに実行されます。
Windows* タスク・マネージャーを起動して、[パフォーマンス] タブをクリックします。 [CPU 使用率] セクションを確認します。 表示に消費されるサイクルを含まない、ライフゲーム・アプリケーションのみの CPU 使用率になるように、Life.vb の 68 行目付近の PictureBox1.Refresh() の呼び出しをコメントアウトします。
アプリケーションを実行して、CPU 使用率を確認します。
インテル® TBB を使用してライフゲーム・アプリケーションをスレッド化するには、以下の操作を行います。
IPPTBBLife.cpp の 5 行目付近の #define USE_TBB ステートメントのコメントを外します。 この変更により、ライフゲーム・アプリケーションはインテル® TBB を使用してスレッド化されます。
アプリケーションを実行して、CPU 使用率を確認します。
インテル® Cilk™ Plus を使用してライフゲーム・アプリケーションをスレッド化するには、以下の操作を行います。
Life.vb の 51 行目付近の IPPCilkLife 関数のコメントを外します。
IPPTBBLife 関数および SerialLife 関数をコメントアウトします。
IPPClkLife.cpp の 5 行目付近の #define USE_CILK ステートメントをコメントアウトします。 この変更により、ライフゲーム・アプリケーションはシリアルに実行されます。
Windows* タスク・マネージャーを起動して、[パフォーマンス] タブをクリックします。 アプリケーションを実行して、CPU 使用率を確認します。
IPPClkLife.cpp の 5 行目付近の #define USE_CILK ステートメントのコメントを外します。 この変更により、ライフゲーム・アプリケーションはインテル® Cilk™ Plus を使用してスレッド化されます。
インテル® Cilk™ Plus が複数のプロセッサーに作業を分割するため、マルチコアシステムではシリアルの場合よりも [CPU 使用率] が大幅に高くなります。 [CPU 使用率] が高いということは、単位時間あたりに実行される作業の数がより多い、つまりアプリケーションのパフォーマンスがより優れていることを意味します。