about MPI

Similar documents
スライド 1

NUMAの構成

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

並列計算導入.pptx

演習準備

Microsoft PowerPoint - KHPCSS pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint _MPI-01.pptx

コードのチューニング

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

スライド 1

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

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

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

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

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

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

Microsoft PowerPoint _MPI-03.pptx

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

PowerPoint Presentation

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

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

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

Microsoft Word - appli_SMASH_tutorial_2.docx

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

PowerPoint プレゼンテーション

Microsoft Word _001b_hecmw_PC_cluster_201_howtodevelop.doc

Microsoft PowerPoint - OpenMP入門.pptx

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

演習1: 演習準備

TopSE並行システム はじめに

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0

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

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

chap2.ppt

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

Microsoft PowerPoint - compsys2-06.ppt

スライド 1

デジタル表現論・第6回

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

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

MPI usage

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

TFTP serverの実装

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

MPI コミュニケータ操作

PowerPoint Presentation

Microsoft Word - ユーザ向け利用の手引き_v0.3.doc

目次 LS-DYNA 利用の手引き 1 1. はじめに 利用できるバージョン 概要 1 2. TSUBAME での利用方法 使用可能な LS-DYNA の実行 4 (1) TSUBAMEにログイン 4 (2) バージョンの切り替え 4 (3) インタラ

ポインタ変数

Fortran 勉強会 第 5 回 辻野智紀

情報処理概論(第二日目)

計算機アーキテクチャ

Microsoft Word - appli_OpenMX_install.docx

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

2006年10月5日(木)実施

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

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

memo

Fujitsu Standard Tool

情報処理演習 II

Microsoft PowerPoint - 11Web.pptx

NUMAの構成

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

120802_MPI.ppt

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

160420c_unix.pptx

ex04_2012.ppt

170420_unix.pptx

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

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

Microsoft PowerPoint - prog03.ppt

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

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

JavaプログラミングⅠ

演習1

Microsoft PowerPoint - 11.pptx

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

1.overview

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

ComputerArchitecture.ppt

memo

この時お使いの端末の.ssh ディレクトリ配下にある known_hosts ファイルから fx.cc.nagoya-u.ac.jp に関する行を削除して再度ログインを行って下さい

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

CプログラミングI

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

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

Microsoft PowerPoint ppt

memo

PowerPoint プレゼンテーション

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

MPI 超 入門 (FORTRAN 編 ) 東京大学情報基盤センター C 言語編は以下 /ohshima/seminars/t2k201111/ (MPI による並列アプリケーション開発入門 2)

ゲームエンジンの構成要素

Prog1_12th

コードのチューニング

C言語入門

コンピュータ工学Ⅰ

Transcription:

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

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

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

並列コンピュータの開発 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 環境管理サブルーチン call 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で指定したグループ内に含まれるプロセス数 MPI_COMM_RANK(MPI_COMM_WORLD, myrank, error) コミュニケータ( グループ ) 内でのプロセスのランクが戻る MPI_COMM_WORLD : 整数 コミュニケータを指定する myrank : 整数 MPI_COMM_WORLDで指定したグループ内のランクが戻る

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

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

TC へのログイン 1. Gateway(tcgw) にログイン完了すると右図のようになる 2. tcgwから計算ノードにログインつまり $ ssh tc01 と入力

MPI プログラムの実行方法 (TC 版 ) (1) ダウンロード hello.f ( もしくは hello.c) と run_hello.sh と machines をダウンロード WinSCP を利用して TC の各個人の home に転送する home に適当なディレクトリを作って保存する e.g) % mkdir mpi_test_1 % mv hello.f run_hello.sh machines mpi_test_1 (hello.c と run_hello.sh と machines を mpi_test_1 に移動 ) % cd mpi_test_1 % ls hello.c machines run_hello.sh (2) プログラムのコンパイルファイルを保存したディレクトリで FORTRAN 版 : % mpif77 hello.f C 言語版 : % mpicc hello.c (3) 実行 % cat run_hello.sh #!/bin/sh mpirun -np 2 -machinefile machines a.out ( オプションの意味 ) -np [ 数字 ] プロセス数の指定 -machinefile [ マシンファイル名 ] マシンファイルで指定したノードを利用する % chmod +x run_hello.sh %./run_hello.sh

モンテカルロ法による円周率計算 モンテカルロ法 計算機上で 乱数を用いてランダムな事象を多数回生成し その統計から情報を得る 手法 モンテカルロ法による円周率計算 半径 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.sh と machines と Makefile をダウンロード WinSCP を利用して TC の各個人の home に転送する home に適当なディレクトリを作って保存する e.g) % mkdir mpi_test_2 % mv pi_parallel.c run_pi.sh machines Makefile mpi_test_2 % cd mpi_test_2 % ls Makefile pi_parallel.c machines run_pi.sh (2) プログラムのコンパイル (1) でファイルを保存したディレクトリにおいて Makefile をつかってコンパイル % make (3) 実行 % cat run_pi.sh #!/bin/sh mpirun -np 2 -machinefile machines pi % chmod +x run_pi.sh %./run_pi.sh

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