正しい分析でムダなくチューニング
アプリの並列化を支援する「インテル Parallel Amplifier」
インテルParallel Amplifierによるアプリケーションのボトルネック分析
アプリケーションの並列性分析
続けて、並列化したアプリケーションが期待通りの並列性を見せているかどうか、アプリケーションの並列性分析を試しましょう。今度は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評価版をダウンロードして、アプリケーションの分析を行ってみてください。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- インテルソフトウェア開発製品による並列化プログラミング連載記事一覧
-
- マルチコア時代の定番チューニングツール 「インテルParallel Studio 2011...
- 正しい分析でムダなくチューニング アプリの並列化を支援する「インテル Parallel A...
- 並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 土井 毅(ドイ ツヨシ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


