最近の話題 2012年2月18日

1.IntelのHaswellはトランザクションメモリをサポート

  Intelは”Intel Architecture Instruction Set Extensions Programming Reference”というドキュメントを公開し,ブログでHaswellがトランザクションメモリのサポート機能を実装していることを明らかにしました。

  トランザクションメモリはSunのRockがサポートを取り入れたのですが,Oracleの買収の直前にプロジェクトはキャンセルされ,日の目をみませんでした。そして,Blue Gene/Qプロセサがサポートしていると発表していますが,詳細は不明です。

  Haswellのトランザクションメモリサポートに関しては,2012年2月16日のマイナビニュースが,私の解説記事を載せています。また,2012年2月15日のReal World TechnologyがDavid Kanterの記事を載せています。

  Intelのドキュメントはプログラミング用なので,どのような実装になっているかは書かれていません。ということでマイナビニュースには推測するメカニズムを書いたのですが,Davidの推測もほぼ,同じでした。ただし,彼はこの分野の元専門家なので,より詳細な記述になっていますので,興味のある方は彼の記事を参照してください。

  Haswellの命令拡張ですが,HLE(Hardware Lock Elision)という使い方と,RTM(Restricted Transactional Memory)という使い方がサポートされています。HLEの方はロックベースのソフトウェアのロックの獲得命令にXAQUIRE,ロックの解放命令にXRELEASEというPrefixを付けると,ロック変数を書き換えることなく,HLE領域を実行します。そのとき,HLE領域の開始時のアーキテクチャレジスタを退避します。そして,HLE領域内でのメモリからデータを読んだRead Setとメモリへの書き込みを行うWrite Setを管理し,Read SetやWrite Setへの他のプロセサからの書き込みやWrite Setの読み込みを監視し,それが検出されると,アボートして,HLE開始前の状態に戻して,ロック獲得命令に戻って,今度はHLEを使わず,ロックを獲得して再実行をおこないます。

  一方,他のプロセサからの干渉がXRELEASEまでに検出されなければHLE領域の実行は成功で,Write Setを一括してアトミックにメモリに書き戻します。といっても,実際の操作はWrite Setを格納しているキャッシュラインをModified状態にして,他のプロセサから見えるようにするだけで済みます。

  (マイナビの記事を書いたときは,書き戻しに際して,インバリデーションが必要と思ったのですが,その後Davidの記事を読んで,最初の書き込みでは他のプロセサにCopyback-Invalidateを送って,その後,他のプロセサからのWrite SetへのRead Accessを検出してアボートしていれば,成功した場合は,Write Setのキャッシュラインが他のプロセサのキャッシュにないことは保証されているので,一括してキャッシュラインの状態をModifiedにして,Write Setであるというフラグを消すだけで済み,書き戻しに際して他のプロセサにインバリデーションを送る必要がないことが分かりました。)

  XAQUIREとXRELAESEですが,0xF2と0xF3というPrefixを使っているのですが,マイナビで「1バイトのPrefixの領域が残っていたのは驚き」とつぶやいた鋭い方が居られました。実は,0xF2はREPNE,0xF3はREP/REPEという文字ストリング処理関係で既に使われているのですが,対象となる命令によってXAQUIREを意味するのか,REPNEを意味するのかを使い分けるという苦肉の策を使っています。

  もう一方のRTMはXBEGIN,XENDとXABORTという命令を新設し,通常のトランザクションメモリの使い方ができます。XBEGINはトランザクションがアボートした場合の処理コードのアドレスを指定でき,RTMの方がフレキシビリティーは高いのですが,トランザクションメモリ用のコードを書く必要があります。

  これに対して,HLEではロックベースのコードにXAQUIREとXRELEASE Prefixを付けるだけで良く,手っ取り早く使えるのが大きなメリットです。

2.筑波大で800TFlopsの新スパコンが稼働開始

  2012年2月14日のHPCWireが筑波大の新スパコンの記事を掲載しています。HA-PACSと呼ぶこのシステムは既に動いているとのことです。2006年から稼働し,昨年9月末に停止したPACS-CSの後継のシステムです。

  このシステムはAppro社製で,8コアのXeon E5プロセサ 2ソケットに4台のNVIDIAのM2090が接続されたノードで,268ノードのシステムで,ピーク演算性能は802TFlopsとなります。メモリはCPU側に合計34TB,GPU側に6.4TB が搭載されています。そして,ストレージはDDNのSFA10000で,0.5PBを超える容量と書かれています。消費電力は400kWを若干超える程度とのことです。

  筑波大は,T2KスパコンもApproから購入しており,これに続いてのAppro社からの調達になります。

  筑波大はPEACH(PCI Express Adaptive Computing Hub)というFPGAASICを開発しており,このインタフェースをPCIe2.0のx4からx8にしてバンド幅を倍増するPEACH2を開発してGPUなどのアクセラレータを追加する計画があり,これが完成する2013年には200+TFlopsを追加して合計1PFlopsを超えるという計画です。なお,PEACH2はASICではなくFPGAで作られ ,パケット転送の制御をハードワイヤ化してレーテンシを短縮するとのことです。

3.オーストラリアのメルボルン大,イギリスのエンジンバラ大がBG/Qを導入

  2012年2月15日のThe Registerがオーストラリアのメルボルン大が836TFlopsのIBM BG/Qを導入すると報じています。納入時期は今年の6月ですが,母体となるThe Victorian Life Sciences Computationイニシアティブ自体が予算の無駄遣いではないかという批判が出ているとのことで,目論見通り進むのか懸念されます。

  また,2012年2月14日のHPCWireが,イギリス最大の800TFlopsシステムであるエジンバラ大に設置されたHECToRに,BG/Qを追加すると報じています。追加するBG/Qシステムの規模については書かれていません。

inserted by FC2 system