スライド 1

Similar documents
about MPI

Microsoft PowerPoint - 演習1:並列化と評価.pptx

NUMAの構成

Microsoft PowerPoint - KHPCSS pptx

演習準備

Microsoft PowerPoint _MPI-01.pptx

コードのチューニング

演習 II 2 つの講義の演習 奇数回 : 連続系アルゴリズム 部分 偶数回 : 計算量理論 部分 連続系アルゴリズム部分は全 8 回を予定 前半 2 回 高性能計算 後半 6 回 数値計算 4 回以上の課題提出 ( プログラム + 考察レポート ) で単位

Microsoft PowerPoint - 演習2:MPI初歩.pptx

PowerPoint プレゼンテーション

並列計算導入.pptx

演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 RIKEN AICS HPC Spring School /3/5

Microsoft PowerPoint - 講義:片方向通信.pptx

chap2.ppt

Microsoft PowerPoint _MPI-03.pptx

Microsoft PowerPoint - 講義:コミュニケータ.pptx

スライド 1

第8回講義(2016年12月6日)

<4D F736F F F696E74202D D F95C097F D834F E F93FC96E5284D F96E291E85F8DE391E52E >

Microsoft PowerPoint MPI.v...O...~...O.e.L.X.g(...Q..)

Microsoft PowerPoint 並列アルゴリズム04.ppt

課題 S1 解説 C 言語編 中島研吾 東京大学情報基盤センター

