MPI-Adapter チュートリアル
富士通研究所

住元 真司

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

発表の概要• MPI-Adapterとは何か？
• MPI-Adapterの概要• MPI-Adapterの仕組み• MPI-Adapterの利用• デモンストレーション

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 20102

MPI-Adapterとは何か？

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

クラスタを使っていてこんなことで困ったことはありませんか？
• 複数クラスタでのプログラム開発– 実行するためにソース転送、コンパイルする手間– クラスタ毎に性能が違って、それが環境の問題なのか、プログラムの問題なのかわからない。

• オープンソースアプリの利用– ソースをダウンロードしてコンパイルするのが面倒• 昔のクラスタ計算環境で作成したバイナリ利用– 実行バイナリはあるが、実行環境もコンパイル環境もない。

• マルチコアノートＰＣ上での開発環境– 移動中にプログラム開発をやって、実行だけはリモートで大きなクラスタを使いたい。
このような環境でもＰＣクラスタを便利に使いたい
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 20104

MPI-Adapterとは？
• PCクラスタをより便利にするプログラム– MPIアプリケーションがコンパイルされた環境と、実行されるクラスタ実行環境との違いを吸収するアダプタです– 大学センターでも、個人環境でも手軽にユーザが使えることをめざしました• 動作条件があります– 実行プログラムが動的リンクのMPIライブラリを使っていること– 各サイトに固有な動的リンクライブラリは個別に準備する必要ありPCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 20105

MPI-Adapterを使うとPCクラスタの利用法はこう変わります。
• 複数のクラスタでプログラム開発– 同じ実行バイナリを各クラスタに転送して実行可能– 実行バイナリ部分はまったく同じのため、意図的にＭＰＩラン
タイムを変更して性能差をみることができます。

• コンパイルするのが面倒– 単一の実行バイナリをダウンロードし、複数の異なる実行環境のクラスタで実行できます。

• 昔のアプリケーションを実行したい。
– MPIライブラリを最新のクラスタ環境に置き換えての実行が可能になります。

• マルチコアノートＰＣ上での開発環境– 実行バイナリだけ転送して実行可能になります
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 20106

MPI-Adapterの概要

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

eSCienceプロジェクトのめざすもの• 現状： PCクラスタの利用裾野の広がり→ 研究室単位での導入– さまざまな並列アプリの研究開発が実行されている。
– しかし、開発されたアプリの可能性が導入クラスタの規模レ
ベルに留まることが多い。
• 目標： 大学、研究機関の研究による並列アプリをより実用的、より大規模に引き上げ、ペタフロップ
ス級の超大規模アプリの開拓
PCクラスタワークショップ 2010

次世代スーパーコンピュータ大学・研究機関等のスーパー
コンピュータ

PCクラスタ等
次世代スーパーコンピュータ大学・研究機関等のスーパー
コンピュータ

PCクラスタ等

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

8

eSCienceプロジェクト（Runtime）の課題• PCクラスタ毎に実行環境が異なり、ユーザがクラスタ毎の実行環境を意識する必要あり。
– プログラムの実行の仕方：• TSS実行コマンドの違い、バッチスクリプトの記述などの変更が必要– 実行プログラムに必要なファイル群へのアクセス：• 必要なファイル群を個別に手動での転送が必要– 実行プログラムのコンパイル：• ソースファイルからの再コンパイルが必要• MPI-Adapter： ユーザに実行プログラムの再コンパイル不要な環境を提供するために開発
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 20109

MPI-Adapter開発のMotivation• ＰＣクラスタの広がり：– 計算機センタ（RICC, T2K,TSUBAME）、研究室クラスタ• 利用方法が拡大：– インターネットから様々なクラスタを選択利用• PCクラスタ毎のMPI実行環境の違い– 実行環境毎にソースからのコンパイルが必要– 例： T2Kマシンはハードウェア構成がほぼ同等にも関わらず、相互にMPIプログラムを実行する場合再コンパ
イルが必要• もっと簡単に、複数のＰＣクラスタを自由自在に使えないか？
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201010

