• 検索結果がありません。

スライド 1

N/A
N/A
Protected

Academic year: 2021

シェア "スライド 1"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

本日(4/25)の内容

①並列計算の概要

・並列化計算の目的

・並列コンピュータ環境

・並列プログラミングの方法

・MPIを用いた並列プログラミング

・並列化効率

②並列計算の実行方法

・Hello world

・モンテカルロ法による円周率計算

(2)

並列計算のはじまり

並列計算の最初の構想を、イギリスの科学者

リチャードソンが1922年に発表

<リチャードソンの夢>

64000人を円形の劇場

に集めて、北半球全体を

2000ブロックに分け、各

ブロックに32人ずつ割り

当てて一斉に手計算す

れば、リアルタイムに気

象予測が可能

(3)

並列計算の目的

・現代では、コンピュータを駆使して、並列処理。

・n個のプロセッサ(CPU)を用いることにより、計

算時間を1/nに短縮。

・大規模な演算処理を必要とするシミュレーショ

ンを高速に処理。(地震予測、地球温暖化、津波

などのシミュレーション技術などの確立が急務)

(4)

並列コンピュータの開発その1

・1946年に世界最初の汎

用コンピュータENIAC

(400flops)を開発。(処理速

度が1FLOPSのコンピュー

タは、1秒間に1回の浮動小

数点数演算)

表 TOP500

(2006年11月時点)

現在はこちら http://www.top500.org/

(5)

並列計算機の分類

・分散メモリ型(それぞれのプロセッサが個別にメモリを保有)

(短所)データが分散して配置されるため、そのことを考慮したプログラミング開発が必要。 メモリ

CPU(プロセッサ):コンピューターの中央処理装置。命令を読み込み、実行。

メモリ:データやプログラムを記憶する装置でCPUが直接読み書き。

・共有メモリ型(すべてのプロセッサがメモリを共有)

(短所)プロセッサが増すとメモリの書き込みが競合し、並列化の効率を低下。

CPU CPU CPU ネットワーク CPU メモリ CPU メモリ CPU メモリ ノード

(6)

並列プログラミング

・MPMD(Multiple Program Multiple Data)

・複数のプログラムを複数のプロセッサで処理

・プロセッサ間の通信の明示。

・1つのノードで親プロセスを他のノードで子プロセ

スを実行。主従関係を持つ。

・SPMD(Single Program Multiple Data)

・1つのプログラムを複数のプロセッサで処理。

・プロセッサ間の通信の明示。

(1プログラムを複数のプロセッサで処理のため)

・データがどのプロセッサにあるかを確認。

(7)

MPIとは?

・FortranやCなどのプログラミング言語に、サブ

ルーチン(関数)として用いる。

・MPIサブルーチンを用いて、各ノード間で必要

な情報を交換する。

CPU メモリ ノード CPU メモリ ノード ネットワーク

・SPMDのタイプ。

・ノード間の情報交換を通信で行うライブラリ。

(8)

MPIサブルーチン

MPIサブルーチンは3つに分類。

①環境管理サブルーチン

プログラムの最初と最後の部分で必ず使用。

②グループ通信サブルーチン

複数のノード間を通信。

③1対1通信サブルーチン

2つのノード間の通信。

④その他

計算時間や通信時間を計測。

おまじない

(9)

①環境管理サブルーチン

call MPI_INIT(error)

・MPIのプログラムを使用するためにプログラムの

先頭に必ずコールする。

call MPI_FINALIZE(error)

・プログラムの最後に必ずコールする。これがコー

ルされた後はMPIのサブルーチンを呼び出すこと

はできない。

error : 整数。完了コードと呼ばれる。コール文が

実行できた場合は、error=0となる。

(10)

①環境管理サブルーチン

MPI_Abort(MPI_COMM_WORLD, error)

・すべてのプロセスを即時に異常終了する。

MPI_COMM_WORLD(グループ番号)

・コミュニケータを識別する変数。コミュニケータと

はプロセスのグループを識別。プロセスは順序付

けられ、それぞれランクを持つ。

ネットワーク ランク1 ランク2 ランク3 ランク1 ランク2 ランク3 ランク4 コミュニケータ コミュニケータ

(11)

①環境管理サブルーチン

MPI_COMM_SIZE(MPI_COMM_WORLD, tnode, error)

・コミュニケータ(グループ)に含まれるプロセスの和

MPI_COMM_WORLD : 整数。コミュニケータを指定。

Tnode : 整数。 MPI_COMM_WORLDで指定したグループ

内に含まれるプロセス数

error : 整数。完了コードが戻る。

MPI_COMM_RANK(MPI_COMM_WORLD, myrank, error)

・コミュニケータ(グループ)内でのプロセスのランクが戻る

MPI_COMM_WORLD : 整数。コミュニケータを指定する。

myrank : 整数。 MPI_COMM_WORLDで指定したグループ

内のランクが戻る。

(12)

②グループ通信サブルーチン

MPI_Allreduce(&sendbuf, &recvbuf, 1, MPI_INT,

MPI_SUM, MPI_COMM_WORLD);

コミュニケータ内のプロセスの送信(&sendbuf)のメッセージ

が、通信しながら加算(MPI_SUM)され、結果が全プロセス

