• トップ
  • G-DEPについて
  • ご購入ガイド
  • サポート
  • お問い合わせ

G-DEPトップ  >  G-DEPの高速演算記  >  高速演算記 第23回 「特別寄稿」 東北大学大学院情報科学研究科 滝沢寛之先生

高速演算記 第23回 「特別寄稿」 東北大学大学院情報科学研究科 滝沢寛之先生

今回の高速演算記第23回は私共G-DEPが技術指導を頂いております東北大学大学院情報科学研究科の滝沢寛之先生に、先月行われたSC12について寄稿頂きました。

滝沢寛之先生 プロフィール
 

はじめに

 今年、高性能計算分野の最高峰の国際会議であるSC12は、米国ソルトレイクシティで開催されました。日曜日(11/11)から関連イベントが始まるために前日の土曜日に現地入りしようとした関係者も多かったのですが、ソルトレイクシティ行きの飛行機はすべて混雑しており、しかも日本からの便が遅れたこともあって、現地にたどり着くまでに相当苦労した方が多かったようです。また土曜日、日曜日には寒波が来ており、最低気温零下5度の厳しい寒さの中で始まったSCでした。ただし、外の寒さとは打って変わって会場内は熱気に包まれており、展示会場では各機関が趣向を凝らした展示を行っていました。

 ご存じのとおり、スーパーコンピュータ (スパコン)の世界ランキングであるTOP500リスト(http://www.top500.org/)は、年二回、6月のISCと11月のSCで発表されます。今回のランキングでは、「2位じゃダメなんでしょうか」で一般の方々にも有名になった日本の京コンピュータが残念ながら2位を保てずに3位に後退 (前回6月は米国Sequioaに続いて2位)し、米国オークリッジ国立研究所 (ORNL)のTitanが1位を獲得しました。昨年のSC11でアナウンスされていたとおり、TitanはNVIDIA社の最新のKepler世代GPUを18,688基搭載した、超大規模なGPUスパコンです。その理論演算性能を見ると、90%超はGPUによって実現されています。また、TOP500における性能評価尺度として使われているHigh Performance Linpack (HPL)を実行する際、CPUは制御のためだけに使われており、計算はもっぱらGPUで行われたそうです。まさに、最新世代GPUの計算能力をフル活用して世界一の性能を達成したシステムであると言えるでしょう。理論演算性能が27.113 Pflop/sでありながら、消費電力はわずか8.9 MWであり、電力あたりの性能という観点からも優れたシステムになっています。


図1 会場は雪景色

 

図2 東北大学のブースには謎のSXマンが登場

 

GPUコンピューティングの動向

 今年のSC12では、例年以上にGPUコンピューティングの話題が盛りだくさんでした。特に、Titanが米国のGPUスパコンとして初めてTOP500の頂点に立ったということもあって、その関連の話題が多かったです。Titanの計算能力の大部分を支える最新のKepler世代のTeslaであるK20Xや、その新機能を使うためのCUDA5など、最新機能の紹介が盛んに行われていました。電力効率を最重要視して再設計されたSMX, カーネルから他のカーネルを呼ぶことができるDynamic Parallelism, 一つのGPUを分割して複数のカーネルを同時実行するHyper-Qなど、すでに様々なところで宣伝されていますのでご存じの方も多いと思います。他にもOpenACCやGPUDirect RDMAといったキーワードを頻繁に耳にしました。以下、SC12の招待講演の中からGPUコンピューティングに関連する講演をいくつか紹介します。

 本会議初日(11/13)のArthur Blandの招待講演は、Titanに関する様々な情報を紹介する講演でした。まず、TitanがJaguarの一部を再利用しつつ(再利用によって$25Mも予算を節約できた!)、それをアップグレードする形で構築されたシステムであることが紹介されました。Jaguarと比較すると、Titanでは電力消費は19.4%しか増やさずにHPLの実効性能で10倍の性能向上を実現しています。昨今のスパコンの電力効率はPUE (Power Usage Effectiveness)、つまり計算センター全体の消費電力に対するシステムの消費電力の割合で評価されることが多くなってきました。TitanのPUEは1.25であり、計算センターの全消費電力の4/5がTitanに使われていることになります。招待講演では、世界一グリーンなデータセンターというフレーズが使われていました。さらに、すでに重要なDoE(米国エネルギー省)アプリケーションがTitan向けに移植されており、性能評価も始まっていることが述べられていました。
 

図3 Titanに移植された主要アプリケーション(Bland氏の講演資料より)
 

 本会議2日目(11/14)には「Compiling for Accelerators」というセッション名で、OpenACCコンパイラを開発しているPGI社とCAPS社のそれぞれの技術者による招待講演がありました。PGI社のMichael Wolfはアクセラレータ向けプログラミング環境の歴史を振り返りつつ、コンパイラでGPUの性能を引き出す上での技術的困難を紹介していました。また、CAPS社のFrançois Bodinは、OpenACCに自動チューニング機能をつけるという話をしていました。このようなセッションが設けられたことは、昨年のSC11で発表されたOpenACCがここ一年で本格的に普及したことを顕著に示しています。

 本会議3日目(11/15)の招待講演ではNVIDIA社のSteve ScottがGPUの発展の歴史を振り返り、米国NSCA Blue WatersとORNL Titanを現在のGPUスパコンの例として紹介した後に、今後の展望について述べています。CUDA以前、GPUの計算能力を使うためには非常に変則的なプログラミングが必要でしたが、CUDAの登場が歴史的転換点となり、GPUが実用的なアクセラレータとして生まれ変わったことが分かりやすく述べられていました。また、HPCプログラミングの将来としては並列性の利用しか選択肢が無く、その効率を高めるためにノード内の局所性やメモリ階層の利用の重要性が強調されていました。CUDA登場以前の非生産的なGPUプログラミングがCUDAで置き換えられたように、複雑な将来のHPCプログラミングもコンパイラ技術を活用すべきで、そのような技術としてこの講演でもOpenACCが言及されていました。
 

図4 TOP500の中でNVIDIA GPUを使ったスパコンの数の変遷(Scott氏の講演資料より)
 

 同じく、本会議3日目の招待講演でCray社のJohn Levesqueは、この2年間Titanに向けてどのように準備をしてきたか、というテーマで講演をしました。どのスパコンでもそうですが、科学技術でブレークスルーを起こすことがスパコンの存在意義であり、そのためにはアプリケーション開発が極めて重要です。彼らが注力してきた6つのDoEアプリケーションは、それぞれの事情に応じて様々な方法でTitan向けに移植されました。例えばS3Dは既存のコードを整理しつつOpenACCを使うことで、GPUを利用するアプリケーションに生まれ変わっています。一方、CAM/SEはCUDA FortranとOpenACCを組合せて使うことによってTitan向けに移植され、Denovo sweepはC++のメタプログラミングを使って全面的に書き直すというアプローチで移植されました。LAMMPSはCUDAを使ってTitan向けに移植され、複数のMPIプロセスでGPUを共有して利用するように実装されました。Hyper-Qがその効力を発揮するアプリケーションといえるでしょう。

 以上のように、招待講演を俯瞰するだけでもこれだけ多くのGPUコンピューティング関連の話題があり、そのどれもが大変興味深い話でした。

 

実用レベルに達したOpenACC 

 ORNLの前システムのJaguarの時点で、299,008ノードの超大規模システムでした。この規模になるとMPI単独のレベルで利用できる並列性には限りがあって、多くのアプリケーションでスケーラビリティの限界が見られたと先述の講演でBland氏は述べています。このような背景から、MPIでノード間の分散メモリ並列化をするだけではなく、ノード内ではOpenMPでスレッド並列化、GPUスパコンの場合には各スレッド内部でGPUを利用してさらに並列化することで、より多くの並列性を利用しようというのが現在の潮流です。今後、そのような階層的な並列処理がより一般的になるでしょう。Bland氏の同講演でも、明示的に並列性を書くことが必要不可欠であり、MPIとOpenMPとOpenACCがペタスケールのシステムを使うための必須のツールになるだろうと述べられていました。

 OpenACCはOpenMPのようなコンパイラ指示行でGPUを利用するためのもので、昨年のSC11で発表された最新のGPUプログラミング環境です。NVIDIA、Cray, PGI, CAPSの4社が主導して仕様策定や環境整備を進めています。SC12では、OpenMPの仕様の中にOpenACCが取り込まれることも正式決定されたようです。筆者の研究グループ(東北大学)でもOpenACCの実用性を評価しているところですが、ハードウェアの持つ能力をぎりぎりまで引き出す必要でもない限り、CUDAを使わなくてもOpenACCで十分実用になるレベルまで達していると感じています。

 

図5 GPU搭載/非搭載の両方で動くように配慮されて開発されたS3Dのコード(Levesque氏の講演資料より)
 

 その実用性を端的に示す例として、Levesque 氏の講演でも詳しく紹介されていたS3Dが挙げられます。S3Dは、CUDAを一切使わずにOpenACCだけでTitan向けに移植されたアプリケーションであり、同氏によると現存する最大規模のOpenACCアプリケーションだそうです。元々のS3Dはall MPI (いわゆるflat MPIとも呼ばれる)で並列化されており、ノード内並列のためのOpenMPすら使われていなかったため、まずはOpenMP化のためにコードを整理(リファクタリング)したそうです。その後にGPUを利用するためにOpenACCの指示行をコードに挿入しました。このようにMPIレベルでの並列性だけを使っていたアプリケーションを、複数階層での並列性を利用するように移植する作業(ハイブリッド並列化)は容易ではありません。OpenMPやOpenACCはプログラミングを容易にしてくれますが、並列化の難しいところはそのような表面上のプログラミング技術だけではなく、どのように並列化を行うべきかをアルゴリズムレベルに立ち戻って考えなければならないことでしょう。S3Dの場合、特にOpenMPの階層での並列化には大変な労力を費やしたようです。S3Dに関してはSC12の技術論文としても出版されていますので、さらに詳細を知りたい方はそちらをご参照いただくのがよいでしょう。

 現状、OpenACCでCUDAと同等の最適化技法を全て行えるわけではありません。しかし、OpenACCとCUDAは共存できるため、まずはOpenACCで全体をGPU化し、それでは性能が足りないところをCUDAでさらに最適化するという使い方ができます。
筆者の手元にも、わずか数行の指示行をいれただけで大幅な速度向上を達成できる実アプリケーションがあります。CUDAやOpenCLといった特殊な環境を使わなくても、GPUの優れた計算能力を実用的なレベルで利用できるようになったのはとても大きなニュースだと思います。最先端の高性能計算アプリケーション開発にも、その影響は着実に現れています。
 

 

さいごに

 冒頭でも述べたとおり、今回のTOP500では京コンピュータが3位に後退しました。ただし、スパコンの一義的な目的は大規模シミュレーションを高速に実行して科学技術の進展に貢献することであり、TOP500のランク付け方法はそのスパコンの価値を必ずしも反映していません。実用的な科学技術計算における性能に基づいて表彰される栄誉あるゴードンベル賞は、京コンピュータを使った筑波大/東工大の研究チームに贈られました。昨年に引き続き、京コンピュータを使った成果が2年連続でゴードンベル賞を受賞したことになり、その価値が国際的に認められた証左であると言えます。その一方で、今回のTOP500で1位となったTitanの真価が問われるのはこれからです。Titanが真価を発揮するために、より多くの研究者・開発者が超大規模GPUスパコン向けにソフトウェア開発を行っていくことでしょう。その成果がGPUコンピューティングのさらなる発展の原動力になっていくことが期待されます。
 



滝沢寛之先生

http://www.sc.isc.tohoku.ac.jp/~tacky/  

東北大学大学院情報科学研究科 ソフトウェア科学講座アーキテクチャ学分野 准教授
東北大学工学部機械知能・航空工学科 (兼担)
東北大学サイバーサイエンスセンター(兼担)
  

2003年~ グッリドコンピューティングやグラフィックスハードウェアを用いた高速計算(GPUコンピューティング)の研究について国内でもいち早く着手。その成果と実用性を提唱。
2004年 ISPA'04 Best Paper Award 「Multi-Grain Parallel Processing of Data Clustering on Programmable Graphic Hardware」
GPUによるデータクラスタリングの階層的並列化
2006年 船井情報科学奨励賞 「階層的並列化による大規模データクラスタリングに関する研究」
2008年 野口研究奨励賞 「Hierarchical parallel processing of largescale data clustering on a PC cluster with GPU co-processing」
GPU 搭載PC によるPC クラスタシステムを用いた大規模データのクラスタリング実現手法
2009年 石田記念財団研究奨励賞 「描画処理ハードウェアによる高性能計算に関する研究」