MPI-Adapterの目指すもの：
シームレスな MPI 実行環境の提供
A University

Commodity-based clusters
at supercomputer centers• 目指すもの：
PCクラスタで作成
A ResearchのMPIバイナリは、Internet
Internet
Labs
他のどのPCクラスタでも実行可能な環境
Submitjobs
を実現する
B University
a.out• Use Cases:
1. 用途によるクラスタの使い分け:
プログラム開発用とプロダクション実行用
2. バイナリ配布: ISV向け、コンパイル不要
3. クラスタ環境の変更: 機能変更、性能向上
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

C University

PC clusters

B Research
Labs

Developer
and ISVs

11

Use Case 1:用途によるクラスタの使い分け
A University

Commodity-based clusters
at supercomputer centers

PC clusters

テスト実行は研究室クラスタA Research
Labs

Internet
Interneta.out

B Research
Labs

Developer
and ISVs

Submitjobs•

C University

B University

プログラム開発とプロダクション実行用

プロダクション実行は大学センターのクラスタ– プログラム開発は、手元のPCクラスタ– プロダクション実行用はセンターのPCクラスタ• 複数のクラスタのシームレスな相互利用：– プログラム実行規模と計算リソース、システムの空き具合、プログラム実行時の課金状況により実行するPCクラスタを選択
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201012

Use Case 2: バイナリ配布
A University

Commodity-based clusters
at supercomputer centers

C University

PC clusters

A Research
Labs

Internet
Internet

Developer
and ISVs

Submitjobs
a.out

B ResearchLabs

B University

Download• 開発したプログラムをMPI実行バイナリとして配布することにより、利用ユーザの利便性を図る• ISVは一つのMPI実行バイナリの提供： 利用者側の実行環境に合わせてISVプログラムを実行
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201013

Use Case 3: クラスタ環境の変更
A University

Commodity-based clusters
at supercomputer centers

C University

PC clusters

A Research
Labs

Internet
Internet

Developer
and ISVs

Submitjobs
a.out

B ResearchLabs

B University• MPIの機能毎に自由な置き換え（組み合わせ）が可能になる– MPIランタイムの個別ユーザの変更は一部の特権ユーザ以外容易ではない、特にプロダクション実行用のクラスタは困難– MPIの集合通信のアルゴリズム変更（関数毎のチューニング）– デバッグ用のプロファイラの動的挿入、ログ情報の動的挿入を、プ
ログラム本体の再コンパイルなく実施可能
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201014

MPI-Adapterの仕組み

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

MPI-Adapter実現の課題
foo.c• MPI規格書には、ABI(Application Binary
Interface) が未定義

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

OpenMPI環境$ mpicc foo.ca.out

MPICH環境• このため、異なる実行環 Execution
境では正常に動作しない。
• このような場合は、再コン
パイルが必要になる。

$ mpirun –np 8 a.out

mpi.so動的リンク
ライブラリ

mpi.so
動的リンク
ライブラリ

Execution• 実行可能とするためには、
ABIを一致させる必要がある。
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201016

ABI違いの原因： MPI定義の型定義• MPIの仕様書にはいく
つかの型が定義• MPIの実装時にどのように型を実現するかは
実装依存– 例： 数値での実装、構造体での実装• この実装の違いが、バイナリの可搬性の障害になっている
PCクラスタワークショップ 2010

用途

型（値例）

Communicator MPI_Comm(MPI_COMM_WORLD)Group

MPI_Group

RequestMPI_Request

StatusMPI_Status

Data type

MPI_Datatype(MPI_Int,)

Operation

MPI_OpWindow

MPI_Win

File

MPI_File

Info

MPI_Info

Pointerの差分

MPI_Aint

OffsetMPI_Offset

Error Handler