2 T 1 N n T n α = T 1 nt n (1) α = 1 100% OpenMP MPI OpenMP OpenMP MPI (Message Passing Interface) MPI MPICH OpenMPI 1 OpenMP MPI MPI (trivial p

PowerPoint プレゼンテーション

課題 S1 解説 Fortran 編 中島研吾 東京大学情報基盤センター

目 目 用方 用 用 方

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

PowerPoint Presentation

Microsoft PowerPoint - compsys2-06.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - OpenMP入門.pptx

Microsoft PowerPoint - 計算機言語 第7回.ppt

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

MPI コミュニケータ操作

Microsoft PowerPoint - S1-ref-F.ppt [互換モード]

コードのチューニング

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

C 言語の式と文 C 言語の文 ( 関数の呼び出し ) printf("hello, n"); 式 a a+4 a++ a = 7 関数名関数の引数セミコロン 3 < a "hello" printf("hello") 関数の引数は () で囲み, 中に式を書く. 文 ( 式文 ) は

情報処理演習 II

Microsoft Word _001b_hecmw_PC_cluster_201_howtodevelop.doc

デジタル表現論・第6回

Fortran 勉強会 第 5 回 辻野智紀

Fujitsu Standard Tool

かし, 異なったプロセス間でデータを共有するためには, プロセス間通信や特殊な共有メモリ領域を 利用する必要がある. このためマルチプロセッサマシンの利点を最大に引き出すことができない. こ の問題はマルチスレッドを用いることで解決できる. マルチスレッドとは,1 つのプロセスの中に複 数のスレッド

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

TopSE並行システム はじめに

Gfarm/MPI-IOの 概要と使い方

TFTP serverの実装

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

内容に関するご質問は まで お願いします [Oakforest-PACS(OFP) 編 ] 第 85 回お試しアカウント付き並列プログラミング講習会 ライブラリ利用 : 科学技術計算の効率化入門 スパコンへのログイン テストプログラム起動 東京大学情報基盤セ

UNIX 初級講習会 (第一日目)

計算機アーキテクチャ

Hphi実行環境導入マニュアル_v1.1.1

演習1: 演習準備

Microsoft PowerPoint - prog03.ppt

2006年10月5日(木)実施

インテル(R) Visual Fortran コンパイラ 10.0

para02-2.dvi

MPI () MPIMessage Passing Interface MPI MPI OpenMP 7 ( ) 1

Microsoft PowerPoint - MPIprog-F2.ppt [互換モード]

44 6 MPI 4 : #LIB=-lmpich -lm 5 : LIB=-lmpi -lm 7 : mpi1: mpi1.c 8 : $(CC) -o mpi1 mpi1.c $(LIB) 9 : 10 : clean: 11 : -$(DEL) mpi1 make mpi1 1 % mpiru

Microsoft PowerPoint - 第3回目.ppt [互換モード]

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

スライド 1

120802_MPI.ppt

JavaプログラミングⅠ

NUMAの構成

1.overview

PowerPoint Presentation

Microsoft Word - appli_SMASH_tutorial_2.docx

ポインタ変数

練習 4 ディレクトリにあるファイルを直接指定する (cat) cat コマンドを使う (% cat ファイル名 ) と ファイルの内容を表示できた ファイル名のところにパス名を使い ディレクトリ名 / ファイル名 のように指定すると ディレクトリ内にあるファイルを直接指定できる 1 % cat _

Microsoft PowerPoint - 11Web.pptx

memo

PowerPoint プレゼンテーション

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint ppt

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

Microsoft PowerPoint - MPIprog-C2.ppt [互換モード]

2007年度 計算機システム演習 第3回

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

コンピュータ応用・演習 情報処理システム

Microsoft PowerPoint - handout07.ppt [互換モード]

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

memo

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - 09.pptx

appli_HPhi_install

本チュートリアルについて 14 部構成 比較的簡単なトピックから 各回 プログラミング言語 任意 チュートリアルで 新しい内容 宿題 プログラミング演習 次の週 結果について発表 もしくは話し合いをする スライドは Python で Python, C++, Java, Perl についての質問い答

MPI usage

Prog1_12th

Microsoft PowerPoint - 13th.ppt [互換モード]

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

(Microsoft PowerPoint \211\211\217K3_4\201i\216R\226{_\211\272\215\342\201j.ppt [\214\335\212\267\203\202\201[\203h])

ComputerArchitecture.ppt

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

untitled

Transcription:

本日 (4/25) の内容 1 並列計算の概要 並列化計算の目的 並列コンピュータ環境 並列プログラミングの方法 MPI を用いた並列プログラミング 並列化効率 2 並列計算の実行方法 Hello world モンテカルロ法による円周率計算

並列計算のはじまり 並列計算の最初の構想を イギリスの科学者リチャードソンが 1922 年に発表 < リチャードソンの夢 > 64000 人を円形の劇場に集めて 北半球全体を 2000 ブロックに分け 各ブロックに 32 人ずつ割り当てて一斉に手計算すれば リアルタイムに気象予測が可能

並列計算の目的 現代では コンピュータを駆使して 並列処理 n 個のプロセッサ (CPU) を用いることにより 計算時間を 1/n に短縮 大規模な演算処理を必要とするシミュレーションを高速に処理 ( 地震予測 地球温暖化 津波などのシミュレーション技術などの確立が急務 )

並列コンピュータの開発その 1 1946 年に世界最初の汎用コンピュータ ENIAC (400flops) を開発 ( 処理速度が 1FLOPS のコンピュータは 1 秒間に 1 回の浮動小数点数演算 ) 表 TOP500 (2006 年 11 月時点 ) 現在はこちら http://www.top500.org/

並列計算機の分類 CPU( プロセッサ ): コンピューターの中央処理装置 命令を読み込み 実行 メモリ : データやプログラムを記憶する装置で CPU が直接読み書き 共有メモリ型 ( すべてのプロセッサがメモリを共有 ) ( 短所 ) プロセッサが増すとメモリの書き込みが競合し 並列化の効率を低下 メモリ CPU CPU CPU 分散メモリ型 ( それぞれのプロセッサが個別にメモリを保有 ) ( 短所 ) データが分散して配置されるため そのことを考慮したプログラミング開発が必要 メモリ ネットワーク メモリ メモリ ノード CPU CPU CPU

並列プログラミング MPMD(Multiple Program Multiple Data) 複数のプログラムを複数のプロセッサで処理 プロセッサ間の通信の明示 1 つのノードで親プロセスを他のノードで子プロセスを実行 主従関係を持つ SPMD(Single Program Multiple Data) 1 つのプログラムを複数のプロセッサで処理 プロセッサ間の通信の明示 (1 プログラムを複数のプロセッサで処理のため ) データがどのプロセッサにあるかを確認

MPI とは? SPMD のタイプ ノード間の情報交換を通信で行うライブラリ ノード メモリ CPU ネットワーク ノード メモリ CPU Fortran や C などのプログラミング言語に サブルーチン ( 関数 ) として用いる MPI サブルーチンを用いて 各ノード間で必要な情報を交換する

MPI サブルーチン MPI サブルーチンは 3 つに分類 おまじない 1 環境管理サブルーチンプログラムの最初と最後の部分で必ず使用 2 グループ通信サブルーチン複数のノード間を通信 31 対 1 通信サブルーチン 2 つのノード間の通信 4 その他計算時間や通信時間を計測

1 環境管理サブルーチン call MPI_INIT(error) MPI のプログラムを使用するためにプログラムの先頭に必ずコールする call MPI_FINALIZE(error) プログラムの最後に必ずコールする これがコールされた後は MPI のサブルーチンを呼び出すことはできない error : 整数 完了コードと呼ばれる コール文が実行できた場合は error=0 となる

1 環境管理サブルーチン MPI_Abort(MPI_COMM_WORLD, error) すべてのプロセスを即時に異常終了する MPI_COMM_WORLD( グループ番号 ) コミュニケータを識別する変数 コミュニケータとはプロセスのグループを識別 プロセスは順序付けられ それぞれランクを持つ コミュニケータ ネットワーク コミュニケータ ランク 1 ランク 2 ランク 3 ランク 1 ランク 2 ランク 3 ランク 4

1 環境管理サブルーチン 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で指定したグループ内のランクが戻る error : 整数 完了コードが戻る

2 グループ通信サブルーチン MPI_Allreduce(&sendbuf, &recvbuf, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD); コミュニケータ内のプロセスの送信 (&sendbuf) のメッセージが 通信しながら加算 (MPI_SUM) され 結果が全プロセスの受信に送信される &sendbuf : 送信バッファの先頭アドレスを指定 &recvbuf : 受信バッファの先頭アドレスを指定 1 : 整数 送受信の要素数を指定 MPI_INI : 送受信のメッセージのデータタイプを指定 ここでは整数型 MPI_SUM : 演算の種類を指定 error : 整数 完了コードが戻る

341 対 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); MPI_Wtime();

並列化効率 並列計算の効率を計るために定義される指標 1プロセッサによる計算時間効率 = 100% Nプロセッサによる計算時間 N スピードアップ 1プロセッサによる計算時間 = N プロセッサによる計算時間

今日の内容 1 並列計算の概要 並列化計算の目的 並列コンピュータ環境 並列プログラミングの方法 MPI を用いた並列プログラミング 並列化効率 2 並列計算の実行方法 Hello world モンテカルロ法による円周率計算

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 (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 (2) プログラムのコンパイル (1) でファイルを保存したディレクトリで % /usr/local/mpich-1.2.7p1/bin/mpif77 hello_parallel.f

モンテカルロ法による円周率計算 モンテカルロ法 計算機上で 乱数を用いてランダムな事象を多数回生成し その統計から情報を得る 手法 モンテカルロ法による円周率計算 半径 1の円の四分円 およびそれを囲む一辺 1の正方形を y 考える 正方形の中に でたらめに 点をうつ 1 ( 四分円の中に落ちた点の数 : ( 落とした点の総数 : N) n) ( 四分円の面積 ) ( 正方形の面積 ) π = 4 点の数の比 n/n は N が大きければ 四分円と正方形の面積の比にほぼ等しくなる よって 4n π N 大 N ( ) O 1 x

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 %./run_pi_parallel.sh

追加演習 試行回数 N と精度の関係は? POINTCNT を変える マシン台数と計算時間の関係は? -np オプションの引数を変える ( マシンファイルも修正する )