の受信に送信される。

&sendbuf : 送信バッファの先頭アドレスを指定。

&recvbuf : 受信バッファの先頭アドレスを指定。

1 : 整数。送受信の要素数を指定。

MPI_INI : 送受信のメッセージのデータタイプを指定。ここで

は整数型。

MPI_SUM : 演算の種類を指定

error : 整数。完了コードが戻る。

(13)

③④1対1通信サブルーチン、その他

MPI_Send(&buf, count, MPI_INT, dest, tag,

MPI_COMM_WORLD);

MPI_Recv(&buf, count, MPI_INT, source, tag,

MPI_COMM_WORLD);

MPI_Isend(&buf, count, MPI_INT, dest, tag,

MPI_COMM_WORLD, &request);

MPI_Irecv(&buf, count, MPI_INT, source, tag,

MPI_COMM_WORLD, &request);

MPI_Wait(&request, &status

);

(14)

並列化効率

時間

プロセッサによる計算

算時間

1プロセッサによる計

効率

×

100

×

=

N

N

時間

プロセッサによる計算

算時間

1プロセッサによる計

スピードアップ

N

=

並列計算の効率を計るために定義される指標

(15)

今日の内容

①並列計算の概要

・並列化計算の目的

・並列コンピュータ環境

・並列プログラミングの方法

・MPIを用いた並列プログラミング

・並列化効率

②並列計算の実行方法

・Hello world

・モンテカルロ法による円周率計算

(16)

MPIプログラムの実行方法(SC版)

(1) ダウンロード hello_parallel.f と run_hello_parallel.sh と machines をダウンロード。 WinSCPを利用してSCの各個人の homeに転送する。homeに適当なディレクト リを作って保存する。 e.g) % mkdir mpi_test_1 % mv hello_parallel.f run_hello_parallel.sh machines mpi_test_1 % cd mpi_test_1 % ls hello_parallel.f machines run_hello_parallel.sh (2) プログラムのコンパイル (1)でファイルを保存したディレクトリで % /usr/local/mpich-1.2.7p1/bin/mpif77 hello_parallel.f (3) 実行 % cat run_hello_parallel.sh #!/bin/sh %/usr/local/mpich-1.2.7p1/bin/mpirun -np 2 -machinefile machines a.out

(オプションの意味) -np [数字] プロセス数の指定 -machinefile [マシンファイル名] マシンファイルで指定したノードを利用する % chmod +x run_hello_parallel.sh % ./run_hello_parallel.sh

(17)

モンテカルロ法による円周率計算

• モンテカルロ法

– 「計算機上で、乱数を用いてランダムな事象を多数回生成

し、その統計から情報を得る」手法

• モンテカルロ法による円周率計算

– 半径1の円の四分円、およびそれを囲む一辺1の正方形を

考える

– 正方形の中に”でたらめに”点をうつ

– 点の数の比

n

/

N

は、”

N

が大きければ

四分円と正方形の面積の比にほぼ等しくなる

よって、

4 π = (正方形の面積) (四分円の面積) ≒ ) (落とした点の総数: ) 点の数: (四分円の中に落ちた N n x y 1 1 O

(

)

N N n 4 π

(18)

MPIプログラム pi_parallel.c

(1) ダウンロード

pi_parallel.c と run_pi_parallel.sh と machines と Makefile をダウンロード。 WinSCPを利用してSCの各個人のhomeに転送する。

homeに適当なディレクトリを作って保存する。 e.g)

% mkdir mpi_test_2

% mv pi_parallel.c run_pi_parallel.sh machines Makefile mpi_test_2 % cd mpi_test_2

% ls

Makefile pi_parallel.c machines run_pi_parallel.sh (2) プログラムのコンパイル (1)でファイルを保存したディレクトリにおいてMakefileをつかってコンパイル % make (3) 実行 % cat run_pi_parallel.sh #!/bin/sh

/usr/local/mpich-1.2.7p1/bin/mpirun -np 2 -machinefile machines pi_parallel % chmod +x run_pi_parallel.sh

(19)

追加演習

• 試行回数

N

と精度の関係は?

– “POINTCNT”を変える

• マシン台数と計算時間の関係は?

– -npオプションの引数を変える(マシンファイ

ルも修正する)

参照

関連したドキュメント

が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..

被保険者証等の記号及び番号を記載すること。 なお、記号と番号の間にスペース「・」又は「-」を挿入すること。

ダイキングループは、グループ経 営理念「環境社会をリードする」に 則り、従業員一人ひとりが、地球を

・高濃度 PCB 廃棄物を処理する上記の JESCO (中間貯蔵・環境安全事業㈱)の事業所は、保管場所の所在

産業廃棄物を適正に処理するには、環境への有害物質の排出(水系・大気系・土壌系)を 管理することが必要であり、 「産業廃棄物に含まれる金属等の検定方法」 (昭和

機排水口の放出管理目標値を示す。 画においては1号機排水口~4号機排水口の放出管理目標値を設定していない。.. 福島第二原子力発電所 )

□公害防止管理者(都):都民の健康と安全を確保する環境に関する条例第105条に基づき、規則で定める工場の区分に従い規則で定め

この設備によって、常時監視を 1~3 号機の全てに対して実施する計画である。連続監