Microsoft PowerPoint - KN002.ppt
|
|
- 静 方
- 5 years ago
- Views:
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
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 informationuntitled
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
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 information07-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 平行程式設計 勁智數位科技股份有限公司 技術研發部林勝峰 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 informationLinux 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
平行運算簡介 / 實例操作企鵝也會的 MPICH 研究員 : 鄧偉華 wade@nchc.org.tw 什麼是平行計算 傳統 : 單一程序 單一 CPU 什麼是平行計算 ( 續 ) 平行計算 程序切割 多 CPUs 為什麼要平行計算 簡省時間 解決大型問題 即時性 使用更多來自網路上的資源 使用大量 便宜 PCs 取代超級電腦 記憶體不足 平行計算種類 Flynn's taxonomy 多處理器架構
More informationPowerPoint 演示文稿
第四讲 消息传递编程接口 MPI 一 MPI 编程基础 主要内容 MPI 安装 程序编译与运行 MPI 编程基础 MPI 程序基本结构 MPI 数据类型 消息发送和接收 MPI 一些常用函数 MPI 介绍 Message Passing Interface 消息传递编程标准, 目前最为通用的并行编程方式 提供一个高效 可扩展 统一的并行编程环境 MPI 是一个库, 不是一门语言,MPI 提供库函数
More informationMicrosoft PowerPoint - Tongji_MPI编程初步
并行编程初步 张丹丹 上海超级计算中心 2011-3-4 提纲 引言 认识 MPI 编程 MPI 编程简介 实例 并行计算机体系架构 共享存储 (Shared Memory) 并行计算机体系架构 分布式存储 (Distributed Memory) 混合架构 (Hybrid) 并行计算机体系架构 并行编程模型 数据并行模型 相同的操作同时作用于不同的数据 共享变量模型 用共享变量实现并行进程间的通信
More informationParallel Programming with MPI
MPI 并行编程入门 中国科学院计算机网络信息中心超级计算中心 聚合通信 定义 三种通信方式 聚合函数列表 同步 广播 收集 散发 全散发收集 归约 定义 communicator 1 3 4 5 0 2 一个通信器的所有进程参与, 所有进程都调用聚合通信函数 MPI 系统保证聚合通信函数与点对点调用不会混淆 聚合通信不需要消息标号 聚合通信函数都为阻塞式函数 聚合通信的功能 : 通信 同步 计算等
More informationchi@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 informationPowerPoint 演示文稿
第六讲 消息传递编程接口 MPI 二 MPI 消息传递 1 MPI 消息传递 MPI 点对点通信类型 阻塞型和非阻塞型 MPI 消息发送模式 标准模式 缓冲模式 同步模式 就绪模式 MPI 聚合通信 多个进程间的通信 2 阻塞型和非阻塞型通信 阻塞型 (blocking) 和非阻塞型 (non blocking) 通信 阻塞型通信函数需要等待指定的操作实际完成, 或所涉及的数据被 MPI 系统安全备份后才返回
More information《拍案惊奇》(中)
! " # $! +"+ ###########!"" ##########!!$ ##########!$% " ##########!&! ############!%$ ########## $ " ########### $"( ########## $)* +,+ $$$$$$$$$$$!"# $$$$$$$$$$$!%& $$$$$$$$$$$!# $$$$$$$$$$$ $$$$$$$$$$$
More information科学计算的语言-FORTRAN95
科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造
More information件 驱 动 属 短 线 操 作, 操 作 风 险 相 对 较 大, 建 议 快 进 快 出, 不 可 恋 战! 昨 日 盘 面 中 表 现 活 跃 的 品 种 多 为 低 价 股, 钢 铁 煤 炭 成 为 涨 幅 居 前 的 品 种, 有 以 下 几 点 值 得 关 注 : 首 先 从 行 业 看,
2016 年 01 月 07 日 一 风 行 视 点 1. 市 场 研 判 昨 日 盘 面 中 热 点 转 换 非 常 明 显 滞 涨 低 价 成 为 资 金 短 期 追 逐 重 点 市 场 风 格 的 转 换 说 明 资 金 偏 于 谨 慎, 同 时 热 点 的 快 速 轮 动 也 说 明 反 弹 以 存 量 资 金 为 主 预 计 短 期 市 场 仍 将 缺 乏 赚 钱 效 应, 投 资 者 应
More informationDepartment 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
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 informationOMP-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 微 处 理 器 的 存 储 结 构.................................
MPI 并 行 编 程 讲 稿 张 林 波 中 国 科 学 院 数 学 与 系 统 科 学 研 究 院 科 学 与 工 程 计 算 国 家 重 点 实 验 室 1999 年 7 月 ( 最 后 修 订 :2012 年 7 月 ) i 目 录 参 考 材 料 1 第 一 章 预 备 知 识 2 1.1 高 性 能 并 行 计 算 机 系 统 简 介..................................
More informationMicrosoft Word - 前行广释7.doc
( 七 ) 华 智 仁 波 切 著 索 达 吉 堪 布 译 讲 前 行 广 释 目 录 积 累 资 粮 第 一 百 一 十 九 节 课...324 第 一 百 二 十 节 课...347 发 殊 胜 菩 提 心 第 一 百 零 五 节 课... 1 第 一 百 零 六 节 课... 23 第 一 百 零 七 节 课... 44 第 一 百 零 八 节 课... 64 第 一 百 零 九 节 课...
More information量 來 調 節 體 溫 隨 年 齡 老 化, 真 皮 層 之 厚 度 約 減 少 20%, 其 中 的 血 管 汗 腺 與 神 經 末 梢 的 數 量 也 隨 之 減 少, 造 成 老 人 的 體 溫 調 節 功 能 降 低 發 炎 反 應 減 慢 對 觸 覺 與 痛 覺 感 降 低 提 供 皮 膚
1. 認 識 老 化 在 各 系 統 的 生 理 改 變 2. 認 識 身 體 系 統 老 化 對 老 人 產 生 的 影 響 3. 認 識 如 何 對 老 人 執 行 身 體 評 估 4. 認 識 皮 膚 與 足 部 的 護 理 5. 認 識 老 人 之 活 動 障 礙 問 題 6. 瞭 解 相 關 知 識 對 於 銀 髮 產 業 的 關 係 皮 膚 系 統 的 老 化 改 變 人 類 老 化 的
More informationPowerPoint 演示文稿
机群应用开发 并行编程原理及程序设计 Parallel Programming: Fundamentals and Implementation 占杰 zhanjie@dawningcomcn 曙光信息产业有限公司 2010 年 1 月 2010 年 1 月 1 参考文献 黄铠, 徐志伟著, 陆鑫达等译 可扩展并行计算技术, 结构与编程 北京 : 机械工业出版社, P33~56,P227~237,
More information百度文库上传模板
人 大 国 际 政 治 考 研 报 考 复 习 指 导 (2) 真 题 参 考 书 本 文 目 录 一 2016 年 人 大 国 际 政 治 专 业 考 研 真 题 分 析 二 人 大 国 际 政 治 专 业 考 研 专 业 课 复 习 参 考 书 ( 育 明 教 育 权 威 推 荐 ) 三 人 大 国 际 政 治 专 业 考 研 考 试 内 容 招 考 统 计 四 人 民 大 学 国 际 关 系
More informationB(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 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 informationuntitled
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 informationParallel 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 informationmpi
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 informationParallel Programming with MPI
MPI 并行编程入门 中国科学院计算机网络信息中心超级计算中心 参考材料 张林波清华大学出版社莫则尧科学出版社都志辉清华大学出版社 消息传递平台 MPI 什么是 MPI (Message Passing Interface) 是函数库规范, 而不是并行语言 ; 操作如同库函数调用 是一种标准和规范, 而非某个对它的具体实现 (MPICH 等 ), 与编程语言无关 是一种消息传递编程模型, 并成为这类编程模型的代表
More informationPROFIBUS3.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 informationPowerPoint Presentation
并行计算 十五 分布存储系统并行编程 分布存储系统并行编程 14.1 基于消息传递的并行编程 14.2 MPI 并行编程 6 个基本函数组成的 MPI 子集 MPI 消息 点对点通信 群集通信 SPMD 和 MPMD SPMD 各个进程是同构的, 多个进程对不同的数据执行相同的代码 ( 一般是数据并行 ) 常对应并行循环, 数据并行结构, 单代码 MPMD 各个进程是异构的, 多个进程执行不同的代码
More informationPowerPoint 演示文稿
机群应用开发 并行编程原理及程序设计 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 informationWinMDI 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 informationGo构建日请求千亿微服务最佳实践的副本
Go 构建 请求千亿级微服务实践 项超 100+ 700 万 3000 亿 Goroutine & Channel Goroutine Channel Goroutine func gen() chan int { out := make(chan int) go func(){ for i:=0; i
More information92 (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 information27 :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 informationEC(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章修改稿
(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 informationParatune用户手册
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>
1.1 前 言 第 一 章 总 论 海 秀 路 延 长 段 工 程 位 于 宝 安 区 新 安 街 道 内, 呈 西 北 - 东 南 走 向, 西 侧 起 点 处 接 新 建 的 新 安 一 路, 东 侧 终 点 处 接 湖 滨 西 路, 该 路 段 为 II 级 次 干 道, 全 长 约 674.191m 海 秀 路 延 长 段 前 200m 为 改 扩 建, 后 470m 为 新 建, 道 路
More information馬偕醫學院 學生事務工作簡報
馬 偕 醫 學 院 總 務 處 簡 介 報 告 人 申 永 順 總 務 長 總 務 處 織 與 成 員 許 鎂 秀 曾 柏 壽 楊 嘉 華 吳 俊 仲 內 容 校 園 環 境 生 活 機 能 二 期 工 程 配 合 事 項 馬 偕 醫 學 院 一 期 校 園 簡 介 網 球 場 籃 / 排 球 場 三 芝 區 市 中 心 教 學 大 樓 5C 聯 合 行 政 辦 公 區 A 區 B 區 C 區 藝
More informationuntitled
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 informationVASP应用运行优化
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 informationepub83-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 informationICD 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 %
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 用户手册 国家超级计算济南中心 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
學 生 須 知 網 頁 版 (14/15 年 度 ) 目 錄 校 徽 圖 解 1 校 訓 釋 義 2 中 華 人 民 共 和 國 國 歌 3 順 德 聯 誼 總 會 屬 校 校 歌 4 辦 學 宗 旨 及 目 標 5 校 規 8 獎 懲 制 度 14 其 他 規 定 23 注 意 事 項 29 附 錄 33 校 徽 圖 解 不 規 則 圖 形 是 順 德 市 的 輪 廓, 輪 廓 內 四 小 圖 代
More information(Microsoft Word - 5\276\302\270g\260\252\256v .doc)
問 學 第 七 期 -2004 年 高 雄 : 國 立 高 雄 師 範 大 學 國 文 系 六 祖 壇 經 及 其 語 言 研 究 考 述 邱 湘 雲 * 摘 要 禪 宗 自 唐 代 盛 行 至 今 歷 千 年 而 不 衰 六 祖 壇 經 為 禪 門 重 要 典 籍 欲 知 中 國 禪 宗 思 想 之 開 展 當 由 此 書 看 起 本 文 回 歸 文 本 考 論 壇 經 之 書 名 作 者 編 撰
More information南京师范大学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)
東 野 圭 吾 短 篇 集 3 一 徹 老 爹 得 知 母 親 生 下 的 是 男 寶 寶 時, 我 打 從 心 底 感 到 開 心, 因 為 這 代 表 我 終 於 能 夠 逃 離 那 悲 慘 的 生 活 了 而 父 親 的 喜 悅 肯 定 是 遠 勝 於 我 的 母 親 在 產 房 時, 父 親 和 我 在 家 中 等 候 當 我 轉 告 他 醫 院 來 電 報 喜, 他 立 刻 如 健 美 選
More informationC/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 更
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 informationOpenMP 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
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
學 校 名 稱 : 臺 中 市 南 屯 區 黎 明 國 民 小 學 方 案 名 稱 : 學 習 的 源 頭 活 水 ~ 圖 書 教 師 計 畫 壹 前 言 ~ 黎 明 教 閱 讀 半 畝 方 塘 一 鑑 開 天 光 雲 影 共 徘 徊 問 渠 哪 得 清 如 許 為 有 源 頭 活 水 來 宋 朝 朱 熹 < 觀 書 有 感 > 本 校 自 99 學 年 度 起 連 續 申 請 教 育 部 試 辦
More information蔡 摇 凯, 等 援 化 疗 增 强 肿 瘤 免 疫 原 性 的 研 究 进 展 猿 员 员 蛋 白 ( 糟 葬 造 则 藻 贼 蚤 糟 怎 造 蚤 灶 ) 等, 或 者 使 一 些 肿 瘤 细 胞 低 表 达 的 膜 蛋 白 ( 肿 瘤 免 疫 逃 逸 的 机 制 之 一 ) 表 达 增 加, 如
猿 员 园 中 国 肿 瘤 生 物 治 疗 杂 志 摇 澡 贼 贼 责 : 辕 辕 憎 憎 憎 援 遭 蚤 燥 贼 澡 藻 则 援 燥 则 早 悦 澡 蚤 灶 允 悦 葬 灶 糟 藻 则 月 蚤 燥 贼 澡 藻 则, 允 怎 灶 援 圆 园 园 怨, 灾 燥 造 援 员 远, 晕 燥 援 猿 阅 韵 陨 : 员 园 援 猿 愿 苑 圆 辕 躁 援 蚤 泽 泽 灶 援 员 园 园 苑 鄄 猿 愿 缘
More informationuntitled
常 见 支 座 形 式 及 提 供 的 反 力 : 几 何 不 变 体 系 组 成 规 律 : (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 information06 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 informationFile
#! 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 informationuntitled
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 information13WuYW_4questions
EuMath (/008 來 自 身 邊 的 四 個 小 問 題 胡 奕 偉 麗 水 學 院 數 學 系 這 是 一 組 來 自 筆 者 身 邊 的 問 題 問 題 平 凡, 問 題 簡 單, 問 題 3 略 見 抽 象, 問 題 4 則 源 遠 流 長, 被 稱 為 亞 里 斯 多 德 旋 輪 悖 論 平 凡 的 問 題 呼 喚 靈 活 的 思 維, 處 理 方 法 要 創 新 ; 貌 似 簡 單
More information<313034A4BDB67DA4C0B56FBA5DB3E65FBD64A5BB2E786C7378>
科 別 : 國 文 科 (A 區 ) 分 發 16 名 1 600110129 黃 毅 潔 國 立 豐 原 高 級 商 業 職 業 學 校 2 600110446 鄭 安 芸 國 立 南 投 高 級 中 學 3 600110632 李 孟 毓 桃 園 市 立 大 園 國 際 高 級 中 學 4 600110492 洪 珮 甄 南 投 縣 立 旭 光 高 級 中 學 5 600110262 柯 懿 芝
More information标题
共 青 团 中 央 文 件 中 青 发 也 2010 页 8 号 茵 绎 关 于 表 彰 2009 年 度 全 国 优 秀 共 青 团 员 冶 全 国 优 秀 共 青 团 干 部 冶 全 国 五 四 红 旗 团 委 ( 团 支 部 ) 冶 的 决 定 (2010 年 4 月 28 日 ) 2009 年 以 来, 全 国 各 级 团 组 织 按 照 力 争 使 团 的 基 层 组 织 网 络 覆 盖
More informationMicrosoft Word - FPKLSC_21.docx
足 印 门 徒 训 练 课 程 儿 童 / 少 年 篇 ( 组 长 使 用 ) 第 21 课 帮 助 人 和 耶 稣 成 为 朋 友 足 印 : 耶 稣 想 我 们 带 朋 友 去 找 祂 欢 迎 (7 分 钟 ) 当 父 母 生 命 师 傅 和 孩 子 们 来 到 的 时 候, 请 热 情 地 欢 迎 他 们 每 一 个 人 鼓 励 一 位 年 轻 人 与 你 一 同 去 欢 迎 参 加 者 的
More information<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>
1. 請 問 誰 提 出 積 體 電 路 (IC) 上 可 容 納 的 電 晶 體 數 目, 約 每 隔 24 個 月 (1975 年 更 改 為 18 個 月 ) 便 會 增 加 一 倍, 效 能 也 將 提 升 一 倍, 也 揭 示 了 資 訊 科 技 進 步 的 速 度? (A) 英 特 爾 (Intel) 公 司 創 始 人 戈 登. 摩 爾 (Gordon Moore) (B) 微 軟 (Microsoft)
More informationebook 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 informationMicrosoft PowerPoint - ds-1.ppt [兼容模式]
http://jwc..edu.cn/jxgl/ HomePage/Default.asp 2 说 明 总 学 时 : 72( 学 时 )= 56( 课 时 )+ 16( 实 验 ) 行 课 时 间 : 第 1 ~14 周 周 学 时 : 平 均 每 周 4 学 时 上 机 安 排 待 定 考 试 时 间 : 课 程 束 第 8 11 12 章 的 内 容 为 自 学 内 容 ; 目 录 中 标 有
More informationmpic_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 informationMicrosoft 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 information20041210-社大規畫-生活藝能期末報告.doc
終 身 學 習 叢 書 十 四 大 小 孩 與 小 大 孩 - 青 少 年 篇 台 北 市 政 府 教 育 局 編 印 序 青 少 年 問 題 經 常 是 種 因 於 家 庭 顯 現 於 學 校 惡 化 於 社 會, 而 探 究 形 成 青 少 年 諸 多 問 題 的 成 因 時, 潛 在 的 癥 結 往 往 回 歸 到 他 們 與 家 庭 的 關 係 和 父 母 的 管 教 態 度 上 所 以 學
More informationNOTEBOOK COOLING PAD WITH THREE-DIMENSION SEAKERS
音 乐 治 疗 2 导 语 : 天 音 遗 远 籁, 混 沌 中 有 真 主 宰, 音 乐 是 亲 近 我 们 身 体 的 一 种 声 音, 它 激 发 了 人 类 的 精 神, 潜 移 默 化 地 影 响 着 人 类 的 情 绪 当 希 腊 人 创 造 出 既 精 通 音 乐 又 会 治 病 的 阿 波 罗 神 的 时 候, 也 就 宣 布 了 音 乐 与 医 学 是 合 伙 者 如 今, 科 学
More information水土保持通报 第 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 information1 0 0 0 0 美容 丙級 工作項目0 1 : 職業道德
1 0 0 0 0 美 容 丙 級 工 作 項 目 0 1 : 職 業 道 德 1. ( 4 ) 美 容 從 業 人 員 應 該 努 力 的 目 標, 不 包 括 :(1) 學 習 優 雅 的 專 業 談 吐 (2) 進 修 專 業 的 知 識 和 技 術 (3) 關 心 社 會 及 流 行 的 趨 勢 (4) 詢 問 顧 客 的 隱 私 2. ( 4 ) 顧 客 皮 膚 保 養 時, 其 隨 身
More information100-1「經典研讀:梁啟超《新民說》」學習歷程檔案
101-1 中 國 歷 史 上 的 婦 女 與 社 會 學 習 歷 程 檔 案 系 級 : 資 四 α 學 號 :11007023 姓 名 : 尤 心 怡 第 一 週 (9/6) 智 慧 財 產 權 宣 導 課 程 簡 介 課 程 分 組 了 解 到 這 門 課 的 開 課 動 機 與 課 程, 也 知 道 這 門 課 是 教 育 部 公 民 核 心 能 力 計 畫 課 程, 需 要 學 生 進 行
More information<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 ) 第 三 条 众 创 空 间 项 目 培 育 奖 励 政 策 支 持 类 大 渡 口
大 渡 口 区 公 共 服 务 事 项 目 录 合 计 :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 informationOpen 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 informationMicrosoft Word - 永政发〔2016〕48号.doc
永 政 发 2016 48 号 各 功 能 区 管 委 会, 各 镇 ( 街 道 ) 人 民 政 府 ( 办 事 处 ), 县 政 府 直 属 各 单 位 : 县 教 育 局 制 定 的 2016 年 永 嘉 县 初 中 毕 业 升 学 考 试 与 高 中 招 生 实 施 方 案 已 经 县 人 民 政 府 同 意, 现 批 转 给 你 们, 请 认 真 贯 彻 实 施 永 嘉 县 人 民 政 府
More information2. 下 列 理 解 和 分 析, 不 符 合 原 文 意 思 的 一 项 是 ( ) A. 水 手 在 伦 敦 讲 东 印 度 群 岛 的 所 见 所 闻, 匠 人 在 火 炉 边 讲 自 己 的 人 生 经 历, 他 们 讲 的 故 事 各 有 特 点, 但 同 属 于 传 统 故 事 模 式
2016 年 普 通 高 等 学 校 招 生 全 国 统 一 考 试 ( 新 课 标 卷 2) 语 文 第 I 卷 阅 读 题 甲 必 考 题 现 代 文 阅 读 (9 分, 每 小 题 3 分 ) 阅 读 下 面 的 文 宇, 完 成 1 3 題 人 们 常 说 小 说 是 讲 故 事 的 艺 术, 但 故 事 不 等 于 小 说, 故 事 讲 述 人 与 小 说 家 也 不 能 混 为 一 谈
More informationTrilinos 简介 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 informationPowerPoint 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 information2014年大学生村官考试公共基础知识:社会革命和社会改革
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