untitled

Similar documents
untitled

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

Microsoft PowerPoint _MPI-03.pptx

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

演習準備

120802_MPI.ppt

MPI usage

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

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£±¡Ë

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

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£±¡Ë

±é½¬£²¡§£Í£Ð£É½éÊâ

コードのチューニング

C/C++ FORTRAN FORTRAN MPI MPI MPI UNIX Windows (SIMD Single Instruction Multipule Data) SMP(Symmetric Multi Processor) MPI (thread) OpenMP[5]

¥Ñ¥Ã¥±¡¼¥¸ Rhpc ¤Î¾õ¶·

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

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£²¡Ë

目 目 用方 用 用 方

2012年度HPCサマーセミナー_多田野.pptx

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

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

演習問題の構成 ディレクトリ構成 MPI/ --practice_1 演習問題 1 --practice_2 演習問題 2 --practice_3 演習問題 3 --practice_4 演習問題 4 --practice_5 演習問題 5 --practice_6 演習問題 6 --sample

nakao


040312研究会HPC2500.ppt

Sae x Sae x 1: 1. {x (i) 0 0 }N i=1 (x (i) 0 0 p(x 0) ) 2. = 1,, T a d (a) i (i = 1,, N) I, II I. v (i) II. x (i) 1 = f (x (i) 1 1, v(i) (b) i (i = 1,

Page 2 本資料は, 東北大学サイバーサイエンスセンターと NEC の共同により作成され, 大阪大学サイバーメディアセンターの環境で実行確認を行い, 修正を加えたものです. 無断転載等は, ご遠慮下さい.

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

GeoFEM開発の経験から

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

資料5:聖ウルスラ学院英智小・中学校 提出資料(1)

2 2.1 Mac OS CPU Mac OS tar zxf zpares_0.9.6.tar.gz cd zpares_0.9.6 Mac Makefile Mekefile.inc cp Makefile.inc/make.inc.gfortran.seq.macosx make

01_OpenMP_osx.indd

11042 計算機言語7回目 サポートページ:

プラズマ核融合学会誌5月号【81-5】/内外情報_ソフト【注:欧フォント特殊!】

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

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データタ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

openmp1_Yaguchi_version_170530

3. :, c, ν. 4. Burgers : t + c x = ν 2 u x 2, (3), ν. 5. : t + u x = ν 2 u x 2, (4), c. 2 u t 2 = c2 2 u x 2, (5) (1) (4), (1 Navier Stokes,., ν. t +

土壌環境行政の最新動向(環境省 水・大気環境局土壌環境課)

syuryoku

資料4-1 一時預かり事業について

untitled

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

untitled


86

untitled

untitled


Reedbush-Uアカウントの発行

SP100 取扱説明書

MPI によるプログラミング概要 Fortran 編 中島研吾 東京大学情報基盤センター

if clear = 1 then Q <= " "; elsif we = 1 then Q <= D; end rtl; regs.vhdl clk 0 1 rst clear we Write Enable we 1 we 0 if clk 1 Q if rst =

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

OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a))

3. :, c, ν. 4. Burgers : u t + c u x = ν 2 u x 2, (3), ν. 5. : u t + u u x = ν 2 u x 2, (4), c. 2 u t 2 = c2 2 u x 2, (5) (1) (4), (1 Navier Stokes,.,

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

読めば必ずわかる 分散分析の基礎 第2版

ii


Microsoft PowerPoint - 阪大CMSI pptx

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

: : : : ) ) 1. d ij f i e i x i v j m a ij m f ij n x i =

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データタ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

Transcription:

I 9 MPI (II) 2012 6 14

.. MPI.

1-3 sum100.f90 4 istart=myrank*25+1 iend=(myrank+1)*25 0 1 2 3 mpi_recv 3 isum1 1 isum

/tmp/120614/sum100_4.f90 program sum100_4 use mpi implicit none integer :: i,istart,iend,isum,isum1,ip integer :: nprocs,myrank,ierr integer, dimension(mpi_status_size) :: istat call mpi_init(ierr) call mpi_comm_size(mpi_comm_world,nprocs,ierr) call mpi_comm_rank(mpi_comm_world,myrank,ierr) istart=myrank*25+1 iend=(myrank+1)*25 isum=0 do i=istart, iend isum=isum+i end do if (myrank/=0) then call mpi_send(isum,1,mpi_integer,0,100,mpi_comm_world,ierr) else do ip=1, 3 call mpi_recv(isum1,1,mpi_integer,ip,100,mpi_comm_world,istat,ierr) isum=isum+isum1 end do end if if (myrank==0) print *, 'sum =', isum call mpi_finalize(ierr) end program sum100_4 1 3 0 0 1 3

1-5 sumn.f90 isum isum1 sum0 sum1 mpi_reduce integer, parameter :: SP = kind(1.0) integer, parameter :: DP = selected_real_kind(2*precision(1.0_sp)) real(dp) :: sum, sum1 mpi_reduce datatype MPI_DOUBLE_PRECISION

/tmp/120614/dsumn.f90 program dsumn use mpi implicit none integer :: n,i,istart,iend,isum,isum1 integer :: nprocs,myrank,ierr integer, dimension(mpi_status_size) :: istat integer, parameter :: SP = kind(1.0) integer, parameter :: DP = selected_real_kind(2*precision(1.0_sp)) real(dp) :: sum0, sum1 real(dp), parameter :: zero = 0.0 call mpi_init(ierr) call mpi_comm_size(mpi_comm_world,nprocs,ierr) call mpi_comm_rank(mpi_comm_world,myrank,ierr) if (myrank==0) n=10000 call mpi_bcast(n,1,mpi_integer,0,mpi_comm_world,ierr) istart=n*myrank/nprocs+1 iend=n*(myrank+1)/nprocs sum0=zero do i=istart, iend sum0=sum0+i end do call mpi_reduce(sum0,sum1,1,mpi_double_precision,mpi_sum,0, MPI_COMM_WORLD,ierr) if (myrank==0) print *, 'sum =', sum1 call mpi_finalize(ierr) end program dsumn

MPI program time use mpi implicit none integer nprocs,myrank,ierr integer, parameter :: SP = kind(1.0) integer, parameter :: DP = selected_real_kind(2*precision(1.0_sp)) real(dp) :: time1,time2,e_time call mpi_init(ierr) call mpi_comm_size(mpi_comm_world,nprocs,ierr) call mpi_comm_rank(mpi_comm_world,myrank,ierr) call mpi_barrier(mpi_comm_world,ierr) time1=mpi_wtime() call mpi_barrier(mpi_comm_world,ierr) time2=mpi_wtime() e_time=time2-time1 call mpi_finalize(ierr) end program time

mpi_wtime() mpi_wtime mpi_barrier mpi_barrier(comm,ierr) comm 0 1 2 3

2-1 1-5 dsumn.f90 mpi_bcast mpi_reduce mpi_wtime 0 mpi_wtime mpi_reduce mpi_barrier n=10,000,000 1 2 4 8

mpi_allreduce call mpi_allreduce(sendbuff,recvbuff,count,datatype,op, comm,ierr) sendbuf recvbuf count datatype op comm ierr

2-2 x n i i x(i) = i x x / x 2 MPI x 2 x 2 istart = n * myrank / nprocs + 1 iend = n * (myrank+1) / nprocs 0 1 2 3 n 0

2-2 1-5 dsumn.f90 2 mpi_reduce mpi_allreduce mpi_allreduce n=1000 x(i) = i / (n*(n+1)*(2*n+1)/6) 1/2

0 1 2 3 1 PU

1 2 2 1 2

A (i, j) i+j x 2-2 y = Ax A x y y 1 y i A i x do i=1, n y(i)=zero do j=1, n y(i)=y(i)+a(i,j)*x(j) end do end do

/tmp/120614/mv.f90 program mv implicit none integer, parameter :: n=100 integer :: i,j integer, parameter :: SP = kind(1.0) integer, parameter :: DP = selected_real_kind(2*precision(1.0_sp)) real(dp), dimension(n,n) :: a real(dp), dimension(n) :: x,y real(dp) :: ans,err real(dp), parameter :: zero=0.0 do i=1, n x(i)=i end do do i=1, n do j=1, n A x a(i,j)=i+j end do end do do i=1, n y(i)=zero do j=1, n y = Ax y(i)=y(i)+a(i,j)*x(j) end do end do err=0.0d0 do i=1, n ans=dble(i*n*(n+1)/2+n*(n+1)*(2*n+1)/6) err=err+abs(y(i)-ans) end do print *, 'error =', err end program mv

2-3 mv.f90 cp /tmp/120614/mv.f90. pgf95 mv.f90./a.out error = 0.0000000000000000

A x A x y PU A x mpi_reduce PU0 y PU0 PU1 PU2 PU3 +

2-4 mv.f90 istart iend MPI istart=n*myrank/nprocs+1 iend=n*(myrank+1)/nprocs istart iend A x A : istart iend x : istart iend j=istart, iend y yp mpi_reduce yp PU0 y mpi_reduce 3 count n

2-4 n=1000 8 1 2 4 8

2-5 2-4 A 2 x mv.f90 2-4 y A 0 y mpi_reduce mpi_allreduce

2-1 2-2 2-4 yyamamoto ex2-1 ex2-2 ex2-4 2-5 ex2-5

6 17 scalar 6 15 15:00 6 18 6 21