SX-ACE
本システムは2021年2月28日で提供を終了しました。
2020年3月31日まで | 2020年4月1日から2021月年2月28日まで | |
---|---|---|
クラスタ数 | 3 | 2 |
ノード数 | 1536 | 1024 |
コア数 | 6144 | 4096 |
演算性能 | 423TFLOPS | 282TFLOPS |
ベクトル性能 | 393TFLOPS | 262TFLOPS |
主記憶容量 | 96TB | 64TB |
ディスク容量 | 2PB(変更無し) |
また、2020年11月30日以降のサービスについて、以下のような変更があります。
- 2020年11月30日以降は、システムの利用に関する質問等の技術的なサポートは利用できません。
- 2020年11月30日以降、「利用資源追加申請」や「新規利用申請」の受け付けを停止します。12月1日から2月28日の間に、共有利用のノード時間やストレージ資源を使い切った場合も、資源の追加は出来ませんので、不足するかもしれない場合は、事前に申請をお願いいたします。
- 現在ご利用中の、共有利用 ノード時間、占有ノード、ディスク領域(home, ext)は、すべて2021年2月28日までご利用可能です。
- 占有ノード、ディスク領域については、利用期間の延長に伴う追加料金は発生しません。
システム概要
サイバーメディアセンターが導入するSX-ACEは、総計1,536ノード構成(3クラスタ)となる”クラスタ化”されたベクトル型スーパーコンピュータです。各ノードは、4コアのマルチコア型ベクトルCPU、64GBの主記憶容量を搭載しています。これら512ノードを、IXS (Internode Crossbar Switch)と呼ばれる専用のノード間スイッチでノード間接続し、クラスタを形成します。なお、本センターでは、このノード間接続装置IXSは、512ノードを2段ファットツリー構成 1 レーンで接続しており、ノード間最大転送性能は入出力双方向それぞれ 4 GB/sとなっています。本センターでは、2 PBのディスクをNEC独自開発のNEC Scalable Technology File System (ScaTeFS)と呼ばれる高速・分散並列ファイルシステムで管理し、SX-ACEを含む本センターの大規模計算機システムからアクセス可能な構成としています。
ノード性能
各ノードは、64 GFlopsのベクトル演算性能を有するコアを 4 個保有するマルチコア型ベクトルCPU、64 GBの主記憶容量を搭載しており、ノード単体のベクトル演算性能は256 GFlopsとなります。一方、ノード内におけるCPUと主記憶間の最大転送能力は、256 GB/sを保有しています。すなわち、1 Byte/Flopsの高いCPU性能にバランスした高メモリバンド幅が実現されており、気象・気候、流体シミュレーションに適した演算性能とメモリバンド幅バランスを提供するシステムとなっています。
![sx_ace01](/wp-content/uploads/2014/11/sx_ace02_re.jpg)
ノード間の通信は、RCUと呼ばれるノード間通信制御ユニットが専用ノード間スイッチIXSと接続されており、8 GB/s (4GB × 2(双方向))での広帯域データ通信が可能です。
システム性能
本センターで導入するSX-ACEは、3 クラスタ(総計1536ノード)から構成されます。そのため、1 クラスタおよび 3 クラスタあたりの理論性能値は、ノード単体性能から簡単な計算で、下記のとおり導かれます。
SX-ACE
|
|||
ノード毎 | 1クラスタ(512ノード) | 総合(3クラスタ) | |
CPU数 | 1 | 512 | 1536 |
コア数 | 4 | 2048 | 6144 |
演算性能 | 276GFLOPS | 141TFLOPS | 423TFLOPS |
ベクトル性能 | 256GFLOPS | 131TFLOPS | 393TFLOPS |
主記憶容量 | 64GB | 32TB | 96TB |
ディスク容量 | 2PB |
なお、演算性能は、SX-ACE 1ノードが 4コアのマルチコア型ベクトルCPUに加え、スカラ型CPUを搭載していることから、スカラ型CPUの演算性能とベクトル型 CPUの合計理論性能値となっています。
ソフトウェア
本センターのSX-ACEには、オペレーティングシステムとしてSUPER-UX R21.1が採用されています。SUPER-UXはSystem V系のUNIXに基づき、高いユーザエクスペリエンスを提供する一方で、SX-ACEのハードウェア性能を最大限にまで引き出すことのできるオペレーティングシステムです。これまでセンターが保有・提供してきたSX-8R、SX-9でもSUPER-UXがオペレーティングシステムとして採用されてきた経緯があるため、SX-8R、SX-9を利用されてきた利用者の方には親しみやすく、使いやすいオペレーティングシステムです。
また、本センターのSX-ACEでは、SUPER-UX上で動作、チューニングがなされた下記のソフトウェア、ライブラリを提供します。
SX-ACE | |
---|---|
分類 | 機能 |
開発環境ソフトウェア | Fortran95/2003コンパイラ C/C++コンパイラ |
MPIライブラリ | MPI/SX |
HPFコンパイラ | HPF/SX V2 |
デバッガ | dbx/pdbx |
性能解析ツール | PROGINF/FILEINF FTRACE prof |
数値計算ライブラリ | ASL |
統計計算ライブラリ | ASLSTAT |
数学ライブラリ集 | MathKeisan (ARPACK, BLACS, BLAS, FFT, LAPACK, PARBLAS, PARFFT, PARPACK, CBLAS, SBLAS, ScaLAPACK) |
計算化学用ソフトウェア | Gaussian09 |
フロントエンド | |
---|---|
分類 | 機能 |
開発環境ソフトウェア | Fortran95/2003クロスコンパイラ C/C++クロスコンパイラ Intel Cluster Studio XE |
HPFコンパイラ | HPF/SX V2クロスコンパイラ |
デバッガ | NEC Remote Debugger |
性能解析ツール | FTRACE NEC Ftrace Viewer |
汎用可視化ソフトウェア | AVS/ExpressDeveloper |
なお、SX-ACEへのジョブ管理には、JobManipulatorとNQSIIを中核とした統合スケジューラを採用しています。
スケジューラについてはこちらをご参照ください。
チェックポイント/リスタート機能
SX-ACEは、実行中のプログラムを任意の時点で中断させ、メモリ上のデータをディスクに書きだすことで、状態を保存する機能(チェックポイント)を持っています。保存した状態から再開させること(リスタート)も可能です。
例えば、緊急メンテナンスが必要となった場合に、実行中のジョブを一時中断しておき、メンテナンス終了後に再開する、といったことが可能となります。
SX-ACEでの性能チューニング
本センターがこれまで保有・提供してきたベクトル型スーパーコンピュータSX-8R、SX-9では、多数のベクトル型CPUが大規模な主記憶装置上で演算を行う共有メモリ型のスーパーコンピュータでしたが、SX-ACEでは上記のような小規模化したノードが多数接続された分散並列メモリ型のスーパーコンピュータとなっています。分散並列メモリ型のスーパーコンピュータでは、異なるメモリアドレス空間を有するノード間でデータを交換しながら通信を行う必要があります。そのため、SX-ACEでの性能チューニングには、上述したノード内アーキテクチャ、ノード間アーキテクチャ、およびそれらの通信特性に関して基本的な知識を持っておくことが前提となります。
SX-ACE上で性能チューニングを行う方法には、大別して、ノード内並列(共有メモリ並列処理)、ノード間並列(分散メモリ並列処理)の2種類があります。前者のノード内並列処理は、SX-ACEのノード内に搭載されたベクトル型CPU4コア内で計算負荷を分散する方法です。後者のノード間並列処理は、SX-ACEの複数のノードに計算負荷を分散する方法です。
ノード内並列(共有メモリ並列処理)
この方法の特徴は、ベクトル型CPU4コアが主記憶64GBのメモリ空間を”共有”することにあります。一般的に、並列計算においては、分散メモリ型より共有メモリ型のほうがプログラミング、チューニングが容易といわれています。SX-ACEにおいても、この一般論があてはまり、ノード間並列よりもノード内並列のほうが容易であると言えます。
SX-ACEでのノード内並列は、「自動並列」「OpenMP」といった方法が代表的です。
なお、自動並列化で並列化されなかったり、あるいは明示的に並列化を強制/無効化したい場合には、開発者がソースコードにコンパイラ指示行を挿入して並列化を制御することできます。詳細は、こちらをご覧ください。
(準備中)
OpenMPは共有メモリ並列プログラミングのための標準API(Application Programming Interface)です。文字通り、OpenMPは、共有メモリ型の計算機を対象としています。例えば、以下のように、ソースコードにコンパイラに対する指示行(Compiler Directive)を挿入してコンパイルするだけで、マルチスレッド実行する実行モジュールが自動的に生成されるため、初学者が比較的簡単に着手できる分散並列化手法です。Fortran、CあるいはC++で利用できます。
例1
#pragma omp parallel
{
#pragma omp for
for(i =1; i < 1000; i=i+1) x[i] = y[i] + z[i]; }
例2
!$omp parallel
!$omp do
do i=1, 1000
x(i) = y(i) + z(i)
enddo
!$omp enddo
!$omp end parallel
OpenMPについては、書籍、インターネットから多くの情報を取得できますの で、より詳細な利用方法については、参考にされるとよいでしょう。
ノード間並列(分散メモリ並列処理)
この方法の特徴は、異なるノードの主記憶を利用する計算方法であるため、同一のメモリ空間を共有せず、分散配置され た複数の独立したメモリ空間を利用することにあります。このことが、分散メモリ並列処理が共有メモリ並列処理よりも難しい要因となっています。
SX-ACEでのノード間並列は、「HPF (High-Performance Fortran)」「MPI (Message Passing Interface)」を利用する方法が代表的です。
Message Passing Interfaceはメッセージパッシング方式に基づく分散並列プログラミングのためのライブラリ、API(Application Programming Interface)を規定しています。MPIでは、分散メモリ並列処理環境上で発生しうるMPIプロセス間の通信パターンを想定し、あるプロセスがあるプロセスと通信をおこなう1対1通 信(例えば、MPI_Send, MPI_Recvなど。)、複数のプロセスが同時に関係した通信をおこなう集合通信(例えば、MPI_Bcast, MPI_Reduceなど。)に関する、直感的で分かりやすいAPIを提供します。MPIによる分散並列化では、開発者が複数のMPIプロセス間でのデータ移動、計算負荷分散を考慮しつつ、ソースコードを作成しなければならないため、初学者にはすこし敷居が高い分散並列化手法です。 しかし、計算機システムのハードウェアアーキテクチャや特性を理解してコーディングを行うことができる中・上級者になれば、HPFよりも高性能なソースコードを開発することができるようになるでしょう。なお、今日では、MPIは事 実上標準(de facto standard)になっており、数多くの分散並列化を行うシミュ レーションや解析処理で用いられています。また、今日の計算機アーキテクチャ が”クラスタ化”していることも背景にありますので、MPIは習得しておくのがよ いでしょう。
HPF (High Performance Fortran)は、分散メモリ型並列計算機向けの拡張がなされたFortranであり、現在国際的な標準となっています。
このHPFは、OpenMPと同様に、データや処理の並列化に関するコンパイラに対する指示行(Compiler Directive)をソースコードに挿入してコンパイルするだけで、複数のプロセスで実行する実行モジュールが自動的に生成されます。コンパイラが並列計算に必要となるプロセッサ間の通信や同期の指示を生成してくれるため、初学者にも比較的容易にノード間並列が実現できます。ただし、HPFという名が示す通り、Fortranの拡張ですので、Cではご利用いただけません。
例
!HPF$ PROCESSORS P(4)
!HPF$ DISTRIBUTE (BLOCK) ONTO P :: x,y,z
do i=1, 1000
x(i) = y(i) + z(i)
enddo
【参考資料】
第1回 次期スーパーコンピュータ「SX-ACE」利用説明会資料(2014/09/02開催)
第2回 次期スーパーコンピュータ「SX-ACE」利用説明会資料(2014/11/26開催)
SX-9 | SX-ACE | |
---|---|---|
CPU数(core数) | 16CPU | 1CPU (4core) |
最大ベクトル性能 | 1.6TFLOPS | 256TFLOPS (x1/6.4) |
主記憶容量 | 1TB | 64GB (x1/16) |