アプリケーションの並列性分析
続けて、並列化したアプリケーションが期待通りの並列性を見せているかどうか、アプリケーションの並列性分析を試しましょう。今度はParallel Composerを使って並列化済みの「Step4-Parallel-Tune」プロジェクトで分析を行います。ソリューションエクスプローラでStep4-Parallel-Tuneプロジェクトを右クリックし、[スタートアップ プロジェクトに設定]を選択します。これは、Parallel Amplifierがスタートアッププロジェクトに対して分析を行うためです。
プロジェクトの構成をReleaseにしてビルドした後、ツールバーの分析の種類ドロップダウンで[Concurrency - Where is my concurrency poor?]を選択し、[Profile]ボタンをクリックします。結果は図7のように表示されます。
消費時間の右に色グラフで並列性が表示されています。シングルスレッドアプリケーションの並列性分析結果(図8)と比較してみると一目瞭然ですが、シングルスレッドアプリケーションのsetQueen関数の並列性が当然ながらPoor(貧弱/赤色)であるのに対し、並列化済みのアプリケーションのsetQueen関数の並列性はIdeal(理想的/緑色)と分析されています。
参考までに、筆者の環境Intel Core 2 Duo T7250(2.00GHz デュアルコア)での並列化前後の処理結果は次のようになりました。
探索空間 (チェス盤の大きさ) |
シングルスレッド | マルチスレッド |
12x12 | 578ms | 493ms |
13x13 | 3290ms | 1921ms |
14x14 | 21457ms | 12463ms |
15x15 | 213613ms | 89078ms |
また、実行中のCPU使用率は次のようになっていました。
今回検証に使用したプロセッサーは2.00GHzデュアルコアと今となっては非力なCPUですが、マルチスレッド化アプリケーションの恩恵を受けられていることが確認できます。Parallel Studioを使うことで、コア数に依存しない並列化アプリケーションを構築することができますので、昨今の4,6,8,12といった多数のコアを持つCPUであれば、さらに性能向上の恩恵を受けることでしょう。
このように、実行時間やCPU使用率といった分析は特別なソフトウェアなしでも行うことができますが、あくまでも「速くなったかどうか」程度の大まかな分析でしかありません。特定の関数の並列化率がどの程度か、といった詳細な分析については、Parallel Amplifierのような製品が威力を発揮するところです。
マルチスレッドアプリ開発ガイド 日本語版の紹介
米Intel社からリリースされている「Intel Guide for Developing Multithreaded Applications」の日本語版がParallel Amplifier日本販売元のエクセルソフト社サイトで6/18より公開されています。
この開発ガイドでは、マルチスレッドアプリケーションの開発に伴って検討すべき要素を、基本的な理論から具体的な実装方法まで解説しています。Parallel Studioの実践的な使用方法についても解説していますので、ぜひ参照してください。
また、同社サイトでは「並列プログラミングを始めよう」と題する特集記事も組まれており、マルチスレッド化のみならず、ベクトル命令の活用など、動画を含むさまざまな記事が紹介されています。こちらも併せて参照してください。
まとめ
CPU開発におけるマルチコア化の流れは当面続くことが予想されており、実行性能の求められるアプリケーション開発において、並列処理の実装は不可避な状況です。Parallel Amplifierのような並列処理実装を助けてくれるソフトウェアを活用し、ハードウェア性能を十分に引き出していきましょう。ぜひParallel Studio評価版をダウンロードして、アプリケーションの分析を行ってみてください。