SQUIDのベクトルノード群では、SX-Aurora TSUBASAを利用したベクトル計算が可能です。本稿では自作プログラムを、SQUIDのベクトルノード群で実行する方法について解説しています。
 

SX-Aurora TSUBASAについて

SX-Aurora TSUBASAは当センターで運用していたSX-ACEの後継機に当たるシステムです。演算処理を行うベクトルエンジン(VE)部と、主にOS処理を行うベクトルホスト(VH)部により構成されます。PCIeカードに搭載されるVE 部はベクトルプロセッサ、及び高速メモリから構成され、x86/LinuxノードであるVHとPCIe 経由で接続されます。アプリケーション全体をVE 上で実行し、VH がOS 機能を提供する新しいベクトルアーキテクチャにより、高性能なベクトル計算を標準のx86/Linux環境上で利用することができます。本ページでは、このVEを利用する方法を解説します。
 
VEはベクトルノード 1台につき8基搭載しております。VE1基あたりの性能は以下のとおりです。

コア数 10 コア
演算性能 307 GFLOPS/core
主記憶容量 48GB HBM2

SQUIDポイントの算出方法の都合上、VE 8基単位(ベクトルノード 1ノード単位)でご利用いただくことをおすすめしております。
ただし、VE間は共有メモリ構成ではありませんので、8基を同時に使用する場合は、MPIによる並列計算を実施いただく必要があります。

 

基本的な利用方法

SX-Aurora TSUBASAを利用して数値計算を行う場合は、NECが提供するSX-Aurora TSUBASA向けの統合開発環境である"NEC SDK for VE"を利用する必要があります。NEC SDK for VE はコンパイラやライブラリから構成され、プログラムはfortran言語、C言語等で記述することが出来ます。コンパイラが自動ベクトル化を行うため、専門の知識は不要です。
 

1.環境設定の読み込み

SQUIDでは、コンパイラ、ライブラリ、アプリケーション環境などの環境変数設定を Environment modules というツールで管理しています。まずは以下のコマンドを実行して、ベクトルノード向けの推奨環境を読み込んでください。

% module load BaseVEC

 

2.コンパイル方法

NEC SDK for VE におけるコンパイルコマンドは以下のとおりです。

C言語 C++言語 Fortran言語
ncc nc++ nfort

 

たとえばfortran言語で記述されたサンプルプログラム"sample.f90"をintelコンパイラでコンパイルする場合、フロントエンド上で以下のコマンドを実行してください。

% nfort sample.f90

 

3.ジョブスクリプトの作成

ジョブスクリプトを作成し、計算ノードにプログラムの実行を要求します。このような実行方法を「バッチ処理」と呼びます。「ジョブスクリプト」で実行を要求すると、すぐに計算が始まるわけではありません。計算機は沢山の人が同時利用しておりますので、混雑している状況であれば、待たされることもあります。当センターでは「スケジューラ」というシステムが、プログラムの実行の順序を管理しています。

    ※フロントエンド上でプログラムを実行することは原則禁止となっています。
    ※バッチ処理、もしくはインタラクティブバッチ利用での実行をお願いいたします。

 

以下にジョブスクリプトの例を示します。
SQUID ベクトルノードのベクトルエンジン(VE) 1基で、 a.out をシリアル(1コア)実行するジョブスクリプトです。

【グループ名】の部分には自身のグループ名を記述してください。グループ名は id コマンドで確認できます。id コマンドの結果が以下の場合、G12345 がグループ名です。

uid=11111(u6a123) gid=12345(G12345) groups=12345(G12345)

 

このジョブスクリプトはプログラムの実行を行うだけのものになっていますが、オプションを追加で指定することで「ジョブ実行終了時にメールアドレスに通知を送信する」、「出力結果ファイルの名前を指定する」といった要求を行うことも可能です。
ジョブスクリプトの詳細やその他のオプションについては以下のページをご参照ください。

ジョブスクリプトの書き方
 

4.プログラムの実行、結果確認

ジョブスクリプトを計算機に投入し、プログラムを実行します。ジョブスクリプトの投入は下記のqsubコマンドで行います。(ここでは先ほど作成したジョブスクリプトのファイル名をnqs.shとしています)

% qsub nqs.sh

投入されたジョブの状況はqstatコマンド、sstatコマンドで確認可能です。
各コマンドや表示される内容の詳細は下記のページをご参照ください。

スケジューラコマンドについて

 

計算機での実行が終わると、計算結果がフロントエンドに転送されます。
計算結果は、スクリプト中で特別に指定しなければ、標準出力として出力されます。
 
標準出力は"ジョブスクリプト名.oリクエストID"
標準エラー出力は"ジョブスクリプト名.eリクエストID"
 
として出力されます。エディタなどでご確認ください。
 

おわりに

基本的な利用の流れは以上になります。
ここに書かれた内容でわからないことがある場合は、FAQページや利用相談をお気軽にご利用ください。
相談・お問い合わせ