MPI_Errorhandler

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

17

ABI違いの原因： MPI定義の型定義
OpenMPIとMPICH2の実装例

Fortran言語

C言語

用途

MPICH2OpenMPIMPI_COMM_WORLD

0x44000000&ompi_mpi_comm_world

MPI_INTMPI_INTEGER

0x4c000405
0x4c00041b&ompi_mpi_int&ompi_mpi_integer

MPI_SUCCESSMPI_ERR_TRUNCATE

0
14

0
15

MPI_COMM_WORLD

0x44000000

0

MPI_INTEGER

0x4c00041b

7

MPI_SUCCESSMPI_ERR_TRUNCATE

0
14

0
15

• OpenMPIとMPICH2ではバイナリ可搬性がない– MPICH2は32bit INTを用いた実装– OpenMPIは構造体を主体とした実装• Fortranは32bit INTを用いた実装
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201018

MPI-Adapterのアプローチ
foo.c
MPI_Init(&argc, &argv);
MPI_Comm_rank(MP I_COMM_WORLD, &rank);• MPI-Adapterを2つの異なるＭＰＩ実装の間に挿入し
MPICH 環境
ＡＢＩの整合性を確保– ユーザはＭＰＩ実行環境の違いを意識しないで、異なるクラスタ上でのプログラ
ム実行可能$ mpicc foo.ca.out$ mpirun –np 8 a.out
adaptor.so

Execution

Open MPI環境

mpi.sompi.so
動的リンク
ライブラリ

Execution

動的リンクライブラリ

int MPI_Comm_rank(int comm, int *p){
int cc;void *ocomm = convMPI_Comm(comm);
call_MPICHMPI(&cc, “MPI_Comm_rank”, ocomm, p);
return cc;}

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201019

MPI-Adapterの動作内部構造•

ABI変換部と、関数割り当てテーブ
ルにより動作OpenMPI→MPICH
MPI programusing Cstatic inline voi d mpiconv_s2d_comm(d_ MPI_ Comm * dcomm, s_
MPI_Comm comm) {if(comm == s_MPI_COMM_ WORLD)* dcomm = d_ MPI_ COMM_WORLD;
else if(comm == s_ MPI_COMM_NULL)* dcomm = d_ MPI_ COMM_ NULL;
else if(comm == s_ MPI_COMM_S ELF)
* dcomm = d_ MPI_COMM_S ELF;
else {
if(sizeof(s_MPI_ Comm) >= sizeof(d_ MPI_Comm)) {*((d_ MPI_Comm *)dcomm) = (d_ MPI_ Comm)comm;} else {*((d_ MPI_ Comm *)dcomm) = mpiconv_s2d_comm_hash(comm);}} }MPI_Send

ABI変換部Open MPI ABIMPI-Adapter
MPI_Comm_rank

libmpi.so
MPICH
ABI

int MPI_Comm_rank(int comm, int *p){
int cc;void *ocomm = convMPI_Comm(comm);
call_MPICHMPI(&cc, “MPI_Comm_rank”, ocomm, p);
return cc;}
PCクラスタワークショップ 2010

MPI_Comm_rank
MPI_Comm_rank

libmpich.so

関数割り当てテーブル

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

MPICH
20

ABI互換の適用性： MPIライブラリの系譜
MPICH

LAM MPI

Argonne National Lab.

Indiana Univ.

LA MPIYAMPII

Los Alamos
National Lab.

Univ. of Tokyo

MPICH-MX

HP MPI

Myricom

HP

Parallelnavi
FUJITSUMPICH2

Argonne National Lab.

MPICH2 over Cray

MVAPICH

Ohio State Univ.

MVAPICH2

Open MPI

GridMPI

Open MPI Project

NAREGI Project

Ohio State Univ.

独自拡張がない限り
同系列MPIのABIは一致する場合が多い

Intel® MPI Library
Intel

Cray

Sun Cluster Tools
Sun Microsystems

MPI over BG/L
IBM

PCクラスタワークショップ 2010

進化
派生

Windows Compute
Cluster Server
Microsoft

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201021

MPI-Adapterの利用

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

MPI-Adapterの利用• SCore 7.0Beta5には、MPI-Adapterのαバージョンが含まれています。
• MPI-Adapterの作り方– ターゲットのMPIランタイムを準備する– 設定ファイルを書く– コンパイル、インストールする• MPI-Adapterの利用法– コマンドの説明– 実行例– デモンストレーション
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201023

MPI-Adapterの作り方（１）ターゲットのMPIランタイムの準備• ターゲットのMPIランタイムを準備する– コンパイル、インストールして、ライブラリを作成– SCoreの場合はMPICH2-SCoreのほか、CentOSの以下が利用可能• MVAPICH2, Open MPI– 標準のインストール先MVAPICH2 /usr/lib64/mvapich2/ 下Open MPI/usr/lib64/openmpi/ 下

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201024

MPI-Adapterの作り方（２）設定ファイルを書く• MPI-Adapterのディレクトリ下の設定ファイルを必要に応じて修正する– 設定ファイル：./score7-src/eScience/Xruntime/mpi-adapters/ mpi.x86_64-rhel5-linux2_6.conf.tmpl
mpinametype
コマンド指定に利用 ビルド時の属性

install_root
インストール先ディレクトリ

mpich_score mpich_score @PCCC_INSTALL_ROOT@
mvapichmpich/usr/lib64/mvapich2/*
ompi
ompi
/usr/lib64/openmpi/*
Type（ビルド時の属性）： mpich_score, mpich, ompi,
hpmpiが指定可能
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201025

MPI-Adapterの作り方（３）コンパイル、インストールする（１）• mpi-adapterディレクトリ下でsmakeコマンドを実行– SCoreの場合は/opt/score/下にインストールされる
s-sumi@mpi-adapter# smake distclean all install• インストール先– コマンド:/opt/score/bin/mpi-adapter 下– ライブラリ： /opt/score/lib/mpi-adapter 下• コンパイル＆インストール後：[s-sumi@tdev000 mpi-adapters]$ cd /opt/score/[s-sumi@tdev000 score]$ ls bin/mpi-adapter
bin/mpi-adapter[s-sumi@tdev000 score]$ ls lib/mpi-adapters/obj.x86_64-rhel5-linux2_6/
mpich_score-mvapich mvapich-mpich_score ompi-mpich_scorempich_score-ompi mvapich-ompi
ompi-mvapich[s-sumi@tdev000 score]$
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201026

MPI-Adapterの作り方（３）コンパイル、インストールする（２）• ライブラリのディレクトリの中身

置き換え用
ライブラリ

[s-sumi@tdev000 obj.x86_64-rhel5-linux2_6]$ ls ompi-mpich_score/dummy
libmpi_f77.so.0.0 libmpi.so.0
rpath
libmpi_f77.so libmpi_f77.so.0.0.0 libmpi.so.0.0
libmpi_f77.so.0 libmpi.so
libmpi.so.0.0.0[s-sumi@tdev000 obj.x86_64-rhel5-linux2_6]$ ls ompi-mpich_score/dummy/
libdummy.so libopen-pal.so libopen-pal.so.0 libopen-rte.so libopen-rte.so.0[s-sumi@tdev000 obj.x86_64-rhel5-linux2_6]$• きちんと作られているか確認

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

ダミー用ラ
イブラリ

27

MPI-Adapterの利用法：基本• 利用の基本スタイル% mpirun –np 4 mpi-adapter [options] mpi-bin.exe
Options:-s: 実行するプログラムのmpiname (スライド24)-d: 実行環境(mpirun)のmpiname (スライド24)
例： ompi, mvapich, mpich_score
デフォールトは, -s ompi, -d mpich_score

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201028

MPI-Adapterの利用法：• Open MPIバイナリをMPICH2/SCoreで実行% mpirun –np 4 mpi-adapter ompi.exe% mpirun –np 4 mpi-adapter –s ompi ompi.exe% mpirun –np 4 mpi-adapter –s ompi –d mpich_score ompi.exe• Open MPIバイナリをMPICH2で実行% /opt/MPICH2/bin/mpirun –np 4 mpi-adapter –d mpich2 ompi.exe% /opt/MPICH2/bin/mpirun –np 4 mpi-adapter –s ompi –d mpich2 ompi.exe

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201029

デモンストレーション

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

MPI-Adapter デモンストレーション• Vmware環境を使ったMPI-Adapterデモ– Intel Core2 Duo(2 core), Cent OS 5.4, SCore7– MPI Runtimes: MPICH2, Open MPI, HP MPI
MPICH2/SCore• NAS Parallel ベンチマークバイナリ– MPICH2, Open MPI, MPICH2/SCore, HP MPI• デモンストレーション– mpirun でプログラム実行
MPI-Adapterを使う場合、使わない場合
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

31

まとめ
• MPIバイナリのABI互換性を実現するMPI-Adapter––––

仕組み、概要について説明
PCクラスタ利用をより便利にするツール
使い方と簡単なデモ
さまざまな、応用が可能で適用範囲が広がる• 実績としては、MPICH系(MPICH2, MVAPICH)、Open MPI、
HP MPIで稼働確認済み• 今後の予定– MPIのテストスーツによる網羅的な品質向上– 利用環境の充実• MPIxxのバージョン毎の違いの吸収(ex. Open MPI)
• MPIバイナリの自動検出– 実運用で実績を積む• 謝辞：研究は、eScienceプロジェクトの一部として実施されたPCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 2010

32

参考文献
• 並列プログラムの実行可搬性を実現するMPI通信ライブラリの設計(情報処理学会 HOKKE 2009, 2009-ARC-182(20) 2009-HPC-119(20)，pp.115120，2009.)
住元真司，中島耕太，成瀬彰，久門耕一(富士通研)，安井隆(日立)，鴨志田良和，松葉浩也，堀敦史，石川裕(東大)• シームレスなMPI環境を実現するMPI-Adapterの設計と性能評価(

情報処理学会 SWoPP 2009、 2009-HPC-121(12)，pp. 1-8, 2009)
住元真司，中島耕太，成瀬彰，久門耕一(富士通研)，安井隆(日立)，鴨志田良和，松葉浩也，堀敦史，石川裕(東大)• The Design of Seamless MPI Computing Environment for
Commodity-based Clusters (Euro PVM/MPI 2009, Lecture Notes in
Computer Science. Springer Berlin / Heidelberg, Volume 5759/2009, ISBN
978-3-642-03769-6, Page 9-19)
Shinji Sumimoto, Kohta Nakashima, Akira Naruse, Kouichi Kumon, Takashi
Yasui, Yoshikazu Kamoshida, Hiroya Matsuba, Atsushi Hori and Yutaka
Ishikawa (2009 Best Papers)
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201033

Thank you.

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201034

付録： MPI-Adapterの技術概要

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201035

MPI-Adapterの概要• 簡単な設定で利用可能• MPI-Adapterのオーバヘッドは無視できる程度• 多くのMPIランタイムに適用可能– 現状、Open MPI, HP MPI→ MPICH, MPICH2での動作を確認– ターゲットのMPIランタイムのヘッダより自動的に
ABI情報を抽出

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201036

MPIライブラリの実装構造例：
Open MPIの場合• C用のMPIライブラリ:
MPIライブラリ本体を実装

MPI programusing Fortran• Fortran用MPIライブラリ:
mpi_send
Fortran→Cコンバータ OpenMPI ABI Open MPI
mpi_send（F2C）による実装が多い
libmpi_f77.so

MPI programusing CMPI_Send

MPI_Send

libmpi.so

Ex MPI_Send• MPICHの場合– libfmpich.so (Fortran)– libmpich.so (C)Open MPIの場合
C++の実装も同様に
C++→C変換

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201037

MPI-Adapterの実装と動作• 変換手順： libmpi.so.0 準備– MPI_Init時にターゲットＭＰＩMPI programのライブラリをdlopen()して関using Fortran
数変換テーブルを作成
mpi_send– 関数実行時に型変換を行い OpenMPI ABI MPI-Adapter、関数テーブル経由で呼出し
mpi_send– 返値も変換して返す
libmpi_f77.so

MPI programusing CMPI_Send

MPI_Send

libmpi.so

Ex MPI_Send• Miscライブラリ対応– OpenMPIのmiscライブラリもダミーを準備（libopenrte.so.0, libopen-pal.so.0）

MPICH2 ABI
mpi_send

MPI_Send

libfmpich.so

libmpich.so

Ex MPI_Send

MPICH2

PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201038

複数のMPIランタイムからのMPI ABI変換情報の自動抽出• MPIオブジェクト情報収集ツールによりMPIヘッダ(mpi.h, mpif.h)から
ABI情報を抽出する– 一つのMPIランタイムにつき一つのABI情報

オリジナル MPI

ターゲット MPI

mpi.h

mpi.h

ABI
info.

ABI
info.

MPIオブジェクト
情報収集ツール#define OrigA 0x001…..

#define TargA &xxxx…..

• 収集したABI情報から
コンバージョン
if(oarg == OrigA) {スケルトン
２つを選択してMPI コン targ = TargA;
バージョンスケルトンに }導入することによりMPIAdapterを生成.
MPI-Adapter
MPI-Adapterの生成
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201039

MPI-Adapter評価• MPI-Adapter挿入オーバヘッド評価– MPI通信遅延（共有メモリ利用）– NAS並列ベンチマーク（Fortran, Class A,B,C）• 実行環境– RX200S2クラスタ(Xeon 3.8GHz, SCore7.0）– ネットワーク：Intel E1000 NIC,
Netgear 48Port Switch– 利用MPI MPICH2/SCore w/ PMX/Etherhxb,shmem
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201040

MPI遅延によるオーバヘッド評価
MPI-Pingpong(mpi_rtt)プログラムによる測定, PMX/Shmem利用

usec FortranOverhead(/MPI call)

C

Open MPI+
MPI-Adaptor

3.154

3.065

0.082(0.022)

MPICH2/SCore

3.103

3.055

0.048(0.012)

Overhead(/MPI) 0.051(0.013) 0.010(0.0025) 0.034(0.0085)• Fortran to C ABIトランスレータのオーバヘッド

単位：usec– MPICH2=0.012usec, Open MPI=0.022usec• MPI-Adapterのオーバヘッド(Open MPI → MPICH2)– Fortran （INT to INT）=0.013usec, C (Pointer to INT)=0.0025usec• 総じて、挿入オーバヘッドは20ns程度と極めて小さい
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201041

NPBによる評価(性能劣化率)
１６ｘ１の結果、Fortranはgfortran16 node

BT

CG

FT

LU

MG

Class A

-0.1%

3.4%

0.2%

0.4% -3.7%

Class B

-2.2%

3.7%

2.9% -0.5% -0.8%

1.6%

4.8%

Class C

0.3%

1.2%

0.4%

0.6%

0.3%

0.1% -5.0%SPIS

0.0% -0.4%• C版のMPI-Adapterと同様の傾向

性能向上– 最大で3.7%のオーバヘッド– MPI-Adapter挿入時の方が速い場合あり（-5.0%）• 性能の違いは直接的なものではなく、間接的なもの
PCクラスタワークショップ 2010

All rights reserved, Copyright (C) Fujitsu Laboratories Ltd. 201042