SX-ACE

システム概要

サイバーメディアセンターが導入する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を含む本センターの大規模計算機システムからアクセス可能な構成としています。

 

【TIPS】ScaTeFS
ScaTeFSは、複数のI/Oサーバにメタデータおよびデータを均等に分散させることで、高速な並列I/Oと大量のファイル操作に強いファイルシステムを実現するだけでなく、単一障害点の排除と自動リカバリによる高い耐障害性とデータ保護も同時に実現した高信頼性を確立したファイルシステムです。

 

ノード性能

各ノードは、64 GFlopsのベクトル演算性能を有するコアを 4 個保有するマルチコア型ベクトルCPU、64 GBの主記憶容量を搭載しており、ノード単体のベクトル演算性能は256 GFlopsとなります。一方、ノード内におけるCPUと主記憶間の最大転送能力は、256 GB/sを保有しています。すなわち、1 Byte/Flopsの高いCPU性能にバランスした高メモリバンド幅が実現されており、気象・気候、流体シミュレーションに適した演算性能とメモリバンド幅バランスを提供するシステムとなっています。

 

sx_ace01

ノード間の通信は、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」といった方法が代表的です。

 

【TIPS】自動並列による共有並列化
この方法では、コンパイラが並列実行可能なループや文の集まりを検出し、それらを並列化します。そのため、基本的には、ソースコードに加筆・修正を行う必要はなく、コンパイラオプションで自動並列オプションを指定することにより、並列化された実行モジュールを生成できます。本センターのSX-ACEでは、"-P auto"オプションをコンパイラに指定することで自動並列化がなされます。

 

なお、自動並列化で並列化されなかったり、あるいは明示的に並列化を強制/無効化したい場合には、開発者がソースコードにコンパイラ指示行を挿入して並列化を制御することできます。詳細は、こちらをご覧ください。

 

(準備中)

【TIPS】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)」を利用する方法が代表的です。

 

【TIPS】MPIによる分散並列化

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は習得しておくのがよ いでしょう。

【TIPS】HPFによる分散並列化

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開催)

 

 

【TIPS】SX-9 vs SX-ACE
SX-9とSX-ACEを比較すると、SX-ACEはSX-9に比較してかなり小規模化しています。SX-9 では、1ノードが1TBの主記憶容量を共有し、16個のベクトル型CPU(最大ベクトル性能1.6TFlops)によって計算が行われるのに対し、SX-ACEでは、1ノードあたり64GBの主記憶容量しかなく、またCPUも4コアのマルチコア型 CPU 1基(256GFlops)で計算が行われます。そのため、ノードあたりの性能を比較すると、大幅に性能が低下したように見えます。実際、SX-9では、最大 16CPUを利用した自動並列やOpenMPでのノード内並列化により性能向上をおこなうことができましたが、SX-ACEでは、最大1CPU4コアでの自動並列あるいはOpenMPでノード内並列化までです。しかし、これまでのSX-9では、最大4 ノードまでのノード間並列までしかできなかったのに対し、SX-ACEでは、一度に最大512ノードを利用したノード間並列が可能となりました。SX-ACEでは、その性能をより引き出すためには、自動並列やOpenMPといったノード内並列よりも、 HPFやMPIといった並列化技法を用いたノード間並列の重要度が高まっているといえます。

SX-9 SX-ACE
CPU数(core数) 16CPU 1CPU (4core)
最大ベクトル性能 1.6TFLOPS 256TFLOPS (x1/6.4)
主記憶容量 1TB 64GB (x1/16)

 

ベクトル型スーパーコンピュータ

SX-ACE

本システムは、総計1,536ノード構成(3クラスタ)となる”クラスタ化”されたベクトル型スーパーコンピュータです。 ...[read more]