SHOEISHA iD

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

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

イベントレポート(AD)

マルチコアのパフォーマンスを最大限に引き出すスレッド化と、インテルのスレッド化ロードマップ

「インテル ソフトウェア・カンファレンス」イベントレポート

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

ハイパースレッディング周りの注意点

 パフォーマンスの定義に続き、菅原氏は、インテルのマイクロアーキテクチャー『Nehalem』を使ったXeon5500シリーズの特徴を解説した。5500シリーズのチップセットは、デュアルソケットで各ソケット4コア、ハイパースレッディングをオンにすると、16の論理スレッドが扱える。ここで菅原氏は「パフォーマンスを見る上で、ハイパースレッディングは1つの物理的なスレッドを論理的に2つにしているため、性能が倍になるとは限りません。チューニングするには、ハイパースレッディングをオフにすることをおすすめします。同様に、CPUに余力があるときにコアの周波数を動的に向上させるターボ・ブースト・テクノロジーもオフにします。これは、チューニングの際の解釈が難しくなるためです。最適化を行ったあとに、あらためてこれらの機能を有効にして分析します」と注意点を強調した。

Nehalemの概要(講演資料より抜粋)
Nehalemの概要(講演資料より抜粋)

 このあと菅原氏は、8つの物理コアで実行する8スレッドでの処理と、4つの物理コア上に展開した8つの論理コアで実行する8スレッドでの比較を提示。同じ8スレッドであるが、前者ではクロックが2843億でイテレーションのサイクルが2.2、後者ではクロックが5849億でイテレーションのサイクルが4.5と大きな違いがあることを示し、続いてツールによる分析手法の解説を行った。

ハイパースレッディングによるベンチマークの違い(講演資料より抜粋)
ハイパースレッディングによるベンチマークの違い(講演資料より抜粋)

VTune パフォーマンス・アナライザーによる分析

 「VTune パフォーマンス・アナライザー」は、アプリケーションごとにイベントを数種類同時に収集でき、ボトルネックをすばやく検知するため、アプリケーションレベルだけでなく、関数レベル、ソースコードレベルでのチェックも可能だ。菅原氏は、ソースコードの分析画面の例を示し、クロックのカウント数がコードのどこにいくつあるかや、終了した命令がどれだけのクロックを費やしたのかなどの数値を説明した。なお、ツールが情報を収集する際クロックごとにパフォーマンス情報を取得するように設定してしまうとパフォーマンスに影響を与えるので、数億回、あるいは数万回に1回の割合で情報を取得するように設定する。

 続いて、クロックの合計カウント数(1つの要素命令の実行に費やしたサイクル数+メモリの読み込みや事前の処理の終了待ちなどでストールされたサイクル数の合計)を表示できる「ホットスポット」ビュー画面を示し、この数値が多い処理ほど最適化の対象となると説明した。さらに、問題となる処理がどこで発生しているかどうかを知るために、処理の流れを時系列で並べた画面も紹介した。また、関数レベルでの分析を行うため、関数どうしの呼び出し回数や処理時間を確認できるコールグラフの画面も提示した。これらの機能により、スレッド化をより最適化するためのポイントが分かるようになる。

ホットスポットビューの様子(講演資料より抜粋)
ホットスポットビューの様子(講演資料より抜粋)

 ある程度最適化が進むと、特定の部分だけ集中してチューニングしたいという要求も出てくる。VTuneAPIをインクルードすると、データの記録を再開するレジュームや、記録を停止するポーズが可能になる。これにより、収集するデータ量を最小限にすることができ、分析の時間を短縮できる。加えて菅原氏は、「VTune パフォーマンス・アナライザー 9.1」の新機能として、サポートされていないOSや実行時にコードを生成するタイプのアプリケーション、JavaScriptやActionScriptといったスクリプト言語のサポートなどを解説した。

新機能としてスクリプト言語のサポートも追加(講演資料より抜粋)
新機能としてスクリプト言語のサポートも追加(講演資料より抜粋)

 アプリケーションがもっとも時間を消費する場所を「hotspot」といい、最適化の労力はこのhotspotを対象に行われる。それを可能にするのが、VTune パフォーマンス・アナライザーのサンプリング・ウィザード。菅原氏は、先に挙げた物理的な8コアでの8スレッドと、論理コア8つでの8スレッドの例を再提示し、同ツールでの分析結果を説明した。VTune パフォーマンス・アナライザーでは、ストールされたサイクル数も明示され、OSレベルでの分析と比較した場合の数値とも比較して、アプリケーションのみを的確に発見できることが示された。

スレッド・プロファイラーとスレッド・チェッカー

 また、スレッドに均等に負荷をかけないと、処理の長くかかったスレッドの影響で全体の終了時間が伸びてしまう。菅原氏は、このような効率のよくないスレッド(ロード・インバランス)の問題を指摘できるツール「スレッド・プロファイラー」の分析画面も紹介した。

スレッド・プロファイラーによるロード・インバランスの分析(講演資料より抜粋)
スレッド・プロファイラーによるロード・インバランスの分析(講演資料より抜粋)

 最後に紹介したツールは「スレッド・チェッカー」。これはデッドロックやデータの競合などの問題を検出するもので、Parallel StudioのParallel Inspectorとほぼ同じ機能を提供する。このツールの注意点としては、コード単位でチェックするため、なるべく多くのコードを検証するためのパターンを用意しておくテストケースの準備が必要とした。

スレッド・チェッカーによるデータ競合の検出(講演資料より抜粋)
スレッド・チェッカーによるデータ競合の検出(講演資料より抜粋)

 菅原氏は、まとめとして「アーキテクチャー分析」「スレッド導入/最適化」「デバッグなどによる信頼性」「最適化/チューニング」といったパフォーマンスの最適化の段階において、各種のツールを効率よく使うことが開発を簡単にすると改めて強調し、講演を締めくくった。

次のページ
メニーコアへも対応するCtテクノロジーを機軸に展開

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

  • このエントリーをはてなブックマークに追加
イベントレポート連載記事一覧

もっと読む

この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4487 2009/10/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング