Microsoft PowerPoint - KN002.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint - KN002.ppt"

Transcription

1 MPI II MPI MPI MPI-110 MPI- SPMD Single Program/Instruction Multiple Data CPU 4

2 PE: Processing Element PE #0 Program Data #0 PE #1 Program Data #1 SPMD mpirun -np M <Program> PE # Program Data # MPI 9 PE #M-1 Program Data #M-1 CPU MPI 1 PEProcessing Element PE SPMDMD PE MPIPE0 8PE SPMDSingle Program Multiple Data 8 SPMDSingle Program Multiple Data CPU

3 9 10 SPMD SPMD1/ SPMD PE #0 PE #1 PE # PE #3 NG(=0)VG Program Program Program Program integer, parameter :: NG= 0 real(kind=8), dimension(0) :: VG Data #0 Data #1 Data # Data #3 do i= 1, NG VG(i)=.0 * VG(i) 4 0/4= 11 1 SPMD/ integer, parameter :: NL= real(kind=8), dimension() :: VL do i= 1, NL VL(i)=.0 * VL(i) Single Program VLMultiple Data VL CPU VG 10Global Data VL PE 1Local Data

4 13 14 VG 10PE 6~101PE 111PE 1603PE VL1 1 VG( 1) VG( ) VG( 3) VG( 4) VG( ) VG( 6) VG( 7) VG( 8) VG( 9) VG(10) VG(11) VG(1) VG(13) VG(14) VG(1) VG(16) VG(17) VG(18) VG(19) VG(0) PE# VL(1) VL() VL(3) VL(4) VL() VL(1) VL() VL(3) VL(4) VL() VL(1) VL() VL(3) VL(4) VL() VL(1) VL() VL(3) VL(4) VL() VG VL 10Global Data 1Local Data VGVL VGVLVLVG VL 1 16 MPI Collective Communication MPI_Reduce, MPI_Scatter/Gather 11Point-to-Point MPI_Send, MPI_Receive PE#

5 PE d d BF 0, 0@ x 0, 0@ x x dx dx 1 BF x BF xmax x max BF =0 NG=164PEPE NL=16/4=4 19 NG=16, PE#= BF =0

6 NG=16, PE#= PE# PE# A ( i) ( i 1) A L 1 AL ( i) x, A D D ( i) ( i) A ( i) ( i 1) BF( i) 1 ( i), A ( i) R x x R D PE 4 PE# PE# PE#

7 111D PE# MPI_SEND MPI_RECV blocking dead lock RECVSEND securempi 6 MPI_SEND/MPI_RECV 7 MPI_SEND/MPI_RECV if (my_rank.eq.0) NEIB_ID=1 if (my_rank.eq.1) NEIB_ID=0 call MPI_SEND (NEIB_ID, arg s) call MPI_RECV (NEIB_ID, arg s) if (my_rank.eq.0) NEIB_ID=1 if (my_rank.eq.1) NEIB_ID=0 if (my_rank.eq.0) then call MPI_SEND (NEIB_ID, arg s) call MPI_RECV (NEIB_ID, arg s) if (my_rank.eq.1) then call MPI_RECV (NEIB_ID, arg s) call MPI_SEND (NEIB_ID, arg s) MPI_SEND/MPI_RECV cenjuok

8 MPI_ISEND MPI_IRECV non-blocking MPI_WAITALL MPI_SENDRECV if (my_rank.eq.0) NEIB_ID=1 if (my_rank.eq.1) NEIB_ID=0 call MPI_ISEND (NEIB_ID, arg s) call MPI_IRECV (NEIB_ID, arg s) call MPI_WAITALL (for IRECV) call MPI_WAITALL (for ISEND) ISENDIRECV WAITALL OK MPI_ISEND sendbufcounttag destmpi_waitall call MPI_ISEND (sendbuf,count,datatype,dest,tag,comm,request, ierr) sendbuf I count I datatype I dest I tag I 0 comm I request O MPI_WAITALL MPI_ISEND :C ierr O 31 3 request handle request call MPI_ISEND (sendbuf,count,datatype,dest,tag,comm,request, ierr) sendbuf I count I datatype I dest I tag I 0 comm I request O MPI_WAITALL MPI_ISEND ierr O C allocate (request(neibpetot)) MPI_IRECV recvbufcounttag destmpi_waitall call MPI_IRECV (recvbuf,count,datatype,dest,tag,comm,request, ierr) recvbuf I count I datatype I dest I tag I 0 comm I request O MPI_WAITALL MPI_IRECV C ierr O

9 MPI_WAITALL 11MPI_ISENDMPI_IRECV MPI_WAITALL MPI_WAITALL MPI_ISENDMPI_IRECV MPI_ISEND/IRECV MPI_BARRIER requeststatus MPI_ISEND/IRECV call MPI_WAITALL (count,request,status,ierr) count I MPI_ISEND MPI_RECV request I/O MPI_ISENDMPI_IRECV count status O MPI_STATUS_SIZE,count MPI_STATUS_SIZE mpif.h, mpi.h C ierr O 33 status object status call MPI_WAITALL (count,request,status,ierr) count I MPI_ISEND MPI_RECV request I/O MPI_ISENDMPI_IRECV count status O MPI_STATUS_SIZE,count MPI_STATUS_SIZE mpif.h, mpi.h ierr O C allocate (stat(mpi_status_size,neibpetot)) 34 MPI_SENDRECV MPI_SEND+MPI_RECV call MPI_SENDRECV (sendbuf,sendcount,sendtype,dest,sendtag,recvbuf, recvcount,recvtype,source,recvtag,comm,status,ierr) sendbuf I sendcount I sendtype I dest I sendtag I 0 recvbuf I recvcount I recvtype I source I sendtag I 0 comm I status O MPI_STATUS_SIZE MPI_STATUS_SIZE mpif.h C ierr O 3 FORTRAN MPI_Isend: request MPI_Irecv: request MPI_Waitall: request, status integer request(neibpetot) integer status (MPI_STAUTS_SIZE,NEIBPETOT) MPI_Sendrecv: status integer status (MPI_STATUS_SIZE) 36

10 C MPI_Isend: request MPI_Irecv: request MPI_Waitall: request, status MPI_Status *StatSend, *StatRecv; MPI_Request *RequestSend, *RequestRecv; StatSend = malloc(sizeof(mpi_status) * NEIBpetot); StatRecv = malloc(sizeof(mpi_status) * NEIBpetot); RequestSend = malloc(sizeof(mpi_request) * NEIBpetot); RequestRecv = malloc(sizeof(mpi_request) * NEIBpetot); MPI_Sendrecv: status MPI_Status *Status; Status = malloc(sizeof(mpi_status)); 37 1/ NG=16 NG= PE# 38 / 39 3/ 40 N=4 PE# N+1= PE# A ( i) A ( i) A ( i) L i1 D i1 BF( i) 1 1 AL ( i), A ( i), A ( i) D R x x x i R (1 i N)

11 41 4 4/ i=1~n Interior/Internal Points 4/ i=1~n Interior/Internal Points i=0, N+1Exterior/External Points i=0i=n A ( i) A ( i) A ( i) L i1 D i1 BF( i) 1 1 AL ( i), A ( i), A ( i) D R x x x i R PE# (1 i N) A ( i) A ( i) A ( i) L i1 D i1 BF( i) 1 1 AL ( i), A ( i), A ( i) D R x x x i R PE# (1 i N) / i=1~n Interior/Internal Points i=0, N+1Exterior/External Points i=0i=n+1 Boundary Points i1 1 3 A ( i) A ( i) A ( i) L D i1 1 1 AL ( i), A ( i), A ( i) D R x x x i R BF( i) PE# (1 i N) / 11 send recv

12 PE#

13 1/ 49 x y f N 0 E C W N C S x y f C y C W E x x y S PE#

14 PE# PE# N y C W E x x y S PE# PE#

15 PE# PE# /4 Internal Points /4 Internal Points External Points

16 /4 Internal Points External Points Boundary Points /4 Internal Points External Points Boundary Points import export NEIBPETOTNEIBPE(neib) export_index(neib), neib= 0, NEIBPETOT export_item(k), k= 1, export_index(neibpetot) SENDbuf(k), k= 1, export_index(neibpetot)

17 6 66 NEIBPETOTNEIBPE(neib) import_index(neib), neib= 0, NEIBPETOT import_item(k), k= 1, import_index(neibpetot) RECVbuf(k), k= 1, import_index(neibpetot) 1/ #NEIBPEtot #NEIBPE 1 3 #NODE 4 16 #IMPORT_index 4 8 #IMPORT_items #EXPORT_index 4 8 #EXPORT_items / #NEIBPEtot #NEIBPE 1 3 #NODE 4 16 #IMPORT_index 4 8 #IMPORT_items #EXPORT_index 4 8 #EXPORT_items / #NEIBPEtot #NEIBPE 1 3 #NODE 4 16 #IMPORT_index 4 8 #IMPORT_items #141~4 #34~8 import #EXPORT_index 4 8 #EXPORT_items

18 / #NEIBPEtot #NEIBPE 1 3 #NODE 4 16 #IMPORT_index 4 8 #IMPORT_items #EXPORT_index 4 8 #EXPORT_items #1 import1~4 #3 import~8 / #NEIBPEtot #NEIBPE 1 3 #NODE 4 16 #IMPORT_index 4 8 #IMPORT_items #141~4 1 #34~8 export 3 4 #EXPORT_index 4 8 #EXPORT_items / #NEIBPEtot #NEIBPE 1 3 #NODE 4 16 #IMPORT_index 4 8 #IMPORT_items #EXPORT_index 4 8 #EXPORT_items #1 export1~4 #3 export~8 6/

19 MPI_Isend/Irecv/Waitall 73 MPI_Sendrecv 74 SENDbuf neib#1 neib# neib#3 neib#4 SENDbuf neib#1 neib# neib#3 neib#4 BUFlength_e BUFlength_e BUFlength_e BUFlength_e export_index(0)+1 export_index(1)+1 export_index()+1 export_index(3)+1 export_index(4) BUFlength_e BUFlength_e BUFlength_e BUFlength_e export_index(0)+1 export_index(1)+1 export_index()+1 export_index(3)+1 export_index(4) do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= VAL(kk) is_e= export_index(neib-1) + 1 ie_e= export_index(neib ) BUFlength_e= ie_e is_e call MPI_ISEND (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) call MPI_WAITALL (NEIBPETOT, request_send, stat_recv, ierr) do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= VAL(kk) is_e= export_index(neib-1) + 1 ie_e= export_index(neib ) BUFlength_e= ie_e is_e call MPI_SENDRECV (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, stat_sr, ierr) MPI_Isend/Irecv/Waitall 7 MPI_Sendrecv 76 is_i= import_index(neib-1) + 1 ie_i= import_index(neib ) BUFlength_i= ie_i is_i is_i= import_index(neib-1) + 1 ie_i= import_index(neib ) BUFlength_i= ie_i is_i call MPI_IRECV (RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) VAL(kk)= RECVbuf(k) call MPI_SENDRECV (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, stat_sr, ierr) do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) VAL(kk)= RECVbuf(k) RECVbuf neib#1 neib# neib#3 neib#4 RECVbuf neib#1 neib# neib#3 neib#4 BUFlength_i BUFlength_i BUFlength_i BUFlength_i import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4) BUFlength_i BUFlength_i BUFlength_i BUFlength_i import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4)

20 -- PREPARE send buffer do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= BUF(kk) -- SEND is = export_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) call MPI_ISEND (SENDbuf(is), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) RECV ir = import_index(neib-1) + 1 len_r= import_index(neib) - import_index(neib-1) call MPI_IRECV (RECVbuf(ir), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) -- WAITall for RECV call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) -- update array do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) 78 SENDbuf neib#1 neib# neib#3 neib#4 RECVbuf neib#1 neib# neib#3 neib#4 export_index(0)+1 len_s len_s len_s len_s export_index(1)+1 export_index()+1 export_index(3)+1 export_index(4) len_r len_r len_r len_r import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4) SEND === call MPI_ISEND (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) === is_e= export_index(neib-1) + 1 ie_e= export_index(neib ) BUFlength_e= ie_e is_e call MPI_ISEND (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) RECV === PE# call MPI_IRECV (RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) === PE#PE# PE# IRECVPENEIBPE(neib)ISEND len_slen_r NEIBPE(neib) is_i= import_index(neib-1) + 1 ie_i= import_index(neib ) BUFlength_i= ie_i is_i call MPI_IRECV (RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr)! NEIBPEneib

21 #0#3 #1 #3 #1 81 #PE0 send: SENDbuf(iS_e)~ SENDbuf(iE_e+BUFlength_e-1) : #PE1 send: SENDbuf(iS_e)~ SENDbuf(iE_e+BUFlength_e-1) 8 Send #0 # #9 #0 #10 Recv.. #3 #PE0 recv: RECVbuf(iS_i)~ RECVbuf(iE_i+Buflength_i-1) #PE1 recv: RECVbuf(iS_i)~ RECVbuf(iE_i+Buflength_i-1) NEIBPE(:)=1,3,,9 NEIBPE(:)=1,0,10! NEIBPEneib length_sendlength_recv SENDbufRECVbuf SENDbufRECVbuf BUF BUF SEND === call MPI_ISEND (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) === RECV === call MPI_IRECV (RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) === SEND === if (neib.eq.1) then ikk= 1 else ikk= N if (my_rank.eq.0.and. neib.eq.1) then ikk= N call MPI_ISEND (BUF(ikk), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) ===

22 PE# is_e= export_index(neib-1) + 1 ie_e= export_index(neib ) BUFlength_e= ie_e is_e call MPI_ISEND (VAL(...), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) MPI i=1~n Interior/Internal Points i=1~n Interior/Internal Points i=n+1, N+Exterior/External Points i=n+1i=n A ( i) A ( i) A ( i) L i1 D i1 BF( i) 1 1 AL ( i), A ( i), A ( i) D R x x x i R PE# (1 i N) A ( i) A ( i) A ( i) L i1 D i1 BF( i) 1 1 AL ( i), A ( i), A ( i) D R x x x i R PE# (1 i N)

23 i=1~n Interior/Internal Points i=n+1, N+Exterior/External Points i=n+1i=n+ Boundary Points PREPARE send buffer do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= BUF(kk) -- SEND is = export_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) call MPI_ISEND (SENDbuf(is), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) 90 i1 A ( i) A ( i) A ( i) L D i1 1 1 AL ( i), A ( i), A ( i) D R x x x i R BF( i) PE# (1 i N) SENDbuf neib#1 neib# neib#3 neib#4 len_s len_s len_s len_s export_index(0)+1 export_index(1)+1 export_index()+1 export_index(3)+1 export_index(4) -- RECV ir = import_index(neib-1) + 1 len_r= import_index(neib) - import_index(neib-1) call MPI_IRECV (RECVbuf(ir), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) 91 1D1/ WAITall for RECV call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) -- update array do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) RECVbuf neib#1 neib# neib#3 neib#4 len_r len_r len_r len_r import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4)

24 D/4 1D3/4 PE PE#(my_rank-1): NEIBPE(1) PE#(my_rank+1): NEIBPE() PE export_index(1)= 1 export_item (1)= 1 export_index()= export_item() = export_index(1)= 1 import_index(1)= 1 export_index()= import_index()= import_index(1)= 1 import_item (1)= import_index()= import_item ()= PE# D4/4 PE PE SENDbuf(1)=BUF(1) BUF()=RECVbuf(1) SENDbuf()=BUF(4) BUF(6)=RECVbuf() NEIBPETOTNEIBPE(neib) SENDbuf(1)=BUF(1) NEIBPETOT=, NEIB(1)= my_rank-1, NEIB()= my_rank+1 export_index(neib), neib= 0, NEIBPETOT export_index(0)=0, export_index(1)= 1, export_index()= export_item(k), k= 1, export_index(neibpetot) export_item(1)= 1, export_item()= N SENDbuf()=BUF(4) PE# SENDbuf(k), k= 1, export_index(neibpetot) SENDbuf(1)= BUF(1), SENDbuf()= BUF(N)

25 : NEIBPETOTNEIBPE(neib) BUF()=RECVbuf(1) NEIBPETOT=, NEIB(1)= my_rank-1, NEIB()= my_rank+1 BUF(6)=RECVbuf() import_index(neib), neib= 0, NEIBPETOT import_index(0)=0, import_index(1)= 1, import_index()= import_item(k), k= 1, import_index(neibpetot) import_item(1)= N+1, import_item()= N+ RECVbuf(k), k= 1, import_index(neibpetot) BUF(N+1)=RECVbuf(1), BUF(N+)=RECVbuf() SENDbuf(1)=BUF(1) SENDbuf()=BUF(4) BUF()=RECVbuf(1) BUF(6)=RECVbuf() NEIBPETOT= NEIBPE(1)= my_rank - 1 NEIBPE()= my_rank + 1 import_index(1)= 1 import_index()= import_item (1)= N+1 import_item ()= N+ export_index(1)= 1 export_index()= export_item (1)= 1 export_item ()= N if (my_rank.eq.0) then import_item (1)= N+1 export_item (1)= N NEIBPE(1)= my_rank+1 C 99 / SENDbuf[0]=BUF[0] SENDbuf[1]=BUF[3] BUF[4]=RECVbuf[0] BUF[]=RECVbuf[1] NEIBPETOT= NEIBPE[0]= my_rank - 1 NEIBPE[1]= my_rank + 1 import_index[1]= 0 import_index[]= 1 import_item [0]= N import_item [1]= N+1 export_index[1]= 0 export_index[]= 1 export_item [0]= 0 export_item [1]= N-1 NG= if (my_rank.eq.0) then import_item [0]= N export_item [0]= N-1 NEIBPE[0]= my_rank+1 PE#

26 /3 PE# / PE# PE# PEi=1~N(=4) i=1 101 i= 10 i=3 103 i=4 104 i= i=1 10 i= 106 i=3 107 i=4 108 i= i=6 PE# i=1 109 i= 110 i=3 111 i=4 11 i= i=6 i=1 113 i= 114 i=3 11 i=4 116 i= / PE# FORTRAN $ cd <$1DH>/data $ mpif90 Oss -noparallel 1d-srb1.f $ qsub go.sh $ mpif90 Oss -noparallel 1d-srb.f $ qsub go.sh ISEND/IRECV SENDRECV i=1 101 i= 10 i=3 103 i=4 104 i= 10 i=1 10 i= 106 i=3 107 i=4 108 i= 104 i=6 109 PE# i=1 109 i= 110 i=3 111 i=4 11 i= 108 i=6 113 i=1 113 i= 114 i=3 11 i=4 116 i= 11 C $ cd <$1DH>/data $ mpicc Os -noparallel 1d-srb1.c $ qsub go.sh $ mpicc Os -noparallel 1d-srb.c $ qsub go.sh ISEND/IRECV SENDRECV

27 d-srb1.f /10 : 1d-srb1.f 3/10 PE implicit REAL*8 (A-H,O-Z) include 'mpif.h' integer(kind=4) :: my_rank, PETOT integer(kind=4) :: N, NEIBPETOT, BUFlength integer(kind=4), dimension() :: NEIBPE integer(kind=4), dimension(0:) :: import_index, export_index integer(kind=4), dimension( ) :: import_item, export_item integer(kind=4), dimension() :: SENDbuf, RECVbuf integer(kind=4), dimension(:), allocatable :: BUF integer(kind=4), dimension(:,:), allocatable :: stat_send integer(kind=4), dimension(:,:), allocatable :: stat_recv integer(kind=4), dimension(: ), allocatable :: request_send integer(kind=4), dimension(: ), allocatable :: request_recv INIT. MPI === call MPI_INIT (ierr) call MPI_COMM_SIZE (MPI_COMM_WORLD, PETOT, ierr ) call MPI_COMM_RANK (MPI_COMM_WORLD, my_rank, ierr ) === INIT === N: N= 4 allocate (BUF(N+)) BUF= 0 if (my_rank.eq.0) open (11, file='1d.0', status='unknown') if (my_rank.eq.1) open (11, file='1d.1', status='unknown') if (my_rank.eq.) open (11, file='1d.', status='unknown') if (my_rank.eq.3) open (11, file= 1d.3, status= unknown ) do i= 1, N read (11,*) BUF(i) close (11) PE# : 1d-srb1.f 4/10 istart= 1 iend = N+ if (my_rank.eq.0 ) iend = N+1 if (my_rank.eq.petot-1) iend = N+1 do i= istart, iend write (*,'(a, 3i8)') '%%% before', my_rank, i, BUF(i) 107 : 1d-srb1.f /10 NEIBPETOT= if (my_rank.eq.0 ) NEIBPETOT= 1 if (my_rank.eq.petot-1) NEIBPETOT= 1 if (PETOT.eq.1) NEIBPETOT= 0 NEIBPE(1)= my_rank - 1 NEIBPE()= my_rank + 1 if (my_rank.eq.0 ) NEIBPE(1)= my_rank + 1 if (my_rank.eq.petot-1) NEIBPE(1)= my_rank is= 1 ie= N+1 1 is= 1 ie= N+ PE# is= 1 ie= N+ is= 1 ie= N+1 1 import_index= 0 export_index= 0 import_item = 0 export_item = 0 import_index(1)= 1 import_index()= import_item (1)= N+1 import_item ()= N+ export_index(1)= 1 export_index()= export_item (1)= 1 export_item ()= N if (my_rank.eq.0) then import_item (1)= N+1 export_item (1)= N PENEIBPETOT PENEIBPE PE# BUFlength= 1

28 SENDbuf(1)=BUF(1) BUF()=RECVbuf(1) SENDbuf()=BUF(4) BUF(6)=RECVbuf() NEIBPETOT= NEIBPE(1)= my_rank - 1 NEIBPE()= my_rank + 1 import_index(1)= 1 import_index()= import_item (1)= N+1 import_item ()= N+ export_index(1)= 1 export_index()= export_item (1)= 1 export_item ()= N if (my_rank.eq.0) then import_item (1)= N+1 export_item (1)= N NEIBPE(1)= my_rank : 1d-srb1.f 6/ INIT. arrays for MPI_WAITALL === allocate (stat_send(mpi_status_size,neibpetot)) allocate (stat_recv(mpi_status_size,neibpetot)) allocate (request_send(neibpetot)) allocate (request_recv(neibpetot)) ===!! request handle request_sendrequest_recv status object stat_sendstat_recv MPI_STATUS_SIZE mpif.h mpi.h 110 : 1d-srb1.f 7/ PREPARE send buffer === do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= BUF(kk) === BUF(1)BUF(N) SENDbuf PE#(my_rank-1): NEIBPE(1) PE#(my_rank+1): NEIBPE() 111 : 1d-srb1.f 8/ SEND === is = export_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) call MPI_ISEND (SENDbuf(is), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) === RECV === ir = import_index(neib-1) + 1 len_r= import_index(neib) - import_index(neib-1) call MPI_IRECV (RECVbuf(ir), len_r, MPI_INTEGER, SENDbuf(is)len_s=1 PENEIBPE(neib) NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) === SENDbuf(1)=BUF(1) SENDbuf()=BUF(4) WAITall for RECV === call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) ===

29 : 1d-srb1.f 8/ SEND === is = export_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) call MPI_ISEND (SENDbuf(is), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) === RECV === ir = import_index(neib-1) + 1 len_r= import_index(neib) - import_index(neib-1) call MPI_IRECV (RECVbuf(ir), len_r, MPI_INTEGER, RECVbuf(ir)len_r=1 PENEIBPE(neib) NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) === WAITall for RECV === call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) 113 : 1d-srb1.f 8/ SEND === call MPI_ISEND (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) === RECV === call MPI_IRECV (RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) === RECVbuf WAITall for RECV === call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) === 114 === : 1d-srb1.f 8/ SEND === call MPI_ISEND (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) === 11 : 1d-srb1.f 9/ update array === do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) BUF(N+1) BUF(N+) RECV === call MPI_IRECV (RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) === RECVbuf WAITall for RECV === call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) do i= istart, iend write (*,'(a, 3i8)') '### after', my_rank, i, BUF(i) === PE#(my_rank-1): NEIBPE(1) PE#(my_rank+1): NEIBPE() === BUF()=RECVbuf(1) BUF(6)=RECVbuf()

30 : 1d-srb1.f 10/ update array === do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) 117 : 1d-sr1.f 10/ update array === do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) 118 do i= istart, iend write (*,'(a, 3i8)') '### after', my_rank, i, BUF(i) === do i= istart, iend write (*,'(a, 3i8)') '### after', my_rank, i, BUF(i) === WAITall for SEND === call MPI_WAITALL (NEIBPETOT, request_send, stat_send, ierr) WAITall for SEND === call MPI_WAITALL (NEIBPETOT, request_send, stat_send, ierr) === === SENDbuf : 1d-srb1.f 10/ update array === do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) do i= istart, iend write (*,'(a, 3i8)') '### after', my_rank, i, BUF(i) === WAITall for SEND === call MPI_WAITALL (NEIBPETOT, request_send, stat_send, ierr) === 119 MPI_ISEND/IRECV/WAITALL MPI_SENDRECV 1d-srb1.f: Isend/Irecv/Waitall allocate (stat_send(mpi_status_size,neibpetot)) allocate (stat_recv(mpi_status_size,neibpetot)) allocate (request_send(neibpetot)) allocate (request_recv(neibpetot)) call MPI_ISEND (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) call MPI_IRECV (RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) call MPI_WAITALL (NEIBPETOT, request_send, stat_send, ierr) 1d-srb.f: Sendrecv allocate (stat_sr(mpi_status_size)) call MPI_SENDRECV (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, stat_sr, ierr) 10

31 MPI_ISEND/IRECV/WAITALL 1d-srb1.f: Isend/Irecv/Waitall allocate (stat_send(mpi_status_size,neibpetot)) allocate (stat_recv(mpi_status_size,neibpetot)) allocate (request_send(neibpetot)) allocate (request_recv(neibpetot)) call MPI_ISEND (SENDbuf(neib), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) call MPI_IRECV (RECVbuf(neib), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) call MPI_WAITALL (NEIBPETOT, request_send, stat_send, ierr) request status MPI_IsendMPI_IrecvMPI_Waitall requeststatus 11 MPI_SENDRECV 1d-srb.f: Sendrecv allocate (stat_sr(mpi_status_size)) call MPI_SENDRECV (SENDbuf(neib), BUFlength, len_s, NEIBPE(neib), 0, RECVbuf(neib), BUFlength, len_r, NEIBPE(neib), 0, MPI_COMM_WORLD, stat_sr, ierr) status status(mpi_status_size) Isend/Irecv/Waitall status 1 -- PREPARE send buffer do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= BUF(kk) -- SEND is = export_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) call MPI_ISEND (SENDbuf(is), len_s, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) RECV ir = import_index(neib-1) + 1 len_r= import_index(neib) - import_index(neib-1) call MPI_IRECV (RECVbuf(ir), len_r, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) -- WAITall for RECV call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) -- update array do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) BUF(kk)= RECVbuf(k) 14 SENDbuf neib#1 neib# neib#3 neib#4 RECVbuf neib#1 neib# neib#3 neib#4 export_index(0)+1 len_s len_s len_s len_s export_index(1)+1 export_index()+1 export_index(3)+1 export_index(4) len_r len_r len_r len_r import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4)

32 MPI Preconditioned Conjugate Gradient Method CG Compute r (0) = b-[a]x (0) for i= 1,, solve [M]z (i-1) = r (i-1) i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else i-1 = i-1 / i- p (i) = z (i-1) + i-1 p (i) q (i) = [A]p (i) i = i-1 /p (i) q (i) x (i) = x (i-1) + i p (i) r (i) = r (i-1) - i q (i) check convergence r end SPMD 18 PE #0 PE #1 PE # PE #M-1 Program Program Program Program Data #0 Data #1 Data # Data #M-1

33 CG CPU 19 / 130 PE #0 PE #1 PE # PE #M-1 -- {q}= [A]{p} exchange W(i,P) X= X + ay Data #0 X= X + ay Data #1 X= X + ay Data # X= X + ay Data #M-1 do i= 1, N W(i,Q) = DIAG(i)*W(i,P) do j= INDEX(i-1)+1, INDEX(i) W(i,Q) = W(i,Q) + AMAT(j)*W(ITEM(j),P) / MPI_ALLREDUCE P#0 A0 B0 C0 D0 P#1 A1 B1 C1 D1 P# A B C D P#3 A3 B3 C3 D3 All reduce P#0 P#1 P# P#3 op.a0-a3 op.b0-b3 op.c0-c3 op.d0-d3 op.a0-a3 op.b0-b3 op.c0-c3 op.d0-d3 op.a0-a3 op.b0-b3 op.c0-c3 op.d0-d3 op.a0-a3 op.b0-b3 op.c0-c3 op.d0-d3 MPI_ALLREDUCE RHO= {r}{z} === RHO= 0.d0 === do i= 1, N RHO= RHO + W(i,R)*W(i,Z) allreduce RHO MPI_REDUCE + MPI_BCAST call MPI_ALLREDUCE (sendbuf,recvbuf,count,datatype,op, comm,ierr) sendbuf I recvbuf O datatype count I datatype I op I comm I ierr O

34 MPI_Reduce/Allreduce op call MPI_REDUCE (sendbuf,recvbuf,count,datatype,op,root,comm,ierr) MPI_MAXMPI_MIN MPI_SUMMPI_PROD MPI_LAND AND 133 $ cd <$1DH>/parallel $ mpif90 Oss noparallel heat_cg_p.f $ mpicc -Os -noparallel heat_cg_p.c $ qsub go.sh 134 real(kind=8):: X0, X1 call MPI_REDUCE (X0, X1, 1, MPI_DOUBLE_PRECISION, MPI_MAX, 0, <comm>, ierr) real(kind=8):: X0(4), XMAX(4) call MPI_REDUCE (X0, XMAX, 4, MPI_DOUBLE_PRECISION, MPI_MAX, 0, <comm>, ierr) 1/7 program CG_poi implicit REAL*8 (A-H,O-Z) include 'mpif.h' 13 /7 136 integer :: PETOT, my_rank, ierr integer :: N, ITERmax integer :: R, Z, P, Q, DD real(kind=8) :: dx, RESID, dphi, dphimax, BF, EPS real(kind=8), dimension(:), allocatable :: PHI, RHS real(kind=8), dimension(: ), allocatable :: DIAG, AMAT real(kind=8), dimension(:,:), allocatable :: W integer, dimension(: ), allocatable :: INDEX, ITEM -- CTRL data if (my_rank.eq.0) then open (11, file='input.dat', status='unknown') read (11,*) Ng read (11,*) dx, BF read (11,*) ITERmax read (11,*) EPS close (11) integer(kind=4) :: NEIBPETOT, BUFlength integer(kind=4), dimension() :: NEIBPE integer(kind=4), dimension(0:) :: import_index, export_index integer(kind=4), dimension( ) :: import_item, export_item real(kind=8), dimension() :: SENDbuf, RECVbuf integer(kind=4), dimension(:), allocatable :: stat INIT === -- MPI init. call MPI_INIT (ierr) call MPI_COMM_SIZE (MPI_COMM_WORLD, PETOT, ierr ) call MPI_COMM_RANK (MPI_COMM_WORLD, my_rank, ierr ) call MPI_BCAST (Ng, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (ITERmax, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (dx, 1, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (BF, 1, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (EPS, 1, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) -- LOCAL MESH size N= Ng / PETOT if (N.le.1) goto 900 nr = Ng - nnn*petot if (my_rank+1.le.nr) N= N + 1

35 /7 3/7 -- CTRL data if (my_rank.eq.0) then open (11, file='input.dat', status='unknown') read (11,*) N read (11,*) dx, BF read (11,*) ITERmax read (11,*) EPS close (11) call MPI_BCAST (Ng, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (ITERmax, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (dx, 1, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (BF, 1, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST (EPS, 1, MPI_DOUBLE_PRECISION, 0, MPI_COMM_WORLD, ierr) -- LOCAL MESH size N= Ng / PETOT if (N.le.1) goto 900 nr = Ng - nnn*petot if (my_rank+1.le.nr) N= N MATRIX allocate (PHI(N+), DIAG(N), AMAT(*N),RHS(N)) allocate (INDEX(0:N), ITEM(*N), W(N+,4)) PHI= 0.d0 AMAT= 1.d0/dX DIAG= -.d0/dx RHS= -BF * dx INDEX= -- CONNECTIVITY INDEX(0)= 0 if (my_rank.eq.0) INDEX(1 )= 1 if (my_rank.eq.petot-1) INDEX(nnn)= 1 do i= 1, nnn INDEX(i)= INDEX(i) + INDEX(i-1) i1 i i 1 x BF x 0 x i 1 Ti i i1 i i1 BF x x x x x A L A D A R RHS A D (1) A R (1) A L () A D () A R () A L (3) A D (3) A R (3) A L (4) A D (4) A R (4) A L () A D () A R () A L (6) A D (6) A R (6) A L (7) A D (7) A R (7) A L (8) A D (8) /7 4/7 -- MATRIX allocate (PHI(0:N+1), DIAG(N), AMAT(*N),RHS(N)) allocate (INDEX(0:N), ITEM(*N), W(0:N+1,4)) PHI= 0.d0 AMAT= 1.d0/dX DIAG= -.d0/dx RHS= -BF * dx INDEX= -- CONNECTIVITY INDEX(0)= 0 if (my_rank.eq.0) INDEX(1)= 1 if (my_rank.eq.petot-1) INDEX(N)= 1 do i= 1, N INDEX(i)= INDEX(i) + INDEX(i-1) AD1 AR1 AL AD AR AL3 AD3 AR3 AL4 AD4 AR4 AL AD AR AL6 AD6 AR6 AL7 AD7 AR7 AL8 AD8 do i= 1, N js= INDEX(i-1) if (my_rank.eq.0.and. i.eq.1) then ITEM(jS+1)= i+1 Xmin AMAT(jS+1)= 0.d0 DIAG(i )= 1.d0 RHS(i )= 0.d0 else if (my_rank.eq.petot-1.and. i.eq.n) then ITEM(jS+1)= i-1 Xmax DIAG(i )= -1.d0/dX else ITEM(jS+1)= i-1 ITEM(jS+)= i+1 if (i.eq.1) ITEM(jS+1)= N+1 if (i.eq.n) ITEM(jS+)= N+ if (my_rank.eq.0.and.i.eq.n) ITEM(jS+)= N+1 if (my_rank.eq.0.and.i-1.eq.1) then AMAT(jS+1)= 0.d0 1 1 PE#

36 141 C NEIBPETOT= NEIBPE(1)= my_rank - 1 NEIBPE()= my_rank NEIBPETOT= NEIBPE[0]= my_rank - 1 NEIBPE[1]= my_rank + 1 SENDbuf(1)=BUF(1) SENDbuf()=BUF(4) BUF(0)=RECVbuf(1) BUF()=RECVbuf() import_index(1)= 1 import_index()= import_item (1)= N+1 import_item ()= N+ export_index(1)= 1 export_index()= export_item (1)= 1 export_item ()= N SENDbuf[0]=BUF[0] SENDbuf[1]=BUF[3] BUF[4]=RECVbuf[0] BUF[]=RECVbuf[1] import_index[1]= 0 import_index[]= 1 import_item [0]= N import_item [1]= N+1 export_index[1]= 0 export_index[]= 1 export_item [0]= 0 export_item [1]= N-1 if (my_rank.eq.0) then import_item (1)= N+1 export_item (1)= N NEIBPE(1)= my_rank+1 if (my_rank.eq.0) then import_item [0]= N export_item [0]= N-1 NEIBPE[0]= my_rank /7 4/7 do i= 1, N js= INDEX(i-1) if (my_rank.eq.0.and. i.eq.1) then ITEM(jS+1)= i+1 Xmin AMAT(jS+1)= 0.d0 DIAG(i )= 1.d0 RHS(i )= 0.d0 else if (my_rank.eq.petot-1.and. i.eq.n) then ITEM(jS+1)= i-1 DIAG(i )= -1.d0/dX else ITEM(jS+1)= i-1 ITEM(jS+)= i+1 if (i.eq.1) ITEM(jS+1)= N+1 if (i.eq.n) ITEM(jS+)= N+ if (my_rank.eq.0.and.i.eq.n) ITEM(jS+)= N+1 if (my_rank.eq.0.and.i-1.eq.1) then AMAT(jS+1)= 0.d0 do i= 1, N js= INDEX(i-1) if (my_rank.eq.0.and. i.eq.1) then ITEM(jS+1)= i+1 AMAT(jS+1)= 0.d0 DIAG(i )= 1.d0 RHS(i )= 0.d0 else if (my_rank.eq.petot-1.and. i.eq.n) then ITEM(jS+1)= i-1 Xmax DIAG(i )= -1.d0/dX else ITEM(jS+1)= i-1 ITEM(jS+)= i+1 if (i.eq.1) ITEM(jS+1)= N+1 if (i.eq.n) ITEM(jS+)= N+ if (my_rank.eq.0.and.i.eq.n) ITEM(jS+)= N+1 if (my_rank.eq.0.and.i-1.eq.1) then AMAT(jS+1)= 0.d0 1 3 N N+1 N N

37 /7 4/7 do i= 1, N js= INDEX(i-1) if (my_rank.eq.0.and. i.eq.1) then ITEM(jS+1)= i+1 AMAT(jS+1)= 0.d0 DIAG(i )= 1.d0 RHS(i )= 0.d0 else if (my_rank.eq.petot-1.and. i.eq.n) then ITEM(jS+1)= i-1 DIAG(i )= -1.d0/dX else ITEM(jS+1)= i-1 ITEM(jS+)= i+1 if (i.eq.1) ITEM(jS+1)= N+1 if (i.eq.n) ITEM(jS+)= N+ if (my_rank.eq.0.and.i.eq.n) ITEM(jS+)= N+1 if (my_rank.eq.0.and.i-1.eq.1) then AMAT(jS+1)= 0.d0 do i= 1, N js= INDEX(i-1) if (my_rank.eq.0.and. i.eq.1) then ITEM(jS+1)= i+1 AMAT(jS+1)= 0.d0 DIAG(i )= 1.d0 RHS(i )= 0.d0 else if (my_rank.eq.petot-1.and. i.eq.n) then ITEM(jS+1)= i-1 DIAG(i )= -1.d0/dX else ITEM(jS+1)= i-1 ITEM(jS+)= i+1 if (i.eq.1) ITEM(jS+1)= N+1 if (i.eq.n) ITEM(jS+)= N+ if (my_rank.eq.0.and.i.eq.n) ITEM(jS+)= N+1 if (my_rank.eq.0.and.i-1.eq.1) then AMAT(jS+1)= 0.d0 N N N+ N N N /7 do i= 1, N js= INDEX(i-1) if (my_rank.eq.0.and. i.eq.1) then ITEM(jS+1)= i+1 AMAT(jS+1)= 0.d0 DIAG(i )= 1.d0 RHS(i )= 0.d0 else if (my_rank.eq.petot-1.and. i.eq.n) then ITEM(jS+1)= i-1 DIAG(i )= -1.d0/dX else ITEM(jS+1)= i-1 ITEM(jS+)= i+1 if (i.eq.1) ITEM(jS+1)= N+1 if (i.eq.n) ITEM(jS+)= N+ if (my_rank.eq.0.and.i.eq.n) ITEM(jS+)= N+1 if (my_rank.eq.0.and.i-1.eq.1) then AMAT(jS+1)= 0.d0 1 3 N N+1 /7 -- COMMUNICATION NEIBPETOT= if (my_rank.eq.0 ) NEIBPETOT= 1 if (my_rank.eq.petot-1) NEIBPETOT= 1 if (PETOT.eq.1) NEIBPETOT= 0 NEIBPE(1)= my_rank - 1 NEIBPE()= my_rank + 1 if (my_rank.eq.0 ) NEIBPE(1)= my_rank + 1 if (my_rank.eq.petot-1) NEIBPE(1)= my_rank - 1 BUFlength= 1 import_index= 0 export_index= 0 import_item = 0 export_item = 0 import_index(1)= 1 import_index()= import_item (1)= N+1 import_item ()= N+ export_index(1)= 1 export_index()= export_item (1)= 1 export_item ()= N if (my_rank.eq.0) then import_item (1)= N+1 export_item (1)= N

38 1D PE PE SENDbuf(1)=BUF(1) BUF(0)=RECVbuf(1) SENDbuf()=BUF(4) BUF()=RECVbuf() SENDbuf(1)=BUF(1) BUF(0)=RECVbuf(1) SENDbuf()=BUF(4) BUF()=RECVbuf() NEIBPETOT= NEIBPE(1)= my_rank - 1 NEIBPE()= my_rank + 1 import_index(1)= 1 import_index()= import_item (1)= N+1 import_item ()= N+ export_index(1)= 1 export_index()= export_item (1)= 1 export_item ()= N 10 0~N+11~N PE# if (my_rank.eq.0) then import_item (1)= N+1 export_item (1)= N NEIBPE(1)= my_rank+1 C SENDbuf[0]=BUF[0] BUF[4]=RECVbuf[0] SENDbuf[1]=BUF[3] BUF[]=RECVbuf[1] NEIBPETOT= NEIBPE[0]= my_rank - 1 NEIBPE[1]= my_rank + 1 import_index[1]= 0 import_index[]= 1 import_item [0]= N import_item [1]= N+1 export_index[1]= 0 export_index[]= 1 export_item [0]= 0 export_item [1]= N-1 if (my_rank.eq.0) then import_item [0]= N export_item [0]= N-1 NEIBPE[0]= my_rank {q}= [A]{p} - 6/7 init do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= W(kk,P) -- SEND RECV. is= export_index(neib-1) + 1 ir= import_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) len_r= import_index(neib) - import_index(neib-1) call MPI_SENDRECV (SENDbuf(is), len_s, MPI_DOUBLE_PRECISION,NEIBPE(neib),0, - RECVbuf(ir), len_r, MPI_DOUBLE_PRECISION,NEIBPE(neib),0, MPI_COMM_WORLD, stat1, ierr) update do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) W(kk,P)= RECVbuf(k) do i= 1, N W(i,Q) = DIAG(i)*W(i,P) do j= INDEX(i-1)+1, INDEX(i) W(i,Q) = W(i,Q) + AMAT(j)*W(ITEM(j),P) W(i,p) 1

39 NEIBPETOTNEIBPE(neib) SENDbuf(1)=BUF(1) SENDbuf()=BUF(4) NEIBPETOT=, NEIB(1)= my_rank-1, NEIB()= my_rank+1 export_index(neib), neib= 0, NEIBPETOT export_index(0)=0, export_index(1)= 1, export_index()= export_item(k), k= 1, export_index(neibpetot) export_item(1)= 1, export_item()= N SENDbuf(k), k= 1, export_index(neibpetot) SENDbuf(1)= BUF(1), SENDbuf()= BUF(N) 13 SENDbuf MPI_Isend/Irecv/Waitall export_index(0)+1 neib#1 neib# neib#3 neib#4 BUFlength_e BUFlength_e BUFlength_e BUFlength_e export_index(1)+1 export_index()+1 do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= VAL(kk) is_e= export_index(neib-1) + 1 ie_e= export_index(neib ) BUFlength_e= ie_e is_e export_index(3)+1 call MPI_ISEND (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_send(neib), ierr) call MPI_WAITALL (NEIBPETOT, request_send, stat_recv, ierr) 14 export_index(4) SENDbuf MPI_Sendrecv neib#1 neib# neib#3 neib#4 BUFlength_e BUFlength_e BUFlength_e BUFlength_e export_index(0)+1 export_index(1)+1 export_index()+1 export_index(3)+1 export_index(4) do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= VAL(kk) is_e= export_index(neib-1) + 1 ie_e= export_index(neib ) BUFlength_e= ie_e is_e call MPI_SENDRECV (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, stat_sr, ierr) 1 NEIBPETOTNEIBPE(neib) : BUF()=RECVbuf(1) NEIBPETOT=, NEIB(1)= my_rank-1, NEIB()= my_rank+1 import_index(neib), neib= 0, NEIBPETOT import_index(0)=0, import_index(1)= 1, import_index()= import_item(k), k= 1, import_index(neibpetot) import_item(1)= N+1, import_item()= N+ RECVbuf(k), k= 1, import_index(neibpetot) BUF(N+1)=RECVbuf(1), BUF(N+)=RECVbuf() BUF(6)=RECVbuf() 16

40 MPI_Isend/Irecv/Waitall 17 MPI_Sendrecv 18 is_i= import_index(neib-1) + 1 ie_i= import_index(neib ) BUFlength_i= ie_i is_i is_i= import_index(neib-1) + 1 ie_i= import_index(neib ) BUFlength_i= ie_i is_i call MPI_IRECV (RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, request_recv(neib), ierr) call MPI_WAITALL (NEIBPETOT, request_recv, stat_recv, ierr) do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) VAL(kk)= RECVbuf(k) call MPI_SENDRECV (SENDbuf(iS_e), BUFlength_e, MPI_INTEGER, NEIBPE(neib), 0, RECVbuf(iS_i), BUFlength_i, MPI_INTEGER, NEIBPE(neib), 0, MPI_COMM_WORLD, stat_sr, ierr) do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) VAL(kk)= RECVbuf(k) RECVbuf neib#1 neib# neib#3 neib#4 RECVbuf neib#1 neib# neib#3 neib#4 BUFlength_i BUFlength_i BUFlength_i BUFlength_i import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4) BUFlength_i BUFlength_i BUFlength_i BUFlength_i import_index(0)+1 import_index(1)+1 import_index()+1 import_index(3)+1 import_index(4) 6/7 19 6/ {q}= [A]{p} - init do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= W(kk,P) -- SEND RECV. is= export_index(neib-1) + 1 ir= import_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) len_r= import_index(neib) - import_index(neib-1) call MPI_SENDRECV (SENDbuf(is), len_s, MPI_DOUBLE_PRECISION,NEIBPE(neib),0, - RECVbuf(ir), len_r, MPI_DOUBLE_PRECISION,NEIBPE(neib),0, MPI_COMM_WORLD, stat1, ierr) update do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) W(kk,P)= RECVbuf(k) do i= 1, N W(i,Q) = DIAG(i)*W(i,P) do j= INDEX(i-1)+1, INDEX(i) W(i,Q) = W(i,Q) + AMAT(j)*W(ITEM(j),P) -- {q}= [A]{p} - init do k= export_index(neib-1)+1, export_index(neib) kk= export_item(k) SENDbuf(k)= W(kk,P) -- SEND RECV. is= export_index(neib-1) + 1 ir= import_index(neib-1) + 1 len_s= export_index(neib) - export_index(neib-1) len_r= import_index(neib) - import_index(neib-1) call MPI_SENDRECV (SENDbuf(is), len_s, MPI_DOUBLE_PRECISION,NEIBPE(neib),0, - RECVbuf(ir), len_r, MPI_DOUBLE_PRECISION,NEIBPE(neib),0, MPI_COMM_WORLD, stat1, ierr) update do k= import_index(neib-1)+1, import_index(neib) kk= import_item(k) W(kk,P)= RECVbuf(k) do i= 1, N W(i,Q) = DIAG(i)*W(i,P) do j= INDEX(i-1)+1, INDEX(i) W(i,Q) = W(i,Q) + AMAT(j)*W(ITEM(j),P) PE W(i,p) {q}=[a]{p}

41 7/7 -- ALPHA= RHO / {p}{q} C10= 0.d0 do i= 1, N C10= C10 + W(i,P)*W(i,Q) call MPI_allREDUCE (C10, C1, 1, MPI_DOUBLE_PRECISION, MPI_SUM, MPI_COMM_WORLD, ierr) ALPHA= RHO / C1 -- {x}= {x} + ALPHA*{p} {r}= {r} - ALPHA*{q} do i= 1, N PHI(i) = PHI(i) + ALPHA * W(i,P) W (i,r)= W(i,R) - ALPHA * W(i,Q) DNRM0 = 0.0 do i= 1, N DNRM0= DNRM0 + W(i,R)** call MPI_allREDUCE (DNRM0, DNRM, 1, MPI_DOUBLE_PRECISION, MPI_SUM, MPI_COMM_WORLD, ierr) RESID= dsqrt(dnrm/bnrm) 161 go.shinput.dat PENg #@$-r paracg #@$-q lecture7 #@$-N 1 #@$-J T16 #@$-e err #@$-o test-016.lst #@$-lm 8GB #@$-lt 00:1:00 #@$ cd $PBS_O_WORKDIR mpirun n1.sh./a.out d0 1.d d-7 16 if (my_rank.eq.0.and.mod(iter,1000).eq.0) then write (*, '(i,1pe16.6)') iter, RESID exit if ( RESID.le.EPS) goto 900 RHO1 = RHO 163

消息传递并行编程环境MPI.doc

消息传递并行编程环境MPI.doc 973 MPI PETS 8 15 8 16 8 17 MPI MPI MPI MPI 2 MPI PETS PETS 1 1971 7 1992 1997 1999 2 MPI MPI MPI 1 MPI MPI MPI 2 - u=f MPI 3 1 proess 1 2 2 CPU 4 send reeive barrier redution 1 2 3 CPU soket, 4 : API

More information

untitled

untitled MPICH anzhulin@sohu.com 1 MPICH for Microsoft Windows 1.1 MPICH for Microsoft Windows Windows NT4/2000/XP Professional Server Windows 95/98 TCP/IP MPICH MS VC++ 6.x MS VC++.NET Compaq Visual Fortran 6.x

More information

第7章-并行计算.ppt

第7章-并行计算.ppt EFEP90 10CDMP3 CD t 0 t 0 To pull a bigger wagon, it is easier to add more oxen than to grow a gigantic ox 10t 0 t 0 n p Ts Tp if E(n, p) < 1 p, then T (n) < T (n, p) s p S(n,p) = p : f(x)=sin(cos(x))

More information

07-1.indd

07-1.indd 1 02 04 13 16 19 21 24 28 32 38 44 49 54 12 27 57 58 59 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Å 20 ELMFIRE Procon LES EFSS CohortComparator GPaw 21 22 ï ~ ~ ~ ~ 23 24 25 26 CPU usage time (s) time

More information

大綱介紹 MPI 標準介紹 MPI 的主要目標 Compiler & Run 平行程式 MPICH 程式基本架構 點對點通訊 函數介紹 集體通訊 函數介紹

大綱介紹 MPI 標準介紹 MPI 的主要目標 Compiler & Run 平行程式 MPICH 程式基本架構 點對點通訊 函數介紹 集體通訊 函數介紹 MPI 平行程式設計 勁智數位科技股份有限公司 技術研發部林勝峰 sflin@infowrap.com.tw 大綱介紹 MPI 標準介紹 MPI 的主要目標 Compiler & Run 平行程式 MPICH 程式基本架構 點對點通訊 函數介紹 集體通訊 函數介紹 MPI (Message Passing Interface) Version1.0:June, 1994. Version1.1:June,

More information

模板

模板 MPI MPI MPI MPI MPI MPI 4 18 9% 5 ? 6 ? 7 数 个数 数 个数 个数 个数 8 ccnuma; SMP MPP; Cluster 9 10 11 12 13 MPI MPI MPI MPI MPI? MPI MPI MPI MPI 15 MPI? MPI(Message Passing Interface ) 1994 5 MPI MPI MPI MPI C

More information

Linux Linux Linux

Linux Linux Linux 2003 2003 8 28 http://lssc.cc.ac.cn/training2003 1 3 23 Linux 37 3.1............................................... 37 3.2 Linux..................................... 37 3.3 Linux..................................

More information

投影片 1

投影片 1 平行運算簡介 / 實例操作企鵝也會的 MPICH 研究員 : 鄧偉華 wade@nchc.org.tw 什麼是平行計算 傳統 : 單一程序 單一 CPU 什麼是平行計算 ( 續 ) 平行計算 程序切割 多 CPUs 為什麼要平行計算 簡省時間 解決大型問題 即時性 使用更多來自網路上的資源 使用大量 便宜 PCs 取代超級電腦 記憶體不足 平行計算種類 Flynn's taxonomy 多處理器架構

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第四讲 消息传递编程接口 MPI 一 MPI 编程基础 主要内容 MPI 安装 程序编译与运行 MPI 编程基础 MPI 程序基本结构 MPI 数据类型 消息发送和接收 MPI 一些常用函数 MPI 介绍 Message Passing Interface 消息传递编程标准, 目前最为通用的并行编程方式 提供一个高效 可扩展 统一的并行编程环境 MPI 是一个库, 不是一门语言,MPI 提供库函数

More information

Microsoft PowerPoint - Tongji_MPI编程初步

Microsoft PowerPoint - Tongji_MPI编程初步 并行编程初步 张丹丹 上海超级计算中心 2011-3-4 提纲 引言 认识 MPI 编程 MPI 编程简介 实例 并行计算机体系架构 共享存储 (Shared Memory) 并行计算机体系架构 分布式存储 (Distributed Memory) 混合架构 (Hybrid) 并行计算机体系架构 并行编程模型 数据并行模型 相同的操作同时作用于不同的数据 共享变量模型 用共享变量实现并行进程间的通信

More information

Parallel Programming with MPI

Parallel Programming  with MPI MPI 并行编程入门 中国科学院计算机网络信息中心超级计算中心 聚合通信 定义 三种通信方式 聚合函数列表 同步 广播 收集 散发 全散发收集 归约 定义 communicator 1 3 4 5 0 2 一个通信器的所有进程参与, 所有进程都调用聚合通信函数 MPI 系统保证聚合通信函数与点对点调用不会混淆 聚合通信不需要消息标号 聚合通信函数都为阻塞式函数 聚合通信的功能 : 通信 同步 计算等

More information

chi@sccas.cn, chi@sc.cnic.cn http://lssc.cc.ac.cn/ http://www.sccas.cn/ http://www.scgrid.cn/ http://www.cngrid.org/ 2005 4 6 3 5 1.1............................ 5 1.2............................. 6 1.2.1..........................

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第六讲 消息传递编程接口 MPI 二 MPI 消息传递 1 MPI 消息传递 MPI 点对点通信类型 阻塞型和非阻塞型 MPI 消息发送模式 标准模式 缓冲模式 同步模式 就绪模式 MPI 聚合通信 多个进程间的通信 2 阻塞型和非阻塞型通信 阻塞型 (blocking) 和非阻塞型 (non blocking) 通信 阻塞型通信函数需要等待指定的操作实际完成, 或所涉及的数据被 MPI 系统安全备份后才返回

More information

《拍案惊奇》(中)

《拍案惊奇》(中) ! " # $! +"+ ###########!"" ##########!!$ ##########!$% " ##########!&! ############!%$ ########## $ " ########### $"( ########## $)* +,+ $$$$$$$$$$$!"# $$$$$$$$$$$!%& $$$$$$$$$$$!# $$$$$$$$$$$ $$$$$$$$$$$

More information

科学计算的语言-FORTRAN95

科学计算的语言-FORTRAN95 科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造

More information

件 驱 动 属 短 线 操 作, 操 作 风 险 相 对 较 大, 建 议 快 进 快 出, 不 可 恋 战! 昨 日 盘 面 中 表 现 活 跃 的 品 种 多 为 低 价 股, 钢 铁 煤 炭 成 为 涨 幅 居 前 的 品 种, 有 以 下 几 点 值 得 关 注 : 首 先 从 行 业 看,

件 驱 动 属 短 线 操 作, 操 作 风 险 相 对 较 大, 建 议 快 进 快 出, 不 可 恋 战! 昨 日 盘 面 中 表 现 活 跃 的 品 种 多 为 低 价 股, 钢 铁 煤 炭 成 为 涨 幅 居 前 的 品 种, 有 以 下 几 点 值 得 关 注 : 首 先 从 行 业 看, 2016 年 01 月 07 日 一 风 行 视 点 1. 市 场 研 判 昨 日 盘 面 中 热 点 转 换 非 常 明 显 滞 涨 低 价 成 为 资 金 短 期 追 逐 重 点 市 场 风 格 的 转 换 说 明 资 金 偏 于 谨 慎, 同 时 热 点 的 快 速 轮 动 也 说 明 反 弹 以 存 量 资 金 为 主 预 计 短 期 市 场 仍 将 缺 乏 赚 钱 效 应, 投 资 者 应

More information

Department of Science and Engineering Computing School of Mathematics School Peking University October 9, 2007

Department of Science and Engineering Computing School of Mathematics School Peking University October 9, 2007 Department of Science and Engineering Computing School of Mathematics School Peking University October 9, 2007 Department of Science and Engineering Computing School of Mathematics School Peking University

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

OMP-2 3 ICCG OK DAXPY OK OK OpenMP directive OMP-2 2? Ordering g Red-Black Multicolor MC Cuthill-McKee CM Reverse-CM RCM ICCG OMP-2 4 co

OMP-2 3 ICCG OK DAXPY OK OK OpenMP directive OMP-2 2? Ordering g Red-Black Multicolor MC Cuthill-McKee CM Reverse-CM RCM ICCG OMP-2 4 co 201163071 OMP-2 3 ICCG OK DAXPYOK OK OpenMPdirective OMP-2 2? Ordering g Red-BlackMulticolorMC Cuthill-McKeeCMReverse-CMRCM ICCG OMP-2 4 coloring OMP-2 5 coloring OMP-2 7 Red-Black1/3 OMP-2 6 coloring

More information

目 录 参 考 材 料 1 第 一 章 预 备 知 识 2 1.1 高 性 能 并 行 计 算 机 系 统 简 介.................................. 2 1.1.1 微 处 理 器 的 存 储 结 构.................................

目 录 参 考 材 料 1 第 一 章 预 备 知 识 2 1.1 高 性 能 并 行 计 算 机 系 统 简 介.................................. 2 1.1.1 微 处 理 器 的 存 储 结 构................................. MPI 并 行 编 程 讲 稿 张 林 波 中 国 科 学 院 数 学 与 系 统 科 学 研 究 院 科 学 与 工 程 计 算 国 家 重 点 实 验 室 1999 年 7 月 ( 最 后 修 订 :2012 年 7 月 ) i 目 录 参 考 材 料 1 第 一 章 预 备 知 识 2 1.1 高 性 能 并 行 计 算 机 系 统 简 介..................................

More information

Microsoft Word - 前行广释7.doc

Microsoft Word - 前行广释7.doc ( 七 ) 华 智 仁 波 切 著 索 达 吉 堪 布 译 讲 前 行 广 释 目 录 积 累 资 粮 第 一 百 一 十 九 节 课...324 第 一 百 二 十 节 课...347 发 殊 胜 菩 提 心 第 一 百 零 五 节 课... 1 第 一 百 零 六 节 课... 23 第 一 百 零 七 节 课... 44 第 一 百 零 八 节 课... 64 第 一 百 零 九 节 课...

More information

量 來 調 節 體 溫 隨 年 齡 老 化, 真 皮 層 之 厚 度 約 減 少 20%, 其 中 的 血 管 汗 腺 與 神 經 末 梢 的 數 量 也 隨 之 減 少, 造 成 老 人 的 體 溫 調 節 功 能 降 低 發 炎 反 應 減 慢 對 觸 覺 與 痛 覺 感 降 低 提 供 皮 膚

量 來 調 節 體 溫 隨 年 齡 老 化, 真 皮 層 之 厚 度 約 減 少 20%, 其 中 的 血 管 汗 腺 與 神 經 末 梢 的 數 量 也 隨 之 減 少, 造 成 老 人 的 體 溫 調 節 功 能 降 低 發 炎 反 應 減 慢 對 觸 覺 與 痛 覺 感 降 低 提 供 皮 膚 1. 認 識 老 化 在 各 系 統 的 生 理 改 變 2. 認 識 身 體 系 統 老 化 對 老 人 產 生 的 影 響 3. 認 識 如 何 對 老 人 執 行 身 體 評 估 4. 認 識 皮 膚 與 足 部 的 護 理 5. 認 識 老 人 之 活 動 障 礙 問 題 6. 瞭 解 相 關 知 識 對 於 銀 髮 產 業 的 關 係 皮 膚 系 統 的 老 化 改 變 人 類 老 化 的

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 机群应用开发 并行编程原理及程序设计 Parallel Programming: Fundamentals and Implementation 占杰 zhanjie@dawningcomcn 曙光信息产业有限公司 2010 年 1 月 2010 年 1 月 1 参考文献 黄铠, 徐志伟著, 陆鑫达等译 可扩展并行计算技术, 结构与编程 北京 : 机械工业出版社, P33~56,P227~237,

More information

百度文库上传模板

百度文库上传模板 人 大 国 际 政 治 考 研 报 考 复 习 指 导 (2) 真 题 参 考 书 本 文 目 录 一 2016 年 人 大 国 际 政 治 专 业 考 研 真 题 分 析 二 人 大 国 际 政 治 专 业 考 研 专 业 课 复 习 参 考 书 ( 育 明 教 育 权 威 推 荐 ) 三 人 大 国 际 政 治 专 业 考 研 考 试 内 容 招 考 统 计 四 人 民 大 学 国 际 关 系

More information

B(K,J)=B(K,J)*B(K,K) do I=1,N if(i.ne.k) then do J=1,N if(j.ne.k) then B(I,J)=B(I,J)-B(I,K)*B(K,J) do I=1,N if(i.ne.k) then B(I,K)=-B(I,K)*B(K,K) do K

B(K,J)=B(K,J)*B(K,K) do I=1,N if(i.ne.k) then do J=1,N if(j.ne.k) then B(I,J)=B(I,J)-B(I,K)*B(K,J) do I=1,N if(i.ne.k) then B(I,K)=-B(I,K)*B(K,K) do K module Lxz_Tools implicit none integer (kind(1)),parameter ::ikind=(kind(1)) integer (kind(1)),parameter ::rkind=(kind(0.d0)) real (rkind), parameter :: Zero=0.D0,One=1.D0,Two=2.D0,Three=3.D0, & & Four=4.D0,Five=5.D0,Six=6.D0,Seven=7.D0,Eight=8.D0,Nine=9.D0,

More information

育儿知识100问(二)

育儿知识100问(二) 100 9998.00 (1CD, ) I...1...2...5...6 B...9...10... 11...13...15 1...16...17...21...23...25...27...30...33...34...36...38...39...40...44...47...48 II...49 5...50...50...51...52...53...54 2...55...56...60...64...65...67...69...76...76...79...81...83...86...90...99

More information

untitled

untitled Fortran Chapter 7 Subroutine ( ) and Function 7-1 subroution 行 不 行 來 行 The general form of a subroutine is subroutine subroutine_name ( argument_list) (Declaration section) (Execution section) retrun end

More information

Parallel Programing with MPI Binding with Fortran, C,C++

Parallel Programing with MPI Binding with Fortran, C,C++ M P I 并行编程 C/C++/Fortran 语言绑定 ID: 独峰箫狼 版本 : v1.2.1 :tkong@mail.sdu.edu.cn 1 目录 并行简介 MPI 概述 MPI 编程 MPI 基本概念 六个基本函数 详解消息通信域 衍生数据类型 点对点通信 群集通信 一些练习程序 2 并行简介 何谓并行 如何创建并行程序 并行结构 并行编程模型 3 何谓并行 多个线程同时进行工作 就像电路的并联可以起到分流的作用一样

More information

mpi

mpi MPI I II MPI FORTRAN C MPI MPI C /FORTRAN MPI MPI MPI MPI MPI MPI-2 MPI-1 MPI-2 MPI MPI ...IX...XI... XII...XIV... XVII...1 1...2 1.1...2 1.1.1...2 1.1.2...3 1.2...4 1.3...5 2...6 2.1...6 2.2...7 2.3...8

More information

Parallel Programming with MPI

Parallel Programming  with MPI MPI 并行编程入门 中国科学院计算机网络信息中心超级计算中心 参考材料 张林波清华大学出版社莫则尧科学出版社都志辉清华大学出版社 消息传递平台 MPI 什么是 MPI (Message Passing Interface) 是函数库规范, 而不是并行语言 ; 操作如同库函数调用 是一种标准和规范, 而非某个对它的具体实现 (MPICH 等 ), 与编程语言无关 是一种消息传递编程模型, 并成为这类编程模型的代表

More information

PROFIBUS3.doc

PROFIBUS3.doc PLC PLC ProfiBus 3. PROFIBUS-DP PROFIBUS-DP PROFIBUS-DP PROFIBUS S7 STEP7 SIMATIC NET S5 COM PROFIBUS COM5431 PROFIBUS-DP GSD GSD *.GSD *. GSE GSD S7 STEP7 PROFIBUS DP S7-400 CPU416-2DP S7-200 PROFIBUS

More information

PowerPoint Presentation

PowerPoint Presentation 并行计算 十五 分布存储系统并行编程 分布存储系统并行编程 14.1 基于消息传递的并行编程 14.2 MPI 并行编程 6 个基本函数组成的 MPI 子集 MPI 消息 点对点通信 群集通信 SPMD 和 MPMD SPMD 各个进程是同构的, 多个进程对不同的数据执行相同的代码 ( 一般是数据并行 ) 常对应并行循环, 数据并行结构, 单代码 MPMD 各个进程是异构的, 多个进程执行不同的代码

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 机群应用开发 并行编程原理及程序设计 Parallel Programming: Fundamentals and Implementation 戴荣 dair@dawningcomcn 曙光信息产业有限公司 2008 年 7 月 2008 年 7 月 1 参考文献 黄铠, 徐志伟著, 陆鑫达等译 可扩展并行计算技术, 结构与编程 北京 : 机械工业出版社, P33~56,P227~237, 2000

More information

九十三學年度高級中學資訊學科能力競賽決賽

九十三學年度高級中學資訊學科能力競賽決賽 年 度 力 不 六 行 令 行 若 來 行 來 行 行 例 六 例 料 例 讀 錄 讀 路 不 更 不 1. 旅 行 度 了 旅 行 不 兩 了 不 不 S 1 S 2 S 2 S 3...S n-1 S n S n S 1 例 1 2 0 ( ) 3 1 4 2 例 3 2 旅 行 3 3 1 1 0 0 2 旅 行 4 3 旅 行 4 3 0 1 2 4 兩 行 旅 行 ( 例 4 ) 行 數

More information

WinMDI 28

WinMDI 28 WinMDI WinMDI 2 Region Gate Marker Quadrant Excel FACScan IBM-PC MO WinMDI WinMDI IBM-PC Dr. Joseph Trotter the Scripps Research Institute WinMDI HP PC WinMDI WinMDI PC MS WORD, PowerPoint, Excel, LOTUS

More information

Go构建日请求千亿微服务最佳实践的副本

Go构建日请求千亿微服务最佳实践的副本 Go 构建 请求千亿级微服务实践 项超 100+ 700 万 3000 亿 Goroutine & Channel Goroutine Channel Goroutine func gen() chan int { out := make(chan int) go func(){ for i:=0; i

More information

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5]

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5] DYNAMIC SCHEDULING IN TWO-MACHINE FLOW-SHOP WITH RECIRCULATION em-plant( SiMPLE++) Jen-Shiang Chen, Jar-Her Kao, Chun-Chieh Chen, Po-Cheng Liu, and Wen-Pin Lin Department of Industrial Engineering and

More information

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f 27 1 Vol.27 No.1 CEMENTED CARBIDE 2010 2 Feb.2010!"!!!!"!!!!"!" doi:10.3969/j.issn.1003-7292.2010.01.011 OPC 1 1 2 1 (1., 412008; 2., 518052), OPC, WinCC VB,,, OPC ; ;VB ;WinCC Application of OPC Technology

More information

EC(2013-1 4)13 第 2 頁 (b) 把 總 目 100 在 2013-14 年 度 常 額 編 制 內 所 有 非 首 長 級 職 位 按 薪 級 中 點 估 計 的 年 薪 總 值 上 限 提 高 12,480,540 元, 即 由 461,070,000 元 增 至 473,550

EC(2013-1 4)13 第 2 頁 (b) 把 總 目 100 在 2013-14 年 度 常 額 編 制 內 所 有 非 首 長 級 職 位 按 薪 級 中 點 估 計 的 年 薪 總 值 上 限 提 高 12,480,540 元, 即 由 461,070,000 元 增 至 473,550 EC(2013-1 4)13 財 務 委 員 會 人 事 編 制 小 組 委 員 會 討 論 文 件 2014 年 1 月 8 日 總 目 100- 海 事 處 分 目 000 運 作 開 支 總 目 92- 律 政 司 分 目 000 運 作 開 支 總 目 158- 政 府 總 部 : 運 輸 及 房 屋 局 ( 運 輸 科 ) 分 目 000 運 作 開 支 請 各 委 員 向 財 務 委 員

More information

第5章修改稿

第5章修改稿 (Programming Language), ok,, if then else,(), ()() 5.0 5.0.0, (Variable Declaration) var x : T x, T, x,,,, var x : T P = x, x' : T P P, () var x:t P,,, yz, var x : int x:=2. y := x+z = x, x' : int x' =2

More information

Paratune用户手册

Paratune用户手册 PARATERA Paratune 用 户 手 册 v4.0 北 京 并 行 科 技 有 限 公 司 2013 / 10 目 录 1 手 册 说 明... 5 1.1 关 于 手 册... 5 1.2 排 版 约 定... 5 1.3 名 词 解 释... 5 1.4 相 关 文 档... 6 1.5 信 息 反 馈... 6 2 Paratune 简 介... 7 2.1 软 件 界 面 与 主

More information

<4D F736F F D20BAA3D0E3C2B7D1D3B3A4B6CED2BBC6DAA3A8C4CFBFC6C9EEDBDAD2BDD4BAD2BBC6DA7EBAFEB1F5CEF7C2B7A3A9B9A4B3CCCFEEC4BFBFA2B9A4BBB7BEB3B1A3BBA4D1E9CAD5B5F7B2E9B1A8B8E6A3A8B9ABCABEB8E5A3A9>

<4D F736F F D20BAA3D0E3C2B7D1D3B3A4B6CED2BBC6DAA3A8C4CFBFC6C9EEDBDAD2BDD4BAD2BBC6DA7EBAFEB1F5CEF7C2B7A3A9B9A4B3CCCFEEC4BFBFA2B9A4BBB7BEB3B1A3BBA4D1E9CAD5B5F7B2E9B1A8B8E6A3A8B9ABCABEB8E5A3A9> 1.1 前 言 第 一 章 总 论 海 秀 路 延 长 段 工 程 位 于 宝 安 区 新 安 街 道 内, 呈 西 北 - 东 南 走 向, 西 侧 起 点 处 接 新 建 的 新 安 一 路, 东 侧 终 点 处 接 湖 滨 西 路, 该 路 段 为 II 级 次 干 道, 全 长 约 674.191m 海 秀 路 延 长 段 前 200m 为 改 扩 建, 后 470m 为 新 建, 道 路

More information

馬偕醫學院 學生事務工作簡報

馬偕醫學院 學生事務工作簡報 馬 偕 醫 學 院 總 務 處 簡 介 報 告 人 申 永 順 總 務 長 總 務 處 織 與 成 員 許 鎂 秀 曾 柏 壽 楊 嘉 華 吳 俊 仲 內 容 校 園 環 境 生 活 機 能 二 期 工 程 配 合 事 項 馬 偕 醫 學 院 一 期 校 園 簡 介 網 球 場 籃 / 排 球 場 三 芝 區 市 中 心 教 學 大 樓 5C 聯 合 行 政 辦 公 區 A 區 B 區 C 區 藝

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

VASP应用运行优化

VASP应用运行优化 1 VASP wszhang@ustc.edu.cn April 8, 2018 Contents 1 2 2 2 3 2 4 2 4.1........................................................ 2 4.2..................................................... 3 5 4 5.1..........................................................

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

... III %

... III % GB/T 126052007 GB/T 126051990 Non-destructive testingradiographic testing of circumferential fusion-welded butt joints in metallic pipes and tubes 2007.2 2007- - 2007- - ... III 1...1 2...1 3...1 4...2

More information

第 42 卷 第 5 期 2012 年 9 月 浙 江 大 学 学 报 人文社会科学版 Journal of Zhejiang University Humanities and Social Sciences V ol 42 N o 5 Sept 2012 DOI 10 3785 j issn 1008 942X 2012 04 052 亚当 斯密和文明社会的四个隐喻 张国清 张翼飞 浙江大学 公共管理学院

More information

目录 第一章 MPI 简介 消息传递编程的相关概念 分布式内存 消息传输 进程 消息传递库 发送 / 接收 同步 / 异步 阻塞

目录 第一章 MPI 简介 消息传递编程的相关概念 分布式内存 消息传输 进程 消息传递库 发送 / 接收 同步 / 异步 阻塞 神威蓝光 计算机系统 MPI 用户手册 国家超级计算济南中心 2011 年 03 月 目录 第一章 MPI 简介... 1 1.1 消息传递编程的相关概念... 2 1.1.1 分布式内存... 2 1.1.2 消息传输... 3 1.1.3 进程... 3 1.1.4 消息传递库... 3 1.1.5 发送 / 接收... 3 1.1.6 同步 / 异步... 3 1.1.7 阻塞通讯... 4

More information

目 錄 校 徽 圖 解 1 校 訓 釋 義 2 中 華 人 民 共 和 國 國 歌 3 順 德 聯 誼 總 會 屬 校 校 歌 4 辦 學 宗 旨 及 目 標 5 校 規 8 獎 懲 制 度 14 其 他 規 定 23 注 意 事 項 29 附 錄 33

目 錄 校 徽 圖 解 1 校 訓 釋 義 2 中 華 人 民 共 和 國 國 歌 3 順 德 聯 誼 總 會 屬 校 校 歌 4 辦 學 宗 旨 及 目 標 5 校 規 8 獎 懲 制 度 14 其 他 規 定 23 注 意 事 項 29 附 錄 33 學 生 須 知 網 頁 版 (14/15 年 度 ) 目 錄 校 徽 圖 解 1 校 訓 釋 義 2 中 華 人 民 共 和 國 國 歌 3 順 德 聯 誼 總 會 屬 校 校 歌 4 辦 學 宗 旨 及 目 標 5 校 規 8 獎 懲 制 度 14 其 他 規 定 23 注 意 事 項 29 附 錄 33 校 徽 圖 解 不 規 則 圖 形 是 順 德 市 的 輪 廓, 輪 廓 內 四 小 圖 代

More information

(Microsoft Word - 5\276\302\270g\260\252\256v .doc)

(Microsoft Word - 5\276\302\270g\260\252\256v .doc) 問 學 第 七 期 -2004 年 高 雄 : 國 立 高 雄 師 範 大 學 國 文 系 六 祖 壇 經 及 其 語 言 研 究 考 述 邱 湘 雲 * 摘 要 禪 宗 自 唐 代 盛 行 至 今 歷 千 年 而 不 衰 六 祖 壇 經 為 禪 門 重 要 典 籍 欲 知 中 國 禪 宗 思 想 之 開 展 當 由 此 書 看 起 本 文 回 歸 文 本 考 論 壇 經 之 書 名 作 者 編 撰

More information

南京师范大学2012年度本科教学质量报告

南京师范大学2012年度本科教学质量报告 2013 年 本 科 教 学 质 量 报 告 二 一 四 年 十 月 目 录 一 本 科 专 业 设 置 及 学 生 基 本 情 况... 1 ( 一 ) 本 科 专 业 设 置 情 况... 1 ( 二 ) 本 科 生 生 源 情 况... 1 ( 三 ) 在 校 本 科 生 情 况... 2 二 师 资 与 教 学 条 件... 3 ( 一 ) 教 师 情 况... 3 ( 二 ) 教 学 经

More information

大 台 北 與 桃 竹 苗 地 區 北 得 拉 曼 巨 木 步 道 新 竹 縣 尖 石 鄉 鎮 西 堡 巨 木 群 步 道 新 竹 縣 尖 石 鄉 鳥 嘴 山 登 山 步 道 苗 栗 縣 泰 安 鄉 加 里 山 登 山 步 道 苗 栗 縣 南 庄 鄉

大 台 北 與 桃 竹 苗 地 區 北 得 拉 曼 巨 木 步 道 新 竹 縣 尖 石 鄉 鎮 西 堡 巨 木 群 步 道 新 竹 縣 尖 石 鄉 鳥 嘴 山 登 山 步 道 苗 栗 縣 泰 安 鄉 加 里 山 登 山 步 道 苗 栗 縣 南 庄 鄉 地 區 步 道 名 稱 蘇 花 古 道 : 大 南 澳 越 嶺 段 困 難 度 分 級 長 度 ( 公 里 ) 2 4.1 宜 蘭 縣 南 澳 鄉 南 澳 古 道 1 3.0 宜 蘭 縣 南 澳 鄉 拳 頭 姆 自 然 步 道 1 1.3 宜 蘭 縣 三 星 鄉 林 務 局 台 灣 百 條 推 薦 步 道 交 通 與 路 況 位 置 交 通 指 南 路 況 註 記 管 理 單 位 步 道 口 位 於

More information

(Microsoft Word - 3\271\375\246\321\257R.doc)

(Microsoft Word - 3\271\375\246\321\257R.doc) 東 野 圭 吾 短 篇 集 3 一 徹 老 爹 得 知 母 親 生 下 的 是 男 寶 寶 時, 我 打 從 心 底 感 到 開 心, 因 為 這 代 表 我 終 於 能 夠 逃 離 那 悲 慘 的 生 活 了 而 父 親 的 喜 悅 肯 定 是 遠 勝 於 我 的 母 親 在 產 房 時, 父 親 和 我 在 家 中 等 候 當 我 轉 告 他 醫 院 來 電 報 喜, 他 立 刻 如 健 美 選

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更 AX5000 Version 1.0 2006 年 9 錄...1 說...2 說...3...4 說...5 六...6 6.1 率...7 6.2 POST PAY...8 6.3 PREPAY DEPOSIT...9 6.4...10 6.5...11 更...12...12 LCD IC LED Flash 更 兩 RJ11 ( ) DC ON OFF ON 狀 狀 更 OFF 復 狀 說

More information

OpenMP OMP-3 2 <$L3>/src <$L3>/run cd <$L3>/src Make <$L3>/run/L3-sol cd <$L3>/run f90 -O mg.f cc O mg.c <$L3>/run/INPUT.DAT <$L3>/run/x

OpenMP OMP-3 2 <$L3>/src <$L3>/run cd <$L3>/src Make <$L3>/run/L3-sol cd <$L3>/run f90 -O mg.f cc O mg.c <$L3>/run/INPUT.DAT <$L3>/run/x OpenMP 201163071 OMP-3 2 /src/run cd /src Make /run/-sol cd /run f90 -O mg.fcc O mg.c /run/input.dat /run/0.sh,5.sh,6.sh OMP-3 1 OpenMP L2-solOpenMP PEsmpTOT OMP-3 3 % cd % ls

More information

附錄.doc

附錄.doc I. 1. 2. 3. 4. 5. 1. 2. 3. 4. 5. 6. 1. 2. 3. 4. 5. 1. 2. 121 II. A. A-1. TNT TNT TNT ( 1994 4 ) FM91.5 FM93.7 122 CD 38% 10% 20% Call In 123 ICRT 124 1. 2. 3. 4. 8:00~9:00 13:00~15:00 22:00-22:30 15:30~17:00

More information

附件1-1

附件1-1 學 校 名 稱 : 臺 中 市 南 屯 區 黎 明 國 民 小 學 方 案 名 稱 : 學 習 的 源 頭 活 水 ~ 圖 書 教 師 計 畫 壹 前 言 ~ 黎 明 教 閱 讀 半 畝 方 塘 一 鑑 開 天 光 雲 影 共 徘 徊 問 渠 哪 得 清 如 許 為 有 源 頭 活 水 來 宋 朝 朱 熹 < 觀 書 有 感 > 本 校 自 99 學 年 度 起 連 續 申 請 教 育 部 試 辦

More information

蔡 摇 凯, 等 援 化 疗 增 强 肿 瘤 免 疫 原 性 的 研 究 进 展 猿 员 员 蛋 白 ( 糟 葬 造 则 藻 贼 蚤 糟 怎 造 蚤 灶 ) 等, 或 者 使 一 些 肿 瘤 细 胞 低 表 达 的 膜 蛋 白 ( 肿 瘤 免 疫 逃 逸 的 机 制 之 一 ) 表 达 增 加, 如

蔡 摇 凯, 等 援 化 疗 增 强 肿 瘤 免 疫 原 性 的 研 究 进 展 猿 员 员 蛋 白 ( 糟 葬 造 则 藻 贼 蚤 糟 怎 造 蚤 灶 ) 等, 或 者 使 一 些 肿 瘤 细 胞 低 表 达 的 膜 蛋 白 ( 肿 瘤 免 疫 逃 逸 的 机 制 之 一 ) 表 达 增 加, 如 猿 员 园 中 国 肿 瘤 生 物 治 疗 杂 志 摇 澡 贼 贼 责 : 辕 辕 憎 憎 憎 援 遭 蚤 燥 贼 澡 藻 则 援 燥 则 早 悦 澡 蚤 灶 允 悦 葬 灶 糟 藻 则 月 蚤 燥 贼 澡 藻 则, 允 怎 灶 援 圆 园 园 怨, 灾 燥 造 援 员 远, 晕 燥 援 猿 阅 韵 陨 : 员 园 援 猿 愿 苑 圆 辕 躁 援 蚤 泽 泽 灶 援 员 园 园 苑 鄄 猿 愿 缘

More information

untitled

untitled 常 见 支 座 形 式 及 提 供 的 反 力 : 几 何 不 变 体 系 组 成 规 律 : (1) 用 既 不 平 行 又 不 相 交 于 一 点 的 三 连 杆 连 接 两 个 刚 体 (2) 用 一 连 杆 和 不 再 同 一 直 线 上 的 铰 连 接 两 个 刚 体 (3) 不 再 同 一 直 线 上 的 铰 连 接 三 个 刚 体 (4) 一 个 刚 体 加 两 相 交 的 连 杆 拱

More information

专科疾病诊治(二十)

专科疾病诊治(二十) ...1... 11...19...32...43...50...52...53...58...61...64...66...69...84...89...92...95 I ...97... 100... 103... 107... 109 AD...111... 125... 128... 131... 135... 138... 140... 143... 146... 149... 152...

More information

06 14 > 1986 p2762 1979 S4470 893 894 1963 s s f( nl + s) = f( nl) + ( 1 + 2 ) + ( 1 + 2 ) 2l l 2 s 2 ( 1 2 ), 2l s( s l) 2 f( n + s) = f( n) + s+, 2 1 + 2 1 2 f( f + s)

More information

File

File #! Panel Data *% -% "%/ *% "0-1. "0-1 $, "01% & "010 + "00. "01".!/ "00+ -&/! "00. "00. # $%& ()%*+, -%.-&%&+ 2 &" 2 !""#!"$% & ()*+,-./-!"$% 0+12345(- 6/7 8"$" 94,(1- :;-!"?4? 4@A B+3(1? 8""# 0+12345(7

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

13WuYW_4questions

13WuYW_4questions EuMath (/008 來 自 身 邊 的 四 個 小 問 題 胡 奕 偉 麗 水 學 院 數 學 系 這 是 一 組 來 自 筆 者 身 邊 的 問 題 問 題 平 凡, 問 題 簡 單, 問 題 3 略 見 抽 象, 問 題 4 則 源 遠 流 長, 被 稱 為 亞 里 斯 多 德 旋 輪 悖 論 平 凡 的 問 題 呼 喚 靈 活 的 思 維, 處 理 方 法 要 創 新 ; 貌 似 簡 單

More information

<313034A4BDB67DA4C0B56FBA5DB3E65FBD64A5BB2E786C7378>

<313034A4BDB67DA4C0B56FBA5DB3E65FBD64A5BB2E786C7378> 科 別 : 國 文 科 (A 區 ) 分 發 16 名 1 600110129 黃 毅 潔 國 立 豐 原 高 級 商 業 職 業 學 校 2 600110446 鄭 安 芸 國 立 南 投 高 級 中 學 3 600110632 李 孟 毓 桃 園 市 立 大 園 國 際 高 級 中 學 4 600110492 洪 珮 甄 南 投 縣 立 旭 光 高 級 中 學 5 600110262 柯 懿 芝

More information

标题

标题 共 青 团 中 央 文 件 中 青 发 也 2010 页 8 号 茵 绎 关 于 表 彰 2009 年 度 全 国 优 秀 共 青 团 员 冶 全 国 优 秀 共 青 团 干 部 冶 全 国 五 四 红 旗 团 委 ( 团 支 部 ) 冶 的 决 定 (2010 年 4 月 28 日 ) 2009 年 以 来, 全 国 各 级 团 组 织 按 照 力 争 使 团 的 基 层 组 织 网 络 覆 盖

More information

Microsoft Word - FPKLSC_21.docx

Microsoft Word - FPKLSC_21.docx 足 印 门 徒 训 练 课 程 儿 童 / 少 年 篇 ( 组 长 使 用 ) 第 21 课 帮 助 人 和 耶 稣 成 为 朋 友 足 印 : 耶 稣 想 我 们 带 朋 友 去 找 祂 欢 迎 (7 分 钟 ) 当 父 母 生 命 师 傅 和 孩 子 们 来 到 的 时 候, 请 热 情 地 欢 迎 他 们 每 一 个 人 鼓 励 一 位 年 轻 人 与 你 一 同 去 欢 迎 参 加 者 的

More information

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344> 1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)

More information

ebook 132-6

ebook 132-6 6 SQL Server Windows NT Windows 2000 6.1 Enterprise Manager SQL Server Enterprise Manager( ) (Microsoft Management C o n s o l e M M C ) Enterprise Manager SQL Server Enterprise Manager 6.1.1 Enterprise

More information

水 产 学 报 卷 : ; ; ; 立 式 型 曲 面 网 板 起 源 于 上 世 纪 年 代 的 日 本, 由 于 其 结 构 类 似 于 飞 机 的 机 翼, 同 时 有 板 面 折 角 和 后 退 角, 因 此 网 板 扩 张 性 能 高 稳 定 性 好, 现 已 在 日 本 韩 国 美 国

水 产 学 报 卷 : ; ; ; 立 式 型 曲 面 网 板 起 源 于 上 世 纪 年 代 的 日 本, 由 于 其 结 构 类 似 于 飞 机 的 机 翼, 同 时 有 板 面 折 角 和 后 退 角, 因 此 网 板 扩 张 性 能 高 稳 定 性 好, 现 已 在 日 本 韩 国 美 国 第 卷 第 期 年 月 水 产 学 报.,., 文 章 编 号 : - ( ) - - 立 式 型 曲 面 网 板 的 水 动 力 性 能 王 明 彦, 王 锦 浩, 张 勋, 郁 岳 峰, 徐 宝 生 (. 中 国 水 产 科 学 研 究 院 东 海 水 产 研 究 所 农 业 部 海 洋 与 河 口 渔 业 重 点 开 放 实 验 室, 上 海 ;. 中 水 远 洋 渔 业 有 限 责 任 公

More information

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft PowerPoint - ds-1.ppt [兼容模式] http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有

More information

mpic_2002

mpic_2002 C 語言 MPI 平行計算程式設計 編著 : 鄭守成 期 間 : 民國 91 年 1 月 1 日 電話 : (03) 5776085 x 305 E-mail : c00tch00@nchc.gov.tw 1 C 語言 MPI 平行計算程式設計...1 第一章 前言...4 1.1 MPI 平行計算軟體...5 1.2 國家高速電腦中心的平行計算環境...6 1.3 在 IBM SP2 上如何使用

More information

Microsoft Word - 小心翼翼的二十一點N.doc

Microsoft Word - 小心翼翼的二十一點N.doc 投 稿 類 別 : 資 訊 類 篇 名 : 小 心 翼 翼 的 二 十 一 點 作 者 : 陳 鈺 文 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 李 伯 謙 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 胡 家 媛 國 立 瑞 芳 高 級 工 業 職 業 學 校 資 訊 二 指 導 老 師 : 周 曉 玲 老 師 陳 思 亮 主 任 壹 前 言 一 研 究 動 機 平

More information

管理心理学(七)

管理心理学(七) NLP EQ...1...4...9... 11...18...28...42?...47...53...58...61...64...66...67...70...84...89...93...99... 103... 105... 112... 116 I ... 119... 121... 125... 131... 136... 139... 141... 143 II NLP EQ 1 2

More information

要 站 立 得 稳, 我 在 十 字 架 上 已 经 都 抢 夺 过 来 了, 将 魔 鬼 不 让 你 们 来 享 用 的 都 推 开 了, 这 是 让 我 们 来 得 到 的 话 语 我 们 再 也 不 被 奴 仆 的 轭 辖 制, 要 来 拥 有 才 可 以 明 知 道 却 不 去 抢 夺 过

要 站 立 得 稳, 我 在 十 字 架 上 已 经 都 抢 夺 过 来 了, 将 魔 鬼 不 让 你 们 来 享 用 的 都 推 开 了, 这 是 让 我 们 来 得 到 的 话 语 我 们 再 也 不 被 奴 仆 的 轭 辖 制, 要 来 拥 有 才 可 以 明 知 道 却 不 去 抢 夺 过 日 分 期 :2014 年 1 月 5 日 类 : 圣 餐 主 日 讲 道 证 道 人 : 赵 镛 基 牧 师 题 目 : 什 么 样 的 人 能 够 享 受 到 福 分 本 文 话 语 : 约 书 亚 记 1:11 < 本 文 > 你 们 要 走 遍 营 中, 吩 咐 百 姓 说, 当 预 备 食 物 因 为 三 日 之 内 你 们 要 过 这 约 旦 河, 进 去 得 耶 和 华 你 们 神 赐

More information

20041210-社大規畫-生活藝能期末報告.doc

20041210-社大規畫-生活藝能期末報告.doc 終 身 學 習 叢 書 十 四 大 小 孩 與 小 大 孩 - 青 少 年 篇 台 北 市 政 府 教 育 局 編 印 序 青 少 年 問 題 經 常 是 種 因 於 家 庭 顯 現 於 學 校 惡 化 於 社 會, 而 探 究 形 成 青 少 年 諸 多 問 題 的 成 因 時, 潛 在 的 癥 結 往 往 回 歸 到 他 們 與 家 庭 的 關 係 和 父 母 的 管 教 態 度 上 所 以 學

More information

NOTEBOOK COOLING PAD WITH THREE-DIMENSION SEAKERS

NOTEBOOK COOLING PAD WITH THREE-DIMENSION SEAKERS 音 乐 治 疗 2 导 语 : 天 音 遗 远 籁, 混 沌 中 有 真 主 宰, 音 乐 是 亲 近 我 们 身 体 的 一 种 声 音, 它 激 发 了 人 类 的 精 神, 潜 移 默 化 地 影 响 着 人 类 的 情 绪 当 希 腊 人 创 造 出 既 精 通 音 乐 又 会 治 病 的 阿 波 罗 神 的 时 候, 也 就 宣 布 了 音 乐 与 医 学 是 合 伙 者 如 今, 科 学

More information

水土保持通报 第 31 卷 192 发现状出发分析了水电开发对生态环境产生的主要 型水电站被列入 十一五 重点项 目 31 云 南 省 水 电 问题和影响 6 王学琴 7 以岷江 嘉陵江上已 建 正建 资源的可开发程度低可开发的潜能 巨 大 云南省地 和规划设计的一些 低 水 头 河 床 式 或 引

水土保持通报 第 31 卷 192 发现状出发分析了水电开发对生态环境产生的主要 型水电站被列入 十一五 重点项 目 31 云 南 省 水 电 问题和影响 6 王学琴 7 以岷江 嘉陵江上已 建 正建 资源的可开发程度低可开发的潜能 巨 大 云南省地 和规划设计的一些 低 水 头 河 床 式 或 引 第 31 卷第 1 期 2011 年 2 月 V 31N 1 Fb 2011 水土保持通报 Bu n S n W Cn n 水电开发对云南省生态环境的影响及对策研究 余 波1黄成敏1黄正文2文星跃1邓茂林3 四川大学 建筑与环境学院环境系四川 成都 610065 成都大学 城乡建设学院 四川 成都 610106 成都理工大学 地质灾害防治与地质环境保护国家重点实验室四川 成都 610059 摘 要

More information

1 0 0 0 0 美容 丙級 工作項目0 1 : 職業道德

1 0 0 0 0 美容 丙級 工作項目0 1 : 職業道德 1 0 0 0 0 美 容 丙 級 工 作 項 目 0 1 : 職 業 道 德 1. ( 4 ) 美 容 從 業 人 員 應 該 努 力 的 目 標, 不 包 括 :(1) 學 習 優 雅 的 專 業 談 吐 (2) 進 修 專 業 的 知 識 和 技 術 (3) 關 心 社 會 及 流 行 的 趨 勢 (4) 詢 問 顧 客 的 隱 私 2. ( 4 ) 顧 客 皮 膚 保 養 時, 其 隨 身

More information

100-1「經典研讀:梁啟超《新民說》」學習歷程檔案

100-1「經典研讀:梁啟超《新民說》」學習歷程檔案 101-1 中 國 歷 史 上 的 婦 女 與 社 會 學 習 歷 程 檔 案 系 級 : 資 四 α 學 號 :11007023 姓 名 : 尤 心 怡 第 一 週 (9/6) 智 慧 財 產 權 宣 導 課 程 簡 介 課 程 分 組 了 解 到 這 門 課 的 開 課 動 機 與 課 程, 也 知 道 這 門 課 是 教 育 部 公 民 核 心 能 力 計 畫 課 程, 需 要 學 生 進 行

More information

<4D F736F F D D C4EAC5A9D2B5B2FAD6B5BACDBCDBB8F1D7DBBACFCDB3BCC6B1A8B1EDD6C6B6C82E646F63>

<4D F736F F D D C4EAC5A9D2B5B2FAD6B5BACDBCDBB8F1D7DBBACFCDB3BCC6B1A8B1EDD6C6B6C82E646F63> 农 业 产 值 和 价 格 综 合 统 计 报 表 制 度 1 目 一 农 林 牧 渔 产 值 统 计 制 度 ( 一 ) 说 明 2 ( 二 ) 报 表 目 录 2 ( 三 ) 调 查 表 式 1. 综 合 年 报 表 式 (1) 农 林 牧 渔 业 总 产 值 (M301 表 ) 3 (2) 农 村 非 农 行 业 产 值 (M303 表 ) 5 2. 综 合 定 期 报 表 表 式 农 林 牧

More information

部 门 项 目 8 9 10 11 12 国 家 级 市 级 众 创 空 间 奖 励 政 策 支 持 类 大 渡 口 区 创 新 创 业 扶 持 办 法 ( 试 行 ) ( 大 渡 口 府 办 发 2015 71 ) 第 三 条 众 创 空 间 项 目 培 育 奖 励 政 策 支 持 类 大 渡 口

部 门 项 目 8 9 10 11 12 国 家 级 市 级 众 创 空 间 奖 励 政 策 支 持 类 大 渡 口 区 创 新 创 业 扶 持 办 法 ( 试 行 ) ( 大 渡 口 府 办 发 2015 71 ) 第 三 条 众 创 空 间 项 目 培 育 奖 励 政 策 支 持 类 大 渡 口 大 渡 口 区 公 共 服 务 事 项 目 录 合 计 :14 个 部 门,103 个 大 项,113 个 小 项 部 门 项 目 区 委 组 村 / 社 区 镇 街 区 委 1 党 员 组 织 关 系 接 收 1 党 员 组 织 关 系 接 收 其 他 类 关 于 印 发 组 织 关 系 转 接 和 党 费 收 缴 办 法 的 通 知 ( 渡 区 组 发 2012 366 ) 织 部 党 群 服

More information

新时期共青团工作实务全书(三十九)

新时期共青团工作实务全书(三十九) ........................... I II....................... 1990... .................. 1991......... III ,, 3 3 6 30 1990 19 19 ,, 30%, 1986 12 19 1989 12 25 1990 11 10 1989 10 30 1990 830 19 40

More information

Open topic Bellman-Ford算法与负环

Open topic   Bellman-Ford算法与负环 Open topic Bellman-Ford 2018 11 5 171860508@smail.nju.edu.cn 1/15 Contents 1. G s BF 2. BF 3. BF 2/15 BF G Bellman-Ford false 3/15 BF G Bellman-Ford false G c = v 0, v 1,..., v k (v 0 = v k ) k w(v i 1,

More information

天主教永年高級中學綜合高中課程手冊目錄

天主教永年高級中學綜合高中課程手冊目錄 天 主 教 永 年 高 級 中 學 綜 合 高 中 課 程 手 冊 目 錄 壹 學 校 背 景. 貳 教 育 理 念 與 教 育 目 標. 3 一 規 劃 理 念...3 二 教 育 目 標...3 參 畢 業 要 求. 5 一 總 學 分 數...5 二 必 選 修 學 分 數...5 三 必 須 參 加 活 動...9 四 成 績 評 量 方 式...9 肆 課 程 概 述.. 9 一 課 程

More information

附件

附件 附 件 晋 陕 豫 黄 河 金 三 角 区 域 合 作 规 划 2014 年 4 月 目 录 前 言... 1 第 一 章 合 作 背 景... 2 第 一 节 发 展 基 础... 2 第 二 节 重 大 意 义... 3 第 二 章 总 体 思 路... 3 第 一 节 指 导 思 想... 3 第 二 节 基 本 原 则... 4 第 三 节 战 略 定 位... 5 第 四 节 发 展 目

More information

Microsoft Word - 永政发〔2016〕48号.doc

Microsoft Word - 永政发〔2016〕48号.doc 永 政 发 2016 48 号 各 功 能 区 管 委 会, 各 镇 ( 街 道 ) 人 民 政 府 ( 办 事 处 ), 县 政 府 直 属 各 单 位 : 县 教 育 局 制 定 的 2016 年 永 嘉 县 初 中 毕 业 升 学 考 试 与 高 中 招 生 实 施 方 案 已 经 县 人 民 政 府 同 意, 现 批 转 给 你 们, 请 认 真 贯 彻 实 施 永 嘉 县 人 民 政 府

More information

2. 下 列 理 解 和 分 析, 不 符 合 原 文 意 思 的 一 项 是 ( ) A. 水 手 在 伦 敦 讲 东 印 度 群 岛 的 所 见 所 闻, 匠 人 在 火 炉 边 讲 自 己 的 人 生 经 历, 他 们 讲 的 故 事 各 有 特 点, 但 同 属 于 传 统 故 事 模 式

2. 下 列 理 解 和 分 析, 不 符 合 原 文 意 思 的 一 项 是 ( ) A. 水 手 在 伦 敦 讲 东 印 度 群 岛 的 所 见 所 闻, 匠 人 在 火 炉 边 讲 自 己 的 人 生 经 历, 他 们 讲 的 故 事 各 有 特 点, 但 同 属 于 传 统 故 事 模 式 2016 年 普 通 高 等 学 校 招 生 全 国 统 一 考 试 ( 新 课 标 卷 2) 语 文 第 I 卷 阅 读 题 甲 必 考 题 现 代 文 阅 读 (9 分, 每 小 题 3 分 ) 阅 读 下 面 的 文 宇, 完 成 1 3 題 人 们 常 说 小 说 是 讲 故 事 的 艺 术, 但 故 事 不 等 于 小 说, 故 事 讲 述 人 与 小 说 家 也 不 能 混 为 一 谈

More information

Trilinos 简介 Trilinos 简介 卢朓 Trilinos 简介 卢朓 Trilinos 简介 Trilinos 简介 Trilinos 的安装和使用 Trilinos 简介 Trilinos 简介 Trilinos 的安装和使用 Trilinos 简介 Trilinos Epetra

Trilinos 简介 Trilinos 简介 卢朓 Trilinos 简介 卢朓 Trilinos 简介 Trilinos 简介 Trilinos 的安装和使用 Trilinos 简介 Trilinos 简介 Trilinos 的安装和使用 Trilinos 简介 Trilinos Epetra Department of Science and Engineering Computing School of Mathematics School Peking University Department of Science and Engineering Computing School of Mathematics School Peking University August 14,

More information

,,,, ;,, ( CG) ( CAD),, ;,,,,, ( ) ( ) ( ) (, ) ( AutoCAD ) (3Dmax Photoshop ) AutoCAD, ( ),, ( ), (), ( ),, 2004. 7 1 1995,,,,,, ;,,, ;, ;,,,,,,,,, ; ; ; ;, ;,,,,!, : ( ( ) ), ( ( ) ), ( ), ( ), (), (),

More information

PowerPoint Presentation

PowerPoint Presentation 中 小 IT 企 业 人 力 资 源 管 理 咨 询 简 介 一 背 景 分 析 二 需 求 分 析 三 服 务 内 容 四 操 作 流 程 五 斯 隆 优 势 六 行 业 案 例 七 服 务 理 念 目 录 一 背 景 分 析 -IT 业 现 状 分 析 IT 产 业 的 总 量 水 平 较 低 中 国 IT IT 现 状 总 体 规 模 较 小 技 术 自 主 创 新 能 力 差 对 经 济 的

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

2014年大学生村官考试公共基础知识:社会革命和社会改革

2014年大学生村官考试公共基础知识:社会革命和社会改革 2014 年 吉 林 省 招 募 三 支 一 扶 高 校 毕 业 生 计 划 实 施 公 告 根 据 省 人 社 厅 等 11 部 门 关 于 做 好 2014 年 高 校 毕 业 生 三 支 一 扶 计 划 实 施 工 作 的 通 知 ( 吉 人 社 联 字 2014 22 号 ) 精 神, 决 定 从 即 日 起 部 署 吉 林 省 2014 年 高 校 毕 业 生 三 支 一 扶 计 划 实

More information

朝陽科技大學八十八學年度招考碩士班簡章目錄

朝陽科技大學八十八學年度招考碩士班簡章目錄 24 24 1 1,400 2,400 27 2 3 (042332-3000 ( 7092~7094 http://www.cyut.edu.tw/~finance 18 28 (100 ( (40 (30% ( ( ( ( ( ( 1. 2. 3. 4. (30% ( 4 70 3. 70 4 (042332-3000 ( 7062~7063 http://www.ba.cyut.edu.tw

More information