SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

インテルソフトウェア開発製品による並列化プログラミング

正しい分析でムダなくチューニング
アプリの並列化を支援する「インテル Parallel Amplifier」

インテルParallel Amplifierによるアプリケーションのボトルネック分析

  • X ポスト
  • このエントリーをはてなブックマークに追加

アプリケーションの並列性分析

 続けて、並列化したアプリケーションが期待通りの並列性を見せているかどうか、アプリケーションの並列性分析を試しましょう。今度はParallel Composerを使って並列化済みの「Step4-Parallel-Tune」プロジェクトで分析を行います。ソリューションエクスプローラでStep4-Parallel-Tuneプロジェクトを右クリックし、[スタートアップ プロジェクトに設定]を選択します。これは、Parallel Amplifierがスタートアッププロジェクトに対して分析を行うためです。

 プロジェクトの構成をReleaseにしてビルドした後、ツールバーの分析の種類ドロップダウンで[Concurrency - Where is my concurrency poor?]を選択し、[Profile]ボタンをクリックします。結果は図7のように表示されます。

 消費時間の右に色グラフで並列性が表示されています。シングルスレッドアプリケーションの並列性分析結果(図8)と比較してみると一目瞭然ですが、シングルスレッドアプリケーションのsetQueen関数の並列性が当然ながらPoor(貧弱/赤色)であるのに対し、並列化済みのアプリケーションのsetQueen関数の並列性はIdeal(理想的/緑色)と分析されています。

図7 並列化済みアプリケーションの並列性分析結果
図7 並列化済みアプリケーションの並列性分析結果
図8 シングルスレッドアプリケーションの並列性分析結果
図8 シングルスレッドアプリケーションの並列性分析結果

 参考までに、筆者の環境Intel Core 2 Duo T7250(2.00GHz デュアルコア)での並列化前後の処理結果は次のようになりました。

並列化によるアプリケーションの高速化
探索空間
(チェス盤の大きさ)
シングルスレッド マルチスレッド
12x12 578ms 493ms
13x13 3290ms 1921ms
14x14 21457ms 12463ms
15x15 213613ms 89078ms

 また、実行中のCPU使用率は次のようになっていました。

図9 並列化済みアプリケーション実行中のタスクマネージャCPU使用率。ほぼ100%使用
図9 並列化済みアプリケーション実行中のタスクマネージャCPU使用率。ほぼ100%使用
図10 シングルスレッドアプリケーション実行中のタスクマネージャCPU使用率。CPUを使い切れていない
図10 シングルスレッドアプリケーション実行中のタスクマネージャCPU使用率。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評価版をダウンロードして、アプリケーションの分析を行ってみてください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
インテルソフトウェア開発製品による並列化プログラミング連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 土井 毅(ドイ ツヨシ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5284 2010/07/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング