世界のスーパーコンピュータとそれを動かす人々


10月 30, 2017

HPCの歩み50年(第141回)-2007年(g)-

小柳 義夫 (高度情報科学技術研究機構)

ISCにおいて、Burton Smithは今後の問題点として、The ILP wall, The Power wall, The Memory wallの3つを挙げ、いずれもが高度並列処理により解決されるだろうと述べた。Tom Sterlingは今年の特徴を「新しいムーアの法則としてのマルチコア」と位置づけた。Blue Gene/Pが発表された。

ISC2007

1) はじめに
ISC (International Supercomputing Conference)は、Prof. Hans Meuer(University of Mannheim)が主宰するヨーロッパ最大のHPC国際会議である。今年の第22回目のISC2007(これまでと異なり正式にはISC’07らしい)は6月26日(火)から29日(金)まで旧東ドイツのDresdenのCongress Centerで開かれた。Dresdenは昨年に続き2回目である。詳細なISC’07報告を書いた。当時、イタリアやギリシャでは45℃もの熱波であったが、Dresdenは10℃台で寒いくらいであった。参加者は44カ国から1213人とのことである。

この会議の委員会には、下記の日本関係者が協力している。

Advisory Board 三浦謙一(NII)、渡辺貞(理研)
Program Committee 佐藤哲也(地球シミュレータ)
Scientific Program Committee 三浦謙一(NII)
ISC Award Committee 関口智司(産総研)

 

2) 講演概要

(a) Burton Smith
今後の問題点として、The ILP wall, The Power wall, The Memory wallの3つを挙げ、いずれもが高度並列処理により解決されるだろうと述べた。そのためには、フォン・ノイマンのモデルを脱却して、新しいコンピュータモデルを生み出し、新しいソフトウェア環境を作ることの重要性を指摘した。

(b) Tom Sterling
過去一年を総括する講演で、今年の特徴を「新しいムーアの法則としてのマルチコア」と位置づけた。しかしそのためのソフトウェア環境は整備されていないと指摘した。マルチコアに関する講演では、それをさらに精密化し、種々のマルチコアの実例を紹介しながら、改良的なアプローチではだめで、もっと根本的なパラダイム変革が必要だと述べた。

(c) 牧本次生
有名な「牧本ウェーブ」の考察に基づき、コンシューマ電子機器のデジタル化はますます進行し、市場の収束をもたらすこと、チップの技術革新により、価値指数は今後の10年に1000倍に増大すること、将来のアーキテクチャにとって、プログラム可能性と再構成可能性はキーであると述べ、ロボットは新しい機会を開くであろうと期待を述べた。

(d) John Shalf
マルチコアの問題点はメモリバンド幅だと言われているが、これは嘘だと常識を覆した。家電などの組み込みプロセッサの方が多くの経験を積んでおり、われわれはそれから学ぶべきだと主張した。フォン・ノイマンのモデルを捨て、トランザクション・メモリという新しいモデルに移るべきことを強調した。

(e) Julien Langou
マルチコアの時代に数学ライブラリはいかにあるべきかを述べ、密行列線形代数ライブラリの新しい動向について述べた。

(f) 石川裕
ペタフロップスのソフトウェアやミドルウェアについて、階層的資源管理、Jittering、メモリ・アフィニティ、電力管理、フォールト・トレランスとファイルシステム、プログラミング環境の問題を指摘し、T2K連合ではこれをどういう方向性で解決しようとしているか、について述べた。

3) 展示
Dresdenは展示会場が2400m2と広いので、85件もの展示があった。日本関係では、理化学研究所、富士通、日本電気であった。筆者が印象深かったのは、SunのMagnumとNVIDIAのただならない意気込みであった。

(a) IBM
今回最も注目されたのは、IBMのBlue Gene/P の発表である。これはBlueGene/Lの後継機であり、チップにPowerPC 450 のプロセシング・コアを4個搭載し、これを850 Mhzで動作させる(ピーク13.6 GF)。現在のBlueGene/Lは、PowerPC440を2個搭載し700 Mhzで動作するので、チップあたり2.4倍の高性能化であるが、消費電力は20%しか増加していないという。外形は同じ箱を用いているようだ。ボードに32個のチップで、32ボードでラックを構成し、256台のラック(今の4倍)を並べると、3.56 PF というピーク性能が出てくる。メモリが増強されたそうであるが、BlueGene/L ではメモリがネックだったので、どこまで増強されたか楽しみである。マルチスレッドのSMP機能(チップ内、ボード内?)も提供されるとのことである。

ニュースによると、アメリカのANLやドイツのMax Planck InstituteやResearch Centre Jülichが2007年中に導入を予定しているほか、CUNY/BNLやイギリスでも計画されているそうである。ANLには最初32ラックのシステムが入るとのことだが、最終的に何ラックのシステムが導入されるであろうか(72ラックだとちょうどピーク1PF)。

(b) Sun Microsystems
展示会場で目を引いたのが、入口近くのサンのブースにおかれた巨大なInfiniband SwitchのMagnum (ラテン語で「大きい」の中性形。ワインや実弾で増量したものを指す)である。何しろ、288個のポートが一面に設置されている。全部のポートにラインが接続されたらさぞかし壮観であろう。スイッチ用のチップはMellanox社のものを使っているそうである。大昔の手動電話交換機を思い出した。最大3456ノードをサポートできるという。New York Times(6月26日号)でも紹介されていた。これ2台でquad-coreのOpteron (Barcelona)のブレードサーバ82台を接続したConstellation Systemは、500 TF の性能を持ち、テキサス大学のTACCに納入される予定である。Barcelonaのチップが間に合えば、次回のTop500で、Blue Gene/Pに先んじてトップを飾れるかもしれない。

Sun Microsystemsは、HPCSのPhase III で敗れて以来、HPCの分野で陰が薄くなっていたが、これで一挙に挽回することをねらっているようだ。

(c) NVIDIA
もう一つ注目されるのがNVIDIAである。この会社はグラフィック用のGPUを製作していたが、この技術をHPCに振り向けようとしている。いわゆる、GPGPU (General Purpose Graphic Processor Unit) である。NVIDIAは、GeForce 8(G8x)アーキテクチャベースのGPUコンピューティング製品ファミリ「Tesla(テスラ)」を発表した。同時に開発環境として、GPU上での汎用的なコンピューティングを可能にするプログラミングモデルCUDA(クーダ:compute unified device architecture)を発表した。現在のところ32bit浮動小数点しかサポートしていないが、次の版G9xでは倍精度をサポートする予定とのことである。これを聞いて、NVIDIAが本気でHPCに向かっているなと実感した。でも、展示でデモしていたのは旧版であった。

今後Multicore/Manycoreの時代に入ると考えられ、このような製品がいろいろ出てくるものと思われる。

(d) 理化学研究所
今回日本から唯一の研究機関の展示であった。直前に日本で次世代スーパーコンピュータのアーキテクチャが一部公表され、その展示もあったが、現段階ではあまりにも漠然としていて参加者の注目を集めたとは言えない。

4) 開会式
Hans Meuerの開会挨拶のあと、ザクセン州の科学芸術大臣のKnut Nevermann氏が祝辞を述べた。2件の論文賞が発表され、表彰状を授与された。

a) Ron Brightwell, Sandia NL, USA
b) Satoshi Amamiya, Kyushu Univerisity, Japan(九州大学 雨宮聡史)

表彰式で思わず「アマミヤ」と驚き、「ええ? 雨宮先生って見ないよね」と思ったら、ポニーテールのお兄ちゃんが登壇した。雨宮真人教授のご子息とのことである。

5) Top500
Strohmaier (LBNL)が発表した。今回のreplacement rate(今年の新顔)は284にものぼり、半数以上入れ替わったとのことである。例年は200前後。Topの20件は以下の通り。前回の順位で括弧がついているのはシステムが増強されたことを示す。性能の単位はTFlops。

順位 前回 設置場所 システム コア数 Rmax Rpeak
1 1 LLNL BlueGene/L 131072 280.60 367.0
2 (10) ORNL Jaguar – Cray XT4/XT3 23016 101.7 119.35
3 2 SNL Red Storm 26544 101.40 127.411
4 3 IBM Watson Lab. BGW – BlueGene 40960 91.29 114.688
5 BNL New York Blue – BlueGene 36864 82.161 103.219
6 4 LLNL ASC Purple p5 575 1.9 GHz 12208 75.76 92.781
7 Rensselaer Polytechnic BlueGene 32768 73.032 91.75
8 NCSA Abe – PowerEdge 1955 2.33 GHz 9600 62.7 89.5872
9 5 Barcelona S.C. MareNostrum BladCenter JS21 Cluster 10240 62.63 94.208
10 Leibniz RZ(ドイツ) HLRB-II Altix 4700 1.6 Gz 9728 56.52 62.2592
11 6 SNL Thunderbird – PowerEdge 1850 2.6 GHz 9024 53.00 64.9728
12 7 CEA(フランス) Tera-10 – NovaScale 5160 9968 52.84 63.7952
13 8 NASA Ames Columbia – Altix 1.5 GHz 10160 51.87 60.96
14 9 東工大 TSUBAME Grid Cluster – ClearSpeed 11088 47.38 78.7968
15 (12) TACC(Texas大学) Lonestar – PowerEdge 1955, 2.66 GHz 5848 46.73 62.22
16 11 Maui HPC Center Jaws – PowerEdge 1955 3.0 GHz 5200 42.39 62.4
17 US Army Research L. Michael J. Muuss Cluster 4416 40.61 52.992
18 13 FZJ (ドイツ) JUBL – BlueGee 16384 37.33 45.875
19 LLNL Atlas – Appro Xtreme Server 9216 36.62 44.24
20 14 海洋開発研究機構 地球シミュレータ 5120 35.86 40.96

 

東工大のTsubameは14位、地球シミュレータは20位となった。Top500に入るための最小性能は4.005 TFlopsであある。時間的な推移を見ると、Top1がTop500に落ちるまでの期間は6-8年、Top500の性能がパソコンで達成されるのに8-10年掛かっている。

「10年ごとにアーキテクチャが変わる」と言う(Gordon) Bellの法則[そんなのあったっけ?]をTop500のリストから検証してみよう。たしかに、90年代前半まではベクトルやSIMDが主流であり、その後は2004年くらいまでcustom scalarの時代であり、その後はcommodity clusterが主流になっている。現在重要な問題は消費電力であり、BlueGene型のものが今後どのように主流になっているかが注目される。

その意味で重要なのは、multi-coreとmany-coreである。我々はMooreの法則を安易に(安価に)乱用してきたので、システムの消費電力は膨大になっている。もはや、Mooreの法則のただ乗り(free lunch)はできない。消費電力を下げるために周波数を上げられないので、必然的に並列度が増大し、multi-coreが到来する。消費電力あたり最適なコアの大きさは、現在の贅沢なコアよりは小さいので、many-coreの時代がやってくる。

6) Burton Smith
27日の基調講演として、MicrosoftのBurton Smithが”Reinventing Computing” と題して講演した。

(a) 3つの壁
トランジスタ数は年々増大しているが、クロック周波数やソケットのピン数は増えない。つまり単一プロセッサの性能は頭打ちである。従って並列処理が重要になる。しかし、命令レベル並列性は限界に来ている(the ILP Wall)。チップあたりの消費電力は耐え難いほど大きい(the Power Wall)。また、キャッシュメモリの効果は大きくない(the Memory Wall)。

当分の間、ロジックの費用(ゲート数×周波数 当たりの費用)は下がりつつある。このようなハードウェアをどう使いこなせばよいか。

新しい「キラーアプリ」が登場して、より大きな性能を必要とすることを期待している。たとえば、意味解析、検索、ヒューマンインタフェース、言語、画像、ゲームなど。
マイクロプロセッサは今やマルチコアであり、マルチスレッドである。しかしこれまではアーキテクチャ的に同じものがたくさん並んでいるだけである。このようなシステムをどうプログラムしたらよいのか。

まず、ILP Wallについて考える。これまでILPへの二つのアプローチがあった。一つは、ベクトル命令や、SSEなどであり、もう一つはout-of-order実行、in-order retirement、レジスタリネーミング、分岐予測、投機的実行などである。しかしどちらのスキームも並列度を増やすことはできなかった、それは命令依存や、データ依存アドレス(ポインタを追跡するとか)などのせいである。実際のところ、クロックあたり2-3程度のILCしか実現できていない。ハイパフォーマンスには並列計算が必要である。

次にPower Wallを考えよう。速度をσ倍にスケールするためには2つの方法がある。一つはコアの数をσ倍に増やすことであり、そうすれば消費電力もσ倍に増える。もう一つは、クロック周波数と電圧をσ陪にすることであり、そうすれば動的電力はσの3乗に比例し、静的な電力はσの1乗に比例する。平均はその中間であろう。つまり、σ>1ならクロックのスケーリングはコアを増やすより悪い。しかし、σ<1なら、逆にうまくいく。教訓は、「もしマルチプロセッサが完全に利用されているが熱すぎるとき、プロセッサ数ではなく電圧と周波数をスケールダウンせよ。」並列計算は電力を節約するためにも必要である。

次はMemory Wallである。多くのトランジスタにより、より大きいキャッシュを作ることができるようになった。では、それで十分か、それともスケールアップに問題はあるか? 同一のDRAM合計バンド幅により性能を倍増するためには、キャッシュ・ミス率は半分にしなければならない。では、キャッシュはどこまで大きくする必要があるか。密行列のかけ算やLU分解なら4倍、ソーティングやFFTなら前の2乗、疎行列や密行列とベクトルとのかけ算なら、考えるだけ無駄。クロック周波数がより高速になり、相互接続がより深くなると、キャッシュ・ミスのレイテンシが増加する。すなわち、高性能にすればするほど、より大きいレイテンシは不可避になる。レイテンシとバンド幅は密接に関係している。入力から出力までデータをそのまま輸送するシステムでは、レイテンシ×バンド幅=(必要な)並列度 となる。これは待ち行列理論でLittleの法則と呼ばれるものである。

(b) 並列処理
Memory Wallを克服するにはどうすればよいか。

(1) メモリバンド幅を増やすこと。DRAMの合計バンド幅をギガバイト単位で増やすこと。そしてチップのピンのバンド幅を増やすこと。
(2) メモリレイテンシに対応するために、マルチスレッドのコアを使うこと。もしレイテンシが増えても、スレッド数を増やせばよい。これによりプログラミングモデルは大きくは変わらない。
(3) バンド幅とレイテンシを改善するためにキャッシュを用いよ。コンパイラがより簡単に局所性を最適化できるようにせよ。キャッシュ・ラインを短くし、投機のミスを防げ。

結局メモリのバランスを保つためには並列計算が必要である。

我々はフォン・ノイマンの前提に60年間依拠してきた。いまや、それ(とそれに付属するもの)は代えなければならない。逐次処理は変数がどんな値を取るかということでプログラムをスケジュールしているが、並列処理ではこのスキームは危険である。逐次プログラミングは並列プログラミングより簡単であるが、逐次プログラムは今や遅いプログラムである。だれでもうまくプログラムすることができるような並列プログラミングが必要である。我々の分野の懸賞金は高い。コンピューティングは再発明されなければならない。

この問題をどう解決すればいいのか。マイクロプロセッサはものすごい勢いで高速化している。最近20年で1000倍以上になった。HPCは特殊化のスパイラルに落ち込んでいる。つまり、HPCの応用とはHPCシステムがうまく処理できるような応用のことを意味している。DARPA HPCSプログラムは、この傾向に棹を差そうとしている。並列システムに関する大学の研究は干上がっている。興味もない、アイデアもない、必要性もない、お金もない。しかし、並列計算への興味は必ず再起する。1970年から2000年までの国際会議の論文の分野を調べると、前半はマルチプロセッサが増えたが後半は減っている。

過去から何を学ぶか。並列計算について多くのことはすでに知られている。たとえば、コンパイラ最適化、デバッグと性能チューニング、OS、アーキテクチャなど。これまでのほとんどの研究は、HPCを頭に置いてなされてきた。アイデアのなかには成功したものもしなかったものもある。また、技術的な成功は商業的な成功を意味するわけではない。

(c) 並列プログラミング
まず並列プログラミング言語を取り上げる。現在のところ少なくとも二つのアプローチが成功しそうである。関数プログラミングとアトミックなメモリ・トランザクションである。どちらもそれ自身完全に満足はできるものではない。関数的プログラムはmutable state を許さないし、トランザクションのプログラムの依存性の実装法は汚い。データベースの応用はこの二つのアイデアを統合している。SQLは「最も関数的な」言語である。[データベースの]トランザクションはアトミシティとisolationを保ってデータの更新を行っている。多くの人は関数言語は効率が悪いと考えている。しかし、SisalやNESLはすばらしい反例である。Crayのシステム上で両者はFortranと十分競争できる。またある人々は、メモリ・トランザクションも効率が悪いと考えている。今のところそうかもしれない。やっと最適化を始めたところである。

トランザクションと不変量(invariants)について考えよう。不変量はプログラムの保存則である。反復や再帰における量の間の関係であり、データ構造の統一性の法則である。もし文pとqが不変量Iを保存し、両者が干渉しないなら、並列合成{p||q}もIを保存する。もし、pとqがトランザクションのようにアトミックなら、両者は干渉しない。色々な操作は、状態について交換可能であることは少ないが、トランザクションは不変量についての可換性を与える。従って、もしコンパイラが不変量を利用することができればすばらしい。プログラマにそれを与えるよう要求できるか?

並列性のスタイルについて考えよう。われわれは複数のプログラミングスタイルをサポートしなければならない。関数型もトランザクション型も、データ並列もタスク並列も、メッセージ・パッシングも共有メモリ型も、宣言型も命令型も、暗黙型も明示型も。これを実現するにはいくつかの言語が必要かもしれない。結局現在も複数の言語を用いている。言語間の相互通用性(.NETのような)は大いに助けになるであろう。本質的なことは、並列性がコンパイラに提示されることである。それにより、コンパイラがそれをターゲット・システムに適応できる。また、同じ理由で局所性もコンパイラに提示されることが重要である。

並列性に対するコンパイラの最適化は可能か? ある人は、自動並列化が失敗したことは実証済みであるという。そうではない、ベクトル化も並列化コンパイラも、正しいアーキテクチャに対して用いれば、非常に大きな成功を収めてきた。これによりマシン独立な言語を可能にした。なにをやったかというと、並列性のパッケージ化をやった。明示的な並列プログラムでさえそれが必要である。何が失敗だったかというと、それは並列性の発見である。大まかに言って依存性解析は主に局所的な成功にとどまった。大規模な局所性の発見も大変である。局所性解析は依存性解析の別名だからである。大規模な局所性パッケージングが可能かどうか、まだ判断がなされていない。

では並列デバッギングやチューニングはどうであろうか。現在、デバッグには、1ステップずつの実行とprintf()に依存している。これはあまり有効な方法ではない。条件付きのデータ・ブレークポイントは有効であった。つまり、不変量が不変量でなくなったときに停止させるのである。アドホックなデータ精査も非常に重要である。これは一種のデータマイニングの応用である。逐次プログラムのチューニングは、プログラムカウンタが最もしばしば滞在する場所を見つけることである。その答は多くの場合サンプリングで見いだすことができる。それに対して、並列プログラムのチューニングは、並列性が不十分な場所を探そうとする。最も良いとされるアプローチは、タイムスタンプ付きのイベントのログを取ることである。

では並列性に適したOSは何であろうか。まず、[並列]OSはプロセッサのスケジュールを止めなければならない。この仕事はプロセッサや他の資源の仕事である。また資源の変更は、ランタイムと交渉しなければならない。仕事はユーザレベルでスケジュールしなければならない。従って、特権を変更する必要はなく、局所性を保存することが望ましく、最適化はより可能になり、ブロック化された計算は一級になる[何を言いたいのか?]。用途によってはサービスの質が重要になる。このようなばあい、優先度よりデッドラインの方が重要である。ほとんどの並列アプリにおいてデマンド・ページングは悪い考えである。ページ・フォールトで待ちばかり起こってしまう。

(d) アーキテクチャ
並列アーキテクチャについて述べる。並列性はハードウェアから始まった。しかしそれだからと言って、ハードウェアが進んでいるわけではない。じゃまなのはフォン・ノイマンの前提である。たとえば、割り込みとか。ほとんどは修復することは易しい。大きな問題は小粒度の並列性のサポートである。スレッドの粒度はスレッドあたりの状態の量に依存し、ブロックしたときそれをスワップするのにどのくらいの手間が掛かるかに依存する。もう一つの問題は、すべてのプロセッサが同一に見えるべきかどうかということである。異質性という選択はある。ヘテロなアーキテクチャや、ヘテロな実装である。その間で通信をするために共有メモリを用いることができる。しかし、同質のアーキテクチャのデータ型の方が性能は上がるであろう。最大の問題はシステムバランスをどうやって保つかということである。

以上の考察からHPCに対して何が言えるか。これまでHPCは、逐次処理の世界における、孤独な並列処理の前哨部隊であった。しかし今や並列計算はメインストリームである。HPCへの帰結は以下のようにまとめることができる。

(1) HPCの主流のソフトウェアの適応と利用
(2) 共有メモリとメッセージ・パッシングの実行時の結合
(3) プログラミング言語選択のスペクトルを広げること

HPC製品の提供が成功するためには

(1) 今後ますます登場する利用者のアプリとツールのHPC版
(2) 利用者のアプリを可能にし、加速するHPCのサービス
(3) 利用者の想定しているアーキテクチャのモデルをスケールアップできるHPCシステム

HPCはその他すべてのものとともに再発明されなければならない。

(e) 結論
結論として、われわれはいまや計算の基礎の多くを考え直さなければならない。やるべきことは山ほどある。私[Burton]はいくつかのテーマ、特にアプリの問題に触れなかった。それから、われわれは並列性に関して価値のある経験をたくさん持っている。その多くは今後も有用であろう。

7) Tom Sterling
これも恒例のようであるが、Thomas Sterling (Louisiana State University / CalTech)が、過去一年を振り返って”HPC Achievement and Impact — 2007, A personal retrospective”という招待講演があった。今までの私[Tom]の挙げた各年の標語を集めると、

2004 Constructive Continuity
2005 High Density Computing
2006 Multicore to Petaflops

であった。今年の標語は、”Multicore: the Next Moore’s Law” である。

(1) 今年のトレンドのハイライト

a) BG/Lが今年も先頭
b) ペタフロップスへ向けて全開。2010年がターゲット
c) Multicoreは今や当たり前、そしてmanycoreが辞書に載るようになった。次はmyriacoreか?
d) ヘテロ構成、Cell, GPGPU などが噂になっている。ところで、プログラミングモデルは?
e) 他のアクセラレータも魅力的
f) LinuxとIBAのコモディティ・クラスタが進入中。
g) クロック周波数はほとんどフラットだが、少しは上昇中。
h) ソフトウェアの進歩もゆっくりだが、重要な進歩もあり。
i) アプリの広がり
j) 重要なテクノロジの進歩がムーアの法則を押し進めている。
k) Exaflops! Just when you thought it was safe to ignore the Top-500 List.

(2) まずトップマシンについて。まだ平ら。IBMのBG/Lは依然世界最速。

a) BG/Lの説明
b) Cray XT4の説明
c) MareNostrumの説明。
d) TSUBAMEの説明

(3) ペタフロップスへのスプリント

a) DARPA HPCS Phase III
b) DARPA HPCS — Cray Cascade
c) DARPA HPCS — IBM PERCS
d) NSF Cyber Infrastructure / Big Iron
d) IBM Blue Gene/P

(4) Multicore — the Next Moore’s Law

a) IBM POWER6
b) Dual-core Intel Itanium 2
c) Cell Components and Layout

(5) アーキテクチャの多様性の爆発

a) GPGPU
グラフィックのための道具を、もっと広い範囲の応用に用いる。GPUのスレッドは非常に軽いので、スレッドの切り替えのコストはほとんどない。主要な制限は、配列のような規則的なデータ構造を一様に処理するようなものでなければならない。NVIDIAとATI (AMDのFusion)
b) Sun UltraSparc Niagara
c) IntelのTera-scale Processor
d) Roadrunner
e) IBM Cyclops-64 Multi-core Chip
f) TRIPS
Tera-ops Reliable Intelligently adaptive Processing System, DARPAの予算でテキサス大学が開発。

(6) 標準的なHECシステム—2007年版

これも恒例であるが、最後に今年の標準的な先端的システム像を示した。
— コモディティ・クラスタ(トップはMPPか?)
— Intel 64-bit x86 microprocessor (Woodcrest) (私[Tom]は、本当はOpteronが好きなのだが)
— Hewlett-Packardがシステム統合
— Dual Core
— 2048 scalar Processors
— 10 Teraflopsの性能(Top500の平均)
— 2 TB main memory (1 GB/proc. core)
— Infiniband interconnect
— MPICH-2
— Linux
— 8 racks

ISC2007の後半は次回に。

(画像:ISCロゴ)

left-arrow   50history-bottom   right-arrow