SHOEISHA iD

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

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

イベントレポート(AD)

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

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

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

 インテルは、C/C++開発者を対象としたイベント「インテル ソフトウェア・カンファレンス」を10月2日に開催し、並列コンピューティングを実現する最新の開発ツールや開発手法、今後のインテル製品のロードマップを紹介した。本稿では、2つのセッション「スレッド化の手法とパフォーマンスの分析」「並列化ロードマップ: 今後の予定」にフォーカスしてレポートする。

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

 米インテル社およびインテル株式会社は、C/C++開発者を対象としたイベント「インテル ソフトウェア・カンファレンス」を2009年10月2日に開催した。同イベントでは、並列化を通じてプロセッサーコアの性能を活用するという課題を挙げ、並列コンピューティングを実現する最新の開発ツールや開発手法、今後のインテル製品のロードマップが紹介された。

 CodeZineでは、2009年5月に開催されたSODECにて実演された「インテル Parallel Studio」の概要を伝えたが、今回のイベントでは、ソフトウェア&サービス統括部・菅原清文氏による「スレッド化の手法とパフォーマンスの分析」と、米インテル社 ソフトウェア開発製品部門のチーフ・エバンジェリスト兼ディレクター・James Reinders 氏の「並列化ロードマップ: 今後の予定」の2つの講演に注目した(Reinders氏のレポートは3ページ目から)。

スレッド化の手法とパフォーマンス分析ツール

 登壇した菅原氏は「新しいプロセッサーが登場するとアプリケーションのパフォーマンスは向上するという考えがあるなら、この講義は退屈と考える人もいれば、アプリケーションのチューニングによってより高度なパフォーマンスを見出すことができると考える人もいるでしょう。導入してすぐにすばらしいパフォーマンスが得られなくても最悪の事態というわけではありません」とプレゼンテーションを始めた。

インテル株式会社 ソフトウェア&サービス統括部
シニア・アプリケーション・エンジニア 菅原 清文氏
インテル株式会社 ソフトウェア&サービス統括部シニア・アプリケーション・エンジニア 菅原 清文氏

 パフォーマンス分析について菅原氏は、アプリケーション命令、データ構造とレイアウトからなるソフトウェア側と、メモリやプロセッサーといったハードウェア側の相互作用を測定することであるとした。パフォーマンスのチューニングは、分析から探した問題点を改善し、最適化することと定義した。そして、チューニングのレベルは上から、システム、アプリケーション、プロセッサの3レベルに分かれるとし、より上位のレベルでチューニングを行うことが効果が大きいという。たとえば、メモリを増やしたらパフォーマンスが向上するというのは簡単なシステムレベルのチューニングで、プロセッサレベルになるとチューニングも難しくなっていく。

パフォーマンス・チューニングの流れ

 次に菅原氏はチューニングの流れについて解説した。「1. ベンチマーク作成」「2. データ収集」「3. データの分析と問題の特定」「4. コードシステムの問題の修正」「5. 問題が修正されたか?」「6. パフォーマンス要件は満たされたか?」といった段階があるとし、要件が満たされるまで繰り返し修正を行い最適化していく。この流れは、先に挙げたどのレベルでも同じであると説明した。

パフォーマンス・チューニングの流れ(講演資料より抜粋)
パフォーマンス・チューニングの流れ(講演資料より抜粋)

 最初に重要となるのがベンチマークの作成だ。ベンチマークは、何度も検証できるよう再現可能で、処理時間を計測するなど表現可能であり、そしてなるべく簡単に実行・検証・評価できるようなものでなければならないなどの事項を説明した。また菅原氏は「最適化の流れで一度に多くのことをしてはいけません。何がどの程度効果があったか分からなくなるからです。問題点をひとつずつ解消していくべきです」と解説した。

スレッド化を支援する開発ツール群

 続いて菅原氏は、「シングルスレッドであっても検証から反映、デバッグ、性能測定というステップは同じ」とし、スレッド化を支援する製品の紹介を行った。インテルには、アプリケーションやシステムも含めたアーキテクチャーの分析ツールとして「VTune パフォーマンス・アナライザー」、分析結果を反映しスレッド化を導入するためのコンパイラーや各種ライブラリー、並列化において困難になるデバッグの支援を行う「インテル スレッド・チェッカー」、そして最適化やチューニングを行うツールには先述の「VTuneパフォーマンス・アナライザー」のほか「インテル スレッド・プロファイラー」がある。

スレッド化を支援するインテルの開発ツール群(講演資料より抜粋)
スレッド化を支援するインテルの開発ツール群(講演資料より抜粋)

 菅原氏は、「パフォーマンスがよいということはCPUを“ビジー”にしておくことです。そのためには効率的なメモリ利用やスレッド化、データ構造の最適化が必要です。メモリを読みに行ってる間、CPUはWaitの状態になるので、そういったものをなるべく少なくしていく必要があります」と語った。

 さらに菅原氏はCPUを“ビジー”にするための手法としては、マルチメディア拡張命令セットであるSSE(Streaming SIMD Extensions)やMMXを使って1つの命令でなるべくたくさんのデータ処理を行うことや、CPUのキャッシュを効率よく利用させる、命令数を最小限にすることで「リタイア」コンポーネントを減少させるなどがあると付け加えたうえで、「CPUがどれくらい処理に時間をかけているかどうかは、ツールを使わないと計れない」とした。

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

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

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

もっと読む

この記事の著者

森 英信(モリ ヒデノブ)

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング