Intel Developer Forum Japan (2日目)
- To: ***********@oscar.elec.waseda.ac.jp
- Subject: Intel Developer Forum Japan (2日目)
- From: Keiji Kimura <kimura@oscar.elec.waseda.ac.jp>
- Date: Fri, 02 May 2003 18:15:31 +0900
- User-Agent: Wanderlust/2.8.1 (Something) SEMI/1.14.3 (Ushinoya) FLIM/1.14.3(Unebigoryōmae) APEL/10.3 Emacs/20.7(i386-debian-linux-gnu) MULE/4.1 (AOI)
二日目のレポートです.二日目は主に開発環境を聴講してきました.
1. 「Itanium 2 プロセッサ用アプリケーションプログラムの最適
化」 池井満
プログラムの最適化にはメモリの最適化が重要である.メモリ最適
化を行うためには,メモリ・システムの構造を理解し,かつ測定を
通した定量的なチューニングが必要となる.
セッションでは,まず Itanium 2 のメモリアーキテクチャ及び性
能測定のためのパイプライン周りのカウンタの説明を行い,行列積
のプログラムを通して手動チューニング及びコンパイラ最適化によ
る効果のデモンストレーションを行った.最適化は,「手動プリ
フェッチ挿入」「自動プリフェッチ挿入」「ループ・アンローリン
グ」「バンク・コンフリクト回避」「データの再構成(転置)」
「TLB最適化」を順に適用し,元の性能(理論性能の 0.03)から各々
の最適化で0.07,0.16,0.35,0.54,0.75,0.91,0.95の性能を達
成した.
バンク・コンフリクトの回避とは,Itanium 2 の L2 キャッシュの
構造に起因する性能低下を回避する方法である.Itanium 2 の L2
キャッシュは,16バイト幅の16個のバンクにより構成されている.
二つのメモリアクセスが同一バンクに対して行われた場合,どちら
かのメモリアクセスは待たされることになる.これは,たとえば隣
接した配列要素に対するアクセスを行うか,256バイト離れた要素
にアクセスするような場合に行う.ループ内で連続した配列要素に
アクセスするような状況では,適当にメモリアクセルの順番を入れ
替えることにより,バンク・コンフリクトが回避できる.
TLB最適化は,この場合は単にページサイズを大きくしてTLBミスを
減らしてしまうということである.
2. 「インテル Centrino モバイル・テクノロジ最適化方法と
2004 年ノートブックPCのビジョンについて」 小林永欣
Centrino とは,インテルのモバイル向け製品であり,Pentium M
プロセッサ,855チップセット及び インテル PRO/Wireless2100 の
3つのコンポーネントからなる.このセッションでは,これらのコ
ンポーネントと将来のノートPCのビジョンを提示した.
Pentium M のパイプライン構成など細かい部分は謎であるが,新し
い機構として「マイクロOpsフュージョン」「アドバンスト分岐予
測」「専用スタックマネージャ」がある.また,オンチップの1MB
L2 キャッシュを搭載している.マイクロアーキテクチャの拡張に
関する説明は以下のMYCOM等,各種ニュースサイトが詳しい.
http://pcweb.mycom.co.jp/special/2003/centrino/
(若干疑問に思う個所もあるが,全体的に分かりやすく書
いてある)
セッションでは,Pentium 4 等のプロセッサと比較して Pentium M
用の最適化で気をつけなければならない点を,ループアンローリン
グの展開数,キャッシュ最適化,SIMD 命令(SSE/SSE2)のデータレ
イアウト等に関する説明があった.これらの情報はインテルが提供
している各種マニュアルにも掲載されているとのこと.
http://developer.intel.com/design/mobile/manuals/
その後,モバイル・コンピューティングにおける快適な接続性の確
保,バッテリー駆動時間の延長,セキュリティの確保等の話題があっ
たが,それらの中でも Location Aware Computing は興味深い内容
であった.これについては3日目の「将来のモバイルアプリケーショ
ン」で詳しく書く予定である.
3. 基調講演
以下のページに詳しい.
# さすがに,聴講したときとったメモを今読み返すのは厳しい.
# おもしろいデモはいろいろやっていたが,Pentium 4 デスクトッ
# プ--Centirnoモバイル--XScale PDA間で情報をやり取りするデモ
# は特に印象深かった.
http://pcweb.mycom.co.jp/news/2003/04/14/06.html
http://pcweb.mycom.co.jp/news/2003/04/14/07.html
4. 「ハイパー・スレッディング・テクノロジにおけるソフトウェ
ア最適化」 岩本成文
ハイパー・スレッディングを利用したアプリケーションの最適化に
関するセッション.はじめに,アムダールの法則などの並列処理に
関する基本的なおさらいをして,次に画像処理を行う簡単なマルチ
スレッド・アプリケーションを例にハイパースレッディング (以下
HT) のチューニングのデモンストレーションを行った.
デモは二つあり,最初のデモでは,インテルのコンパイラに適切な
最適化オプションをつけることで,どこまで性能が上がるかという
ものであった.Visual C++ では FPS値 (frames per second) が
23.5 (HT-off),26.5 (HT-on) であったものが,インテルコンパイ
ラでプロファイル結果を使った最適化を使うことで 29 (HT-off),
35.5 (HT-on), また SSE2 によるベクトル化により 37 (HT-off),
43 (HT-of) まで性能が向上した.
二つ目のデモは,Pentium 4 の 64K aliasing に関するものである.
Pentium 4 の L1 データキャッシュではレイテンシ削減のため,タ
グチェックをまず仮想アドレスの下位16ビットで行う.そのため,
64KBの距離にあるアドレスは同一ラインを使用してしまう.
Windows はスレッドのを作成する際,1MB境界に配置するためこの
問題が顕在化する.これを回避するために,スタックに 2KB のパ
ディングを行った.この結果,FPS値は 47.5 (HT-on)まで向上し
た…….
Pentium 4 の L1 データキャッシュは 8KB/4way セットアソシアティ
ブ/ラインサイズは64バイトである.聴講時にはうまくごまかされ
てしまった 64K aliasing の問題が,やっぱり良くわからなかった
ので調べてみた.インテルの資料には細かいところまでは書いてい
なかったが,以下のページを読むと,アドレスの12--15ビットは
way prediction に使われているようであり,つまり完全な 4way
セットアソシアティブではなく 64KB 周期で同一ラインを共有して
しまうものであるらしい.このページの情報がどこからきたものだ
か良くわからないが,チップの写真から演算器単位でフロアプラン
を割り出してしまうような人たちのページなので,それなりに信用
できるであろう.
http://www.chip-architect.com/news/2003_03_26_Prescott_clues_for_Yamhill.html
http://www.chip-architect.com/news/2003_03_06_Looking_at_Intels_Prescott.html
5. 「インテル コンパイラ V7.0 を使用した並列化プログラム開発
手法」 清水良直
インテル コンパイラの紹介.特に,OpenMP サポートを強調してい
た.インテルの OpenMP サポートあるいは拡張として,Irregular
な並列性やパイプライン並列処理をサポートする workqueuing モ
デルや,ネスト並列のサポートが挙げられた.また,コンパイラに
は Pentium III,Pentium 4 などの世代依存の最適化が用意されて
いるが,いくつかの世代の最適化されたコードを全て実行オブジェ
クト中に埋め込んで,実行時にどの最適化コードを実行するか決定
する auto dispatch 機能の紹介もあった.
セッションの内容は,Intel Technology Journal や IPDPS の論文
とほぼ同一のようである.
http://www.intel.com/technology/itj/2002/volume06issue01/art04_fortrancompiler/p01_abstract.htm
X. Jian, Y. K. Chen, M. Girkar, S. Ge, R. Lienhart, S. Shah,
"Exploring the Use of Hyper-Threading Technology for
Multimedia Applications with Intel OpenMP Compiler",
Proc. of IPDPS'2003, April 22-26, 2003
6. 「Linux 向け VTune パフォーマンス・アナライザの新機能」
久保寺陽子
インテルのパフォーマンスチューニングツール.コールグラフやパ
フォーマンスカウンタ等の実行プロファイルの集計及び表示を行う
ことができる.ただし,Linux 用ツールの GUI は未完成(今年末か
来年頭に出荷予定とのこと)なので,データを Windows に送信して
そちらのツールで可視化することができるということで,そのデモ
ンストレーションを行った.
集計データの転送は,Linux 側がサーバ,Windows 側がクライアン
トとなるような環境で行う.サーバはサーバプログラムとカーネル
モジュールのインストールが必要.あとで聞いたところ,カーネル
モジュールのソースコード,及びLinux--Windows間のプロトコルは
公開されているようなので,他の用途でも使えそうである.
--
keiji Kimura
kimura@oscar.elec.waseda.ac.jp