Linux Linux Linux

Size: px
Start display at page:

Download "Linux Linux Linux"

Transcription

1

2 Linux Linux Linux MPI Linux MPICH MPI NFS NIS rsh MPICH MPICH Cannon LU LU Cholesky Cholesky i

3 ii Cholesky MPI 65 MPI MPI MPI MPI MPI MPI (MPI IO) MPI MPI

4 iii atomicity MPI MPI MPI Poisson MPI MPI A.1 Linpack A A.1.2 HPL A.1.3 Linux BLAS A.1.4 HPL

5 iv

6

7

8 1 3

9 2 23

10 36

11 Linux MPI RedHat 9 Linux Linux 3.1 Linux ( ) TOP500 Supercomputer Sites Cluster@TOP500 : cluster howto Linux Linux : RedHat, Debian, SuSE, Mandrake,... ( ) : Myrinet, QsNet, Dolphin SCI, Infiniband,... : gcc/g++/g77, PGI, Intel,... MPI : MPICH, LAM-MPI,... : NFS, PVFS, Lustre... : PBS, Condor, LSF,... : BLAS MKL, ATLAS, Kazushige Goto s BLAS ( ) FFTW LAPACK ScaLAPACK : PETSc UG 37

12 38 Linux 3.3 Linux Linux, C Fortran, MPICH LAM-MPI : : TCP/IP 3.3.2, Linux,, MPICH LAM-MPI, (NFS), NIS LDAP Internet IP ( x), (NTP) NIS/LDAP (NFS) IP (IP Masquerading) (NAT, Network Address Translation) Internet (ipchains iptables) LVS (Linux Virtual Server) UPS : CRack, LSSC I, LSSC II 3.1: Linux

13 3.4 MPI MPI Linux Linux, RedHat-9 ( RedHat rpm Maximum RPM ) gcc GNU C, C gcc-g77 GNU Fortran 77, Fortran rsh rsh-server MPI rsh-server, root /etc/hosts.equiv, ( ) rsh : /sbin/chkconfig rsh on rshd ( root) : rsh /bin/hostname /var/log/messages shell (.cshrc,.profile,.bashrc ) stdout stderr MPI MPICH MPICH doc MPICH, mpich-1.x.x.tar.gz, 1.x.x MPICH ( 1.2.5) MPICH 1.x.x MPICH : tar xzpvf mpich-1.x.x.tar.gz MPICH: cd mpich-1.x.x./configure -prefix=/usr/local/mpi --disable-weak-symbols make MPICH ch_p4 --disable-weak-symbols MPICH bug, MPI_File_xxxx ( PMPI_File_xxx ) MPICH: make install root, MPICH /usr/local/mpi MPICH /usr/local/mpi/bin /usr/local/mpi/man PATH MANPATH /etc/profile.d mpich.sh mpich.csh, Bourne shell

14 40 Linux C shell, : /etc/profile.d/mpich.sh : #!/bin/bash export MANPATH=${MANPATH}:/usr/local/mpi/man export PATH=${PATH}:/usr/local/mpi/bin /etc/profile.d/mpich.csh : #!/bin/csh if ( $?MANPATH == 0 ) then setenv MANPATH :/usr/local/mpi/man else setenv MANPATH ${MANPATH}:/usr/local/mpi/man endif setenv PATH ${PATH}:/usr/local/mpi/bin MPICH: C Fortran cp /usr/local/mpi/examples/cpi.c. mpicc -o cpi cpi.c. mpirun -np 1 cpi mpirun -np 2 cpi cp /usr/local/mpi/examples/pi3.f. mpif77 -o pi3 pi3.f. mpirun -np 1 pi3 mpirun -np 2 pi3 ( ) 3.5 MPI Linux TCP/IP, /etc/hosts /etc/hosts : localhost.localdomain localhost node1.mydomain node node2.mydomain node n noden.mydomain noden ( IP ) NIS (Network Information Service, SUN Yellow Pages) NFS (Network File System) NIS NFS

15 3.5 MPI NFS : mkdir -p /home/local /usr/local /home/local: /bin/rm -rf /usr/local ln -s /home/local /usr/. ( : /usr/local, ) nfs-utils NFS : /sbin/chkconfig nfs on /sbin/chkconfig nfslock on /etc/init.d/nfslock restart /etc/init.d/nfs restart /etc/exports : /home *(rw,no_root_squash) /home ( :, no_root_squash root_squash man 5 exports ) (/home): exportfs -a () : mkdir -p /home /etc/fstab : < >:/home /home nfs defaults 0 0 ( < > IP ) : /sbin/chkconfig netfs on /home : mount /home () /usr/local /home/local: /bin/rm -rf /usr/local ln -s /home/local /usr/. ( : /usr/local, ) root /home /usr/local df NFS NFS

16 42 Linux NIS CLUSTER NIS : ypserv, ypbind, yp-tools /etc/sysconfig/network : NISDOMAIN=CLUSTER NIS : /sbin/chkconfig ypserv on /etc/init.d/ypserv start NIS : /usr/lib/yp/ypinit -m Ctrl-D, y NIS No rule to make target... NIS : /sbin/chkconfig ypbind on /etc/init.d/ypbind start NIS ypwhich ypcat passwd ( ) : ypbind, yp-tools /etc/sysconfig/network : NISDOMAIN=CLUSTER NIS : /sbin/chkconfig ypbind on /etc/init.d/ypbind start NIS ypwhich ypcat passwd NIS /etc/nsswitch.conf : passwd: files nis shadow: files nis group: files nis hosts: files nis dns NIS ( ypcat passwd ) /etc/passwd /etc/shadow NIS ( ypcat group ) /etc/group NIS ( /home

17 3.5 MPI 43 ), cd /var/yp; make NIS NIS passwd yppasswd root NIS NIS rsh /etc/hosts.equiv rsh : /sbin/chkconfig rsh on : root rsh /etc/hosts.equiv /root/.rhosts, /etc/securetty rsh root, () : NIS : rsh /bin/hostname /var/log/messages shell (.cshrc,.profile,.bashrc ) stdout stderr MPI MPICH MPICH /usr/local /etc/profile.d/mpich.sh /etc/profile.d/mpich.csh MPICH MPICH mpicc (C), mpif77 (Fortran), mpicc (C++) MPICH shell C/C++/Fortran MPICH MPICH driver ch_p4 driver, MPI, : mpirun -machinefile -np 4 MPI [MPI] mpirun ( 4) mpirun mpirun -help mpirun./mpi -p4pg [MPI] MPI

18 44 Linux ( Master/Slave ) : n 1 n 1, 1 MPI ( /home/zlb/test/cpi) node1 /home/zlb/test MPI cpi p4file : node1 0 /home/zlb/test/cpi node2 1 /home/zlb/test/cpi node1 1 /home/zlb/test/cpi node2 1 /home/zlb/test/cpi./cpi -p4pg p4file node1, node2, 0 2 node1, 1 3 node2 3.6, I/O : IP RedHat Linux,

19 /etc/sysconfig/network eth0 IP /etc/sysconfig/network-scripts/ifcfg-eth0 DHCP IP, : MAC /etc/hosts, MAC IP /etc/hosts : localhost.localdomain localhost node0 node0.cluster 00:90:27:57:42: node1 node1.cluster 00:90:27:57:45:F node2 node2.cluster 00:90:27:57:42:B node3 node3.cluster 00:90:27:57:45:E node4 node4.cluster 00:90:27:57:3F:7E ( MAC MAC /sbin/ifconfig eth0 ) /etc/sysconfig/network : NETWORKING=yes hwaddr= /sbin/ifconfig eth0 /bin/grep -i HWaddr awk {print $5} HOSTNAME= grep ^[0-9] /etc/hosts grep -w $hwaddr awk {print $2} unset hwaddr GATEWAY= NISDOMAIN=CLUSTER /etc/sysconfig/network-scripts/ifcfg-eth0 : DEVICE=eth0 BOOTPROTO=static IPADDR= grep ^[0-9] /etc/hosts grep -w "$HOSTNAME" awk {print $1} BROADCAST= NETMASK= NETWORK= ONBOOT=yes, (PXE boot) 3.7 : : CPU : ( ) MPI rsh

20 46 Linux

21 ,,. MMP,,., [2, 3]. [4],.,, p, P j j, P myid, send(x, j) recv(x, j) P myid x P j P j x, P myid., i mod p i p.,,,.,,.,,.,, S p p, : S p = /p,,,,. S p = p /,,,.,,., : T c = α + β N, α, β, N. 4.1,.,. C = A B (4.1) A B m k k n, C m n., m = m p, k = k p n = n p, A B A B : [ ] T [ ] A = A T 0 A T 1... A T p 1, B = B 0 B 1... B p 1 (4.2) 47

22 48 C = (C i,j ) = (A i B j ), C i,j m n. A i, B i C i,j, j = 0,..., p 1 P i,.,. p, C i,j, C p. C i,j, : for i = 0 to p 1 do l i+myid mod p C l = A B, mp1 myid+1 mod p, mm1 myid-1 mod p if i p 1, send(b, mm1), recv(b, mp1) end{f or}, C l = C myid,l, A = A myid, B, k n, p 1. DTA , CA , DTA 1 = 2 k (n n), CA 1 = m k n/p A B, A (4.2), B : [ ] T B = B0 T B1 T... Bp 1 T (4.3) C i A i C i, A i B, [ ] A i = A i0 A i1... A i,p 1 p 1 C i = A i B = A i,j B j A, B C 4.1.1, P myid for i = 0 to p 1 do l i+myid mod p C = C + A l B, mp1 myid+1 mod p, mm1 myid-1 mod p if i p 1, send(b, mm1), recv(b, mp1) end{f or} 4.1.1, C, A l = A myid,l j=0 A B, B (4.2), A : [ ] A = A 0 A 1... A p 1 (4.4)

23 C B,, B i A [ ] T, B i = Bi0 T Bi1 T... Bi,p 1 T, C. p 1 C j = A B j = A i B i,j A B, : for i = 0 to p 1 do l i+myid mod p C = C + A B l, mp1 myid+1 mod p, mm1 myid-1 mod p if i p 1, send(a, mm1), recv(a, mp1) end{f or} , DTA 3 = 2 m (k k). m n, DTA 1 DTA 3. m n, m n, DTA 3 DTA 1., A B, A (4.4), B (4.3). p 1 C = A B = A i B i C p C,,,,.,, C C,,, C C = A B for i = 1 to p 1 do l i+myid mod p k myid-i mod p send(c l, l), recv(t, k) C myid = C myid + T end{f or},, DTA 4 = 2 (m m) n. C, 4.1.4, DTA 4 = 2 m (n n), m n m n, C Cannon A, B C m m,, A = (A ij ) m m, B = (B ij ) m m, C = i=0 i=0

24 50 (C ij ) m m, A ij, B ij C ij n n, p = m m. Cannon, Q = (Q ij ) Q ij = { In, j i + 1 mod m 0 n, I n 0 n n. D (l) A A = m 1 l=0 D(l) A Ql. C = A B = m 1 l=0 m 1 D (l) A Ql B = l=0 D (l) A = diag(d(l) i ) = diag(a i,i+l mod m ), B(l) B (l) = Q l B = Q B (l 1).,, P myid = P myrow,mycol, A ij,b ij, C ij P ij, P myid C = 0 for i = 0 to m 1 do k myrow+i mod m; mp1 mycol+1 mod m; mm1 mycol-1 mod m; if mycol=k then else send(a, (myrow, mp1)); copy(a, tmpa); recv(tmpa, (myrow, mm1)); if mycol mp1, send(tmpa, (myrow, mp1)); end{if} C = C+tmpA B; mp1 myrow+1 mod m; mm1 myrow-1 mod m; if i m 1 then send(b, (mm1, mycol)); recv(b, (mp1, mycol)); end{if} end{f or}, A, C, B. DTA 5 = m 2 n 2 + (m 1) 2 n 2 = 2(2m 1)n 2 = 4m 2 n 2 / p 2m 2 n 2 /p.,.,, p 4, Cannon.,,. 4.2,.,,., Linpack.,

25 4.2 51,. Ax = b, A LU, L,U, Q, AQ = LU.,, Ly = b Ux = y LU n n A = (a ij ) LU., Gauss,, L. a k A k for j = 0 to n 2 do find l: a lj = max{ a ij, i = j,..., n 1} if l j, swap A j and A l if a jj = 0, A is singular and return a ij = a ij /a jj, i = j + 1,..., n 1 for k = j + 1 to n 1 do a ik = a ik a ij a jk, i = j + 1,..., n 1 end{f or} end{f or} 4.2.1, A, a ik a ij a jk, A. LU, (wrap) A, A i P i mod p. n = p m, A i A i p + myid, P myid icol= 0 for j = 0 to n 2 do if myid=j mod p then find l: a l,icol = max{ a i,icol, i = j,..., n 1} if l j, swap a j,icol and a l,icol if a j,icol = 0, A is singular and kill all processes a i,icol = a i,icol /a j,icol, i = j + 1,..., n 1 f i j 1 = a i,icol, i = j + 1,..., n 1 send(l, myid+1) and send(f, myid+1) icol+1 icol else recv(l, myid-1) and recv(f, myid+1) if myid+1 j mod p, send(l, myid+1) and send(f, myid+1)

26 52 end{if} if l j, swap A j and A l for k=icol to m 1 do a ik = a ik f i a jk, i = j + 1,..., n 1 end{f or} end{f or} LU,,.,,.,., if myid=j mod p if myid=j + 1 mod p,,,.,, LU,.,. LU,,, A.,, gfactor, gl, lfactor l, flag gfactor. : icol= 0 for j = 0 to n 2 do if myid=j mod p then else find l: a l,icol = max{ a i,icol, i = j,..., n 1} if l j, swap a j,icol and a l,icol if a j,icol = 0, A is singular and kill all processes a i,icol = a i,icol /a j,icol, i = j + 1,..., n 1 lfactor i j 1 = a i,icol, i = j + 1,..., n 1 if p 1 k=0 flag k p, wait copy(lfactor, gfactor), copy(l, gl), flag k = 0, k = 0,..., p 1 icol+1 icol if flag myid 0, wait copy(gfactor, lfactor), copy(gl, l), flag myid = 1 end{if} if l j, swap A j and A l for k =icol to m 1 do a ik = a ik lfactor i a jk, i = j + 1,..., n 1 end{f or} end{f or}

27 , copy send recv.,., , 0, : icol=0 if myid=0, icol=1 for j = 0 to n 2 do cid=j mod 2p, next=j + 1 mod p if flag cid 0, wait copy(gfactor, lfactor), copy(gl, l) if myid=next then if l j, swap a l,icol and a j,icol a i,icol = a i,icol lfactor i a j,icol, i = j + 1,..., n 1 find gl: a gl,icol = max{ a i,icol, i = j + 1,..., n 1} if gl j + 1, swap a j+1,icol and a gl,icol if a j+1,icol = 0, A is singular and kill all processes a i,icol = a i,icol /a j,icol, i = j + 2,..., n 1 gfactor i j 2 = a i,icol, i = j + 2,..., n 1 flag cid+1 mod 2p = 0, flag cid+2 mod 2p = 1 icol+1 icol end{if} if l j, swap A j and A l for k =icol to m 1 do a ik = a ik lfactor i a jk, i = j + 1,..., n 1 end{f or} end{f or},,,, LU, [5] , Lx = b.,, for i = 0 to n 1 do x i = b i /l ii for j = i + 1 to n 1 do b j = b j l ji x i

28 54 end{f or} end{f or} b L, b,., L, b,.,.,,,,.. LU, flag gb, : k = 0 for i = 0 to n 1 do if myid i mod p then gb i = b k /l ki, flag i = 1, k + 1 k end{if} if flag i 1, wait for j = k to m 1 do b j = b j l ji gb i end{f or} end{f or},, b,,.,.,,,.,.,,,,.,, : k = 0 if myid=0, then u i = b i, i = 0,..., n 1, v i = 0, i = 0,..., p 2 else u i = 0, i = 0,..., n 1 for i = 0 to n 1 do if i > 0, recv(v, i 1 mod p) x k = (u i + v 0 )/l ik v j = v j+1 + u i+1+j l i+1+j,k x k, j = 0,..., p 3

29 v p 2 = u i+p 1 l i+p 1,k x k send(v, i + 1 mod p) u j = u j l jk x k, j = i + p,..., n 1 k + 1 k end{f or} [6]. 4.3 A LU, Cholesky, A = R T R, R., Cholesky. Cholesky,,. Cholesky Cholesky Cholesky, Cholesky, [7]. Cholesky for j = 0 to n 1 do a jj = a jj j 1 a jk a jk, a jj = a jj k=0 for i = j + 1 to n 1 a ij = (a ij j 1 a jk a ik )/a jj end{f or} end{f or} k=0, R T A, j, R T,. j j, R., F, p 1, (p 1) n, A, P myid : 2 for i = 0 to m 1 do k = i p + myid, l = k p + 1 if k > 0 then, recieve G from P myid 1 for j = 0 to p 2 do a i,j+l = (a i,j+l j+l 1 a it g jt )/g j,j+l F j = G j+1 t=0

30 56 end{f or} a ik = a ik k 1 a it a it t=0 a ik = a ik, F p 2 = A i Send F to P myid+1 for e = i + 1 to m 1 do for j = 0 to p 2 do a e,j+l = (a e,j+l j+l 1 a et g jt )/g j,j+l a ek = (a ek k 1 end{f or} end{f or} t=0 t=0 a et a it )/a ik R T p,, R T p,,. [7] Cholesky Cholesky Cholesky : [ ] coshφ sinhφ H = sinhφ coshφ, : [ 1 ρ ] H = (1 ρ 2 ) 1 2 ρ 1 ρ = tanh( φ). A R T R,. A = D + U T + U, D,U, W = D 1/2 U, V = D 1/2 + W. A = V T V W T W : [ R T 0 ] [ I 0 0 I ] [ R 0 ] [ = V T W T ] [ I 0 0 I ] [ V W ] I n n, Cholesky, m 2m Θ : [ ] [ I 0 I 0 Θ T Θ = 0 I 0 I ] I m m, (pseudo-orthogonal).

31 4.3 57, Q [ ] [ ] V R Q = W 0 A = R T R, Q. [8] R S n n, R T R S T S, R, : s kk r 1 kk < 1, 1 k n R S n n, R T R S T S, ρ k s kk r 1 k n, ˆQ = Q (n) Q(n 1) Q (1), Q (k) :, [ R S q (k) ij = ] = ˆQ [ R S 1, i = j k i = j n + k (1 ρ 2 k ) 1 2, i = j = k i = j = n + k (1 ρ 2 k ) 1 2 ρ k, (i, j) = (k, n + k) (i, j) = (n + k, k) 0, ], ˆQ, R, S. Q (k), R S k, [ ] H k = (1 ρ 2 k) ρk ρ k 1 ] ] [ [ Rk H k Q R (k) k k + n. Q (k). S k S Q n n, p 1,n = 1 p i,i 1 = 1, 2 i n. 2, Cholesky : V 0 = V, W 0 = W, A = V T V W T W for i = 0 to n 1 do [ ] [ ] [ V i+1 I 0 V i = ˆQ (i) W i+1 0 Q end { for } W i ] kk, 1 ˆQ (i) ˆQ, ˆQ (i) W i 0. A β, i β A Cholesky,, [8]. H k,,.

32 Cholesky 3 ˆQ (i) Q (k), Q (k) V i W i k, 2 l, M 2 l, H. M = HM m 21 = 0. m 21 = 0, H, ρ = m 21 m l., M = KB, K = diag(k 1, K 2 ) 2 2, K 1 > 0 K 2 > 0. G = K 1 HK, K 2 2. B = GB, M = K B. K,. K,. L = K 2, L = K 2, L α = L2 L 1, β = b21 b 11. L = (1 αβ 2 ) 1 L, G = [ 1 αβ β 1 ] Proof. H ρ = m 21 m 1 11 = K2b21 K 1b 11. HK = (1 ρ 2 ) 1 2 [ K 1 K2 2 b21 K 1b 11 K2b21 b 11 K 2 ] = (1 αβ 2 ) 1 2 K [ 1 αβ β 1 ] R S n n, E F, R T ER S T F S, α k = F k E k, β k = s kk r kk, [ R S ] = ˆQ [ R ˆQ = Q (n) Q(n 1) Q (1), Q (k), E F : 1, i = j q (k) α k β k, i = k, j = n + k ij = β k, i = n + k, j = k 0, S ] E k Ẽ k = 1 α k βk 2, Fk = 1 α k βk 2, 1 k n F k R T Ẽ R S T F S = R T ER S T F S, R, S.,. A = V T EV W T F W, Cholesky : V 0 = V, W 0 = W, E 0 = E, F 0 = F for i = 0 to n 1 do

33 [ V i+1 W i+1 ] [ I 0 = 0 P ] ˆQ (i) [ V i W i ] E i+1 k = F1 i+1 = end { for } E i k 1 α i k βi k 2, F i+1 k = F i k 1 αk i βi 2, 1 k n k i+1 F n, F i+1 i+1 k+1 = F k, 1 k n 1 ˆQ (i) ˆQ ,, [9] [10].,,. Ax = d, a 0 b 0 c 1 a 1 b 1 A = T (c, a, b) = c n 2 a n 2 b n 2 c n 1 a n , A LU, A, LU : 1 e 1 1 A = e n 2 1 e n 1 1 f 0 b 0 f 1 b f n 2 b n 2 f n 1 : f 0 = a 0, f i 1 e i = c i, f i = a i e i b i 1, i = 1,..., n 1 : f i = a i c i b i 1 /f i 1, i = 1,..., n 1 f i = u i /u i 1, u 0 = f 0, u 1 = 1, : [ ] [ ] [ ] ui ai t i ui 1 =, t i = c i b i 1, i = 1,..., n u i 1, : x 0 = 0, x i = a i x i 1 + b i, 1 i n u i 2

34 60 x 1 = x 2 = x 3 = x 4 = x 5 = x 6 = x 7 = x 8 = Q(1, 1) Q(2, 1) Q(3, 1) Q(4, 1) Q(5, 1) Q(6, 1) Q(7, 1) Q(8, 1) Q(3, 1) Q(4, 1) Q(5, 2) Q(6, 3) Q(7, 4) Q(8, 7) a 3 a 2 a 1 a 4 a 3 a 2 a 1 a 5 a 4 a 3 a 2 a 6 a 5 a 4 a 3 a 7 a 6 a 5 a 4 a 8 a 7 a 6 a 5 Q(2, 1) Q(3, 2) Q(4, 3) Q(5, 4) Q(6, 5) Q(7, 6) Q(8, 7) a 2 a 1 a 3 a 2 a 4 a 3 a 5 a 4 a 6 a 5 a 7 a 6 a 8 a 7 Q(1, 1) Q(2, 2) Q(3, 3) Q(4, 4) Q(5, 5) Q(6, 6) Q(7, 7) Q(8, 8) a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 4.1: [11], Q(t, s) = t ( t j=s r=j+1 a r )b j t r=t+1 a r = 1, 1 s, t n, s t. Q(t, s) : (1) Q(i, i) = b i, 1 i n (2) l 0, s + l < t, : t Q(t, s) = ( a r )Q(s + l, s) + Q(t, s + l + 1) r=s+l+1 (3) : x i = Q(i, 1), 1 i n,. n = 2 m x n = Q(n, 1), x n = Q(n, 1) = ( 2 m r=2 m 1 +1 a r )Q(2 m 1, 1) + Q(2 m, 2 m 1 + 1),Q(2 m 1, 1) Q(2 m, 2 m 1 + 1),, 2 m r=2 m 1 +1 a r. x 1,..., x n logn,, O( logn), O(n), O(n/ logn). n,,. 4.1 n = 8 x 1,..., x 8, Q(i, i) = b i, i = 1,..., 8.,, LU.,,.

35 ,, [12, 10]. : A 0 B 0 B T 0 A 1 B 1 A = Bp 3 T A p 2 B p 2 B T p 2 A p 1 B i,a i. A i LDL T, D,L. A i = L i D i L T i, L = diag(l i), L 1 AL T = D 0 B0 B T 0 D 1 B B T p 3 D p 2 Bp 2 B T p 2 D p 1 B i = L 1 i B i L T i+1 = B il T i+1, 0. D i, B i 0, D i B i, D i B i B i T.,,., LDL T, R T R,, LDL T., : (1) L i, D i, A i = L i D i L T i ; (2), B i ; (3), ; (4).,.,,,.,.,. 4.5,,. 60, [13] x = Bx + c, ρ( B ) < 1,.,

36 62 [14] x = F x, F P -,. P - (P-contraction) [15] x = F x, [14]. A A, x x, A 0 A 0. F x i f i (x) f i (x 1,..., x n ), x (j), j = 0, 1,..., N F R n R n, F x (0) x (j) R n, j = 1, 2,..., J = {J j j = 1, 2,...} S = {(s (j) 1,..., s(j) n ) j = 1, 2,...} x (j) i = x (j 1) i, i / J j f i (x (s(j) 1 ) 1,..., x n (s(j) n ) ), i J j, J {1, 2,..., n}, S N n., i = 1,..., n, J S : (1) s (j) i j 1, j = 1, 2,...; (2) s (j) i j ; (3) i J j (j = 1, 2,...). [14], F x F y A x y, A ρ(a) < 1. x = F x , Ax = b., A, A = B C, : x = B 1 Cx B 1 b (4.5) B , ρ( B 1 C ) < 1,. A M, M H, [15]. [15] A, B C, A = B C, B 1 0 B 1 C 0, A = B C A A = B C, ρ(b 1 C) < 1 A 1 A 1 0.

37 B C n n, C B, ρ(c) ρ(b) A, a ij 0 (i j), a ii > 0, A M. [16] A = B C A A M, (4.5)., Jacobi Gauss-Seidel., A A = D L U, D,L U A,A = B C, B = D αl, C = (1 α)l + U, 0 α 1, (4.5).,,,.

38 64

39 MPI

40

41 MPI MPI Message Passing Interface,., SPCs (Scalable Parallel Computers) NOWs (Networks of Workstations) COWs (Clusters of Workstations).,. MPI PVM,,,,,. 4, MPI, MPI,, MPI PVM. SPCs, SPMD MPI. MPI, MPI MPI_. C,,, MPI_,,, Fortran, MPI,., MPI (Process Group), MPI MPI_COMM_WORLD,,., MPI (communicator). MPI,, Fortran, MPI, MPI [1]. 5.1 MPI MPI, MPI_Init( ) MPI_Finalize( ). : MPI INIT C int MPI_Init( int *argc, char **argv ) Fortran MPI_INIT( IERROR ) INTEGER IERROR ANSI C main argc argv, MPI_Init. Fortran, MPI_INIT. MPI, MPI ( MPI_INITIALIZED), MPI,. MPI FINALIZE C int MPI_Finalize( void ) Fortran MPI_FINALIZE( IERROR ) INTEGER IERROR 67

42 68 MPI MPI., MPI, MPI_INIT., MPI_INIT, MPI_INITIALIZED, MPI_INIT. MPI INITIALIZED C int MPI_Initialized( int flag ) Fortran MPI_INITIALIZED( FLAG, IERROR ) LOGICAL FLAG INTEGER IERROR OUT FLAG, MPI_INIT, TRUE, FALSE. MPI MPI_ERROR_STRING,. MPI ERROR STRING C int MPI_Error_string( int errorcode, char *string, int *len ) Fortran MPI_ERROR_STRING( ERRORCODE, STRING, LEN, IERROR ) INTEGER ERRORCODE, LEN, IERROR CHARACTER*(*) STRING IN ERRORCODE, MPI. OUT STRING, ERRORCODE. OUT LEN, STRING., STRING MPI_MAX_ERROR_STRING. 5.2,,,. 5.3 MPI MPI COMM GROUP C int MPI_Comm_group( MPI_Comm comm, MPI_Group *group ) Fortran MPI_COMM_GROUP( COMM, GROUP, IERROR ) INTEGER COMM, GROUP, IERROR IN COMM,. OUT GROUP, COMM.

43 5.3 MPI 69 MPI_COMM_GROUP,. MPI GROUP FREE C int MPI_group_free( MPI_Group *group ) Fortran MPI_GROUP_FREE( GROUP, IERROR ) INTEGER GROUP, IERROR INOUT GROUP, MPI_GROUP_NULL. MPI_GROUP_FREE,. MPI GROUP SIZE C int MPI_Group_size( MPI_Group group, int *size ) Fortran MPI_GROUP_SIZE( GROUP, SIZE, IERROR ) INTEGER GROUP, SIZE, IERROR IN GROUP,. OUT SIZE,. MPI_GROUP_EMPTY, SIZE 0. MPI GROUP RANK C int MPI_Group_rank( MPI_Group group, int *rank ) Fortran MPI_GROUP_RANK( GROUP, RANK, IERROR ) INTEGER GROUP, RANK, IERROR IN GROUP,. OUT RANK,., RANK MPI_UNDEFINED. MPI GROUP TRANSLATE RANKS C int MPI_Group_translate_ranks( MPI_Group group1, int n, int *ranks1, MPI_Group group2, int *ranks2) Fortran MPI_GROUP_TRANSLATE_RANKS( GROUP1, N, RANKS1, GROUP2, RANKS2, IERROR ) INTEGER GROUP1, N, RANKS1(*), GROUP2, RANKS2(*), IERROR

44 70 MPI IN GROUP1, 1. IN N, RANKS1 RANKS2. IN RANKS1, 1. IN GROUP2, 2. OUT RANKS2, RANKS RANKS1, 2, RANKS2 RANKS1 MPI_UNDEFINED. MPI GROUP INCL C int MPI_Group_incl( MPI_Group group, int n, int *ranks, MPI_Group newgroup) Fortran MPI_GROUP_INCL( GROUP, N, RANKS, NEWGROUP, IERROR ) INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR IN GROUP,. IN N, RANKS. IN RANKS,. OUT NEWGROUP, RANKS. MPI GROUP EXCL C int MPI_Group_excl( MPI_Group group, int n, int *ranks, MPI_Group newgroup) Fortran MPI_GROUP_EXCL( GROUP, N, RANKS, NEWGROUP, IERROR ) INTEGER GROUP, N, RANKS(*), NEWGROUP, IERROR IN GROUP,. IN N, RANKS. IN RANKS,. OUT NEWGROUP, RANKS. MPI GROUP UNION C int MPI_Group_union( MPI_Group group1, MPI_Group group2, MPI_Group newgroup) Fortran MPI_GROUP_UNION( GROUP1, GROUP2, NEWGROUP, IERROR ) INTEGER GROUP1, GROUP2, NEWGROUP, IERROR

45 5.4 MPI 71 IN GROUP1, 1. IN GROUP2, 2. OUT NEWGROUP, 1 2. MPI GROUP INTERSECTION C int MPI_Group_intersection( MPI_Group group1, MPI_Group group2, MPI_Group newgroup) Fortran MPI_GROUP_INTERSECTION( GROUP1, GROUP2, NEWGROUP, IERROR ) INTEGER GROUP1, GROUP2, NEWGROUP, IERROR IN GROUP1, 1. IN GROUP2, 2. OUT NEWGROUP, 1 2. MPI GROUP DIFFERENCE C int MPI_Group_difference( MPI_Group group1, MPI_Group group2, MPI_Group newgroup) Fortran MPI_GROUP_DIFFERENCE( GROUP1, GROUP2, NEWGROUP, IERROR ) INTEGER GROUP1, GROUP2, NEWGROUP, IERROR IN GROUP1, 1. IN GROUP2, 2. OUT NEWGROUP, 1 2.,. 5.4 MPI. MPI COMM SIZE C int MPI_Comm_size( MPI_Comm comm, int *size ) Fortran MPI_COMM_SIZE( COMM, SIZE, IERROR ) INTEGER COMM, SIZE, IERROR IN COMM,. OUT SIZE,.

46 72 MPI MPI COMM RANK C int MPI_Comm_rank( MPI_Comm comm, int *rank ) Fortran MPI_COMM_RANK( COMM, RANK, IERROR ) INTEGER COMM, RANK, IERROR IN COMM,. OUT RANK,. MPI COMM DUP C int MPI_Comm_dup( MPI_Comm comm, MPI_Comm *newcomm ) Fortran MPI_COMM_DUP( COMM, NEWCOMM, IERROR ) INTEGER COMM, NEWCOMM, IERROR IN COMM,. OUT NEWCOMM, COMM. MPI COMM CREATE C int MPI_Comm_create( MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm ) Fortran MPI_COMM_CREATE( COMM, GROUP, NEWCOMM, IERROR ) INTEGER COMM, GROUP, NEWCOMM, IERROR IN COMM,. IN GROUP, COMM. OUT NEWCOMM, GROUP. MPI COMM SPLIT C int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm) Fortran MPI_COMM_SPLIT( COMM, COLOR, KEY, NEWCOMM, IERROR ) INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR IN COMM,. IN COLOR,. IN KEY,. OUT NEWCOMM,.

47 COMM, COLOR,, COLOR. MPI COMM FREE C int MPI_Comm_free( MPI_Comm *comm ) Fortran MPI_COMM_FREE( COMM, IERROR ) INTEGER COMM, IERROR INOUT COMM,. 5.5,,. MPI,. 5.6 MPI SEND C int MPI_Send( void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm ) Fortran MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR IN BUF,. IN COUNT,. IN DATATYPE,. IN DEST,. IN TAG,. IN COMM,. COUNT BUF. MPI RECV C int MPI_Recv( void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status ) Fortran MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, SOURCE, TAG,COMM,STATUS(MPI_STATUS_SIZE), IERROR

48 74 MPI OUT BUF,. IN COUNT,. IN DATATYPE,. IN SOURCE,. IN TAG,. IN COMM,. OUT STATUS,., SOURCE TAG, MPI_ANY_SOURCE MPI_ANY_TAG,. STATUS C, Fortran, MPI_SOURCE, MPI_TAG MPI_ERROR. STATUS,, MPI_GET_COUNT. MPI Fortran C : Fortran MPI MPI datatype Fortran datatype MPI_INTEGER MPI_REAL MPI_DOUBLE_PRECISION MPI_COMPLEX MPI_LOGICAL MPI_CHARACTER MPI_BYTE MPI_PACKED INTEGER REAL DOUBLE PRECISION COMPLEX LOGICAL CHARACTER(1) C MPI MPI datatype Fortran datatype MPI_CHAR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNED_CHAR MPI_UNSIGNED_SHORT MPI_UNSIGNED_INT MPI_UNSIGNED_LONG MPI_FLOAT MPI_DOUBLE MPI_LONG_DOUBLE MPI_BYTE signed char signed short int signed int signed long int unsigned char unsigned short int unsigned int unsigned long int float double long double MPI_PACKED MPI_BYTE MPI_PACKED Fortran C, MPI_BYTE, MPI_PACKED., MPI, MPI, MPI. MPI

49 MPI_INIT, MPI_COMM_RANK, MPI_COMM_SIZE, MPI MPI_FINALIZE, MPI_SEND MPI_RECV p, myid (myid= 0,..., p 1) m, m (myid + 1) mod p. program ring c c The header file mpif.h must be included when you use MPI fuctions. c include mpif.h integer myid, p, mycomm, ierr, m, status(mpi_status_size), & next, front, mod, n c c Create MPI parallel environment and get the necessary data. c call mpi_init( ierr ) call mpi_comm_dup( mpi_comm_world, mycomm, ierr) call mpi_comm_rank( mycomm, myid, ierr ) call mpi_comm_size( mycomm, p, ierr ) c c Beginning the main parallel work on each process. c m = myid front = mod(p+myid-1, p) next = mod(myid+1, p) c c Communication with each other. c if(myid.eq. 0) then call mpi_recv(n, 1, mpi_integer, front, 1, mycomm, status, ierr) call mpi_send(m, 1, mpi_integer, next, 1, mycomm, ierr) m = n else call mpi_send(m, 1, mpi_integer, next, 1, mycomm, ierr) call mpi_recv(m, 1, mpi_integer, front, 1, mycomm, status, ierr) endif c c Ending of parallel work. c print *, The value of m is, m, on Process, myid call mpi_comm_free(mycomm, ierr) c c Remove MPI parallel environment. c call mpi_finalize(ierr) end C MPI GET COUNT int MPI_Get_count( MPI_Status status, MPI_Datatype datatype, int *count) Fortran MPI_GET_COUNT( STATUS, DATATYPE, COUNT, IERROR ) INTEGER STATUS(MPI_STATUS_SIZE), DATATYPE, COUNT, IERROR

50 76 MPI IN STATUS,. IN DATATYPE,. OUT COUNT,.,,. C Fortran MPI SENDRECV int MPI_Sendrecv( void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status ) MPI_SENDRECV(SENDBUF, SENDCOUNT, SENDTYPE, DEST, SENDTAG, RECVBUF, RECVCOUNT, RECVTYPE, SOURCE, RECVTAG, COMM, STATUS, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, DEST, SENDTAG, RECVCOUNT, RECVTYPE SOURCE, RECVTAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR IN SENDBUF,. IN SENDCOUNT,. IN SENDTYPE,. IN DEST,. IN SENDTAG,. OUT RECVBUF,. IN RECVCOUNT,. IN RECVTYPE,. IN SOURCE,. IN RECVTAG,. IN COMM,. OUT STATUS,., : call mpi_sendrecv(m, 1, mpi_integer, next, 1, n, 1, mpi_integer, & front, 1, mycomm, status, ierr) m = n MPI_SENDRECV,,.

51 C Fortran MPI SENDRECV REPLACE int MPI_Sendrecv_replace(void *sendbuf, int count, MPI_Datatype datatype, int dest, int sendtag, int source, int recvtag, MPI_Comm comm, MPI_Status *status ) MPI_SENDRECV_REPLACE(BUF, COUNT, DATATYPE, DEST, SENDTAG, SOURCE, RECVTAG, COMM, STATUS, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, DEST, SENDTAG, SOURCE, RECVTAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR OUT BUF,. IN COUNT,. IN DATATYPE,. IN DEST,. IN SENDTAG,. IN SOURCE,. IN RECVTAG,. IN COMM,. OUT STATUS,., BUF : & call mpi_sendrecv_replace(m, 1, mpi_integer, next, 1, front, 1, mycomm, status, ierr), MPI_SENDRECV_REPLACE., MPI MPI_PROC_NULL, , p 1 0 m, :... if(myid.eq. 0) front = MPI_PROC_NULL if(myid.eq. p-1) next = MPI_PROC_NULL call mpi_sendrecv_replace(m, 1, mpi_integer, next, 1, & front, 1, mycomm, status, ierr) MPI PROBE C int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status ) Fortran MPI_PROBE( SOURCE, TAG, COMM, STATUS, IERROR ) INTEGER SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR IN SOURCE,. IN TAG,. IN COMM,. OUT STATUS,.

52 78 MPI MPI_IPROBE, MPI_PROBE. MPI IPROBE C int MPI_Iprobe(int source, int tag, MPI_Comm comm, int* flag, MPI_Status *status ) Fortran MPI_IPROBE( SOURCE, TAG, COMM, FLAG, STATUS, IERROR ) LOGICAL FLAG INTEGER SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR IN SOURCE,. IN TAG,. IN COMM,. OUT FLAG,, FLAG TRUE. OUT STATUS,. SOURCE, TAG COMM,. SOURCE TAG MPI_RECV, (wildcard) MPI_ANY_SOURCE MPI_ANY_TAG. 5.7,,.,,. MPI ISEND C int MPI_Isend( void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request ) Fortran MPI_ISEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR IN BUF,. IN COUNT,. IN DATATYPE,. IN DEST,. IN TAG,. IN COMM,. OUT REQUEST,.

53 MPI IRECV C int MPI_Irecv( void* buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request ) Fortran MPI_IRECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR OUT BUF,. IN COUNT,. IN DATATYPE,. IN SOURCE,. IN TAG,. IN COMM,. OUT REQUEST,. MPI_ISEND MPI_IRECV,, : MPI WAIT C int MPI_Wait( MPI_Request *request, MPI_Status *status ) Fortran MPI_WAIT( REQUEST, STATUS, IERROR ) INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR INOUT REQUEST,. OUT STATUS,. REQUEST, MPI_WAIT. MPI TEST C int MPI_Test( MPI_Request *request, int* flag, MPI_Status *status ) Fortran MPI_TEST( REQUEST, FLAG, STATUS, IERROR ) LOGICAL FLAG INTEGER REQUEST, STATUS(MPI_STATUS_SIZE), IERROR INOUT REQUEST,. OUT FLAG, REQUEST TRUE. OUT STATUS,. STATUS, STATUS MPI_TEST_CANCELLED.

54 80 MPI MPI REQUEST FREE C int MPI_Request_free( MPI_Request *request ) Fortran MPI_REQUEST_FREE( REQUEST, IERROR ) INTEGER REQUEST, IERROR INOUT REQUEST,, MPI_REQUEST_NULL. REQUEST,,. MPI WAITANY C int MPI_Waitany( int count, MPI_Request *array_of_requests, int *index, MPI_Status *status ) Fortran MPI_WAITANY( COUNT, ARRAY_OF_REQUESTS, INDEX, STATUS, IERROR ) INTEGER COUNT, ARRAY_OF_REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERROR IN COUNT,. INOUT ARRAY_OF_REQUESTS,. OUT INDEX,. OUT STATUS,.,,, MPI_WAITANY. MPI TESTANY C int MPI_Testany( int count, MPI_Request *array_of_requests, int *index, int *flag, MPI_Status *status ) Fortran MPI_TESTANY( COUNT, ARRAY_OF_REQUESTS, INDEX, FLAG, STATUS, IERROR ) LOGICAL FLAG INTEGER COUNT, ARRAY_OF_REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERROR IN COUNT,. INOUT ARRAY_OF_REQUESTS,. OUT INDEX,. OUT FLAG,, FLAG=TRUE. OUT STATUS,..

55 MPI WAITALL C int MPI_Waitall( int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses ) Fortran MPI_WAITALL( COUNT, ARRAY_OF_REQUESTS, ARRAY_OF_STATUSES, IERROR ) INTEGER COUNT, ARRAY_OF_REQUESTS(*), ARRAY_OF_STATUSES(MPI_STATUS_SIZE, *), IERROR IN COUNT,. INOUT ARRAY_OF_REQUESTS,. INOUT ARRAY_OF_STATUSES,.,. MPI TESTALL C int MPI_Testall( int count, MPI_Request *array_of_requests, int *flag, MPI_Status *array_of_statuses ) Fortran MPI_TESTALL( COUNT, ARRAY_OF_REQUESTS, FLAG, ARRAY_OF_STATUSES, IERROR ) LOGICAL FLAG INTEGER COUNT, ARRAY_OF_REQUESTS(*), ARRAY_OF_STATUSES(MPI_STATUS_SIZE, *), IERROR IN COUNT,. INOUT ARRAY_OF_REQUESTS,. OUT FLAG,, FLAG=FALSE. INOUT ARRAY_OF_STATUSES,.. MPI CANCEL C int MPI_Cancel( MPI_Request *request ) Fortran MPI_CANCEL( REQUEST, IERROR ) INTEGER REQUEST, IERROR INOUT REQUEST,., MPI_WAIT MPI_TEST,. REQUEST, :

56 82 MPI MPI TEST CANCELLED C int MPI_Test_cancelled( MPI_Status *status, int *flag ) Fortran MPI_TEST_CANCELLED( STATUS, FLAG, IERROR ) LOGICAL FLAG INTEGER REQUEST, IERROR IN STATUS,. OUT FLAG,, FLAG=TRUE. 5.8 MPI SEND INIT C int MPI_Send_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request ) Fortran MPI_SEND_INIT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, DEST, TAG, COMM, REQUEST, IERROR IN BUF,. IN COUNT,. IN DATATYPE,. IN DEST,. IN TAG,. IN COMM,. OUT REQUEST,. MPI RECV INIT C int MPI_Recv_init(void* buf, int count, MPI_Datatype datatype,int source, int tag, MPI_Comm comm, MPI_Request *request ) Fortran MPI_RECV_INIT(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR ) <type> BUF(*) INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, REQUEST, IERROR OUT BUF,. IN COUNT,. IN DATATYPE,. IN SOURCE,. IN TAG,. IN COMM,. OUT REQUEST,.

57 MPI_SEND_INIT MPI_RECV_INIT,,,., MPI_START MPI_STARTALL. MPI START C int MPI_Start( MPI_Request *request ) Fortran MPI_START( REQUEST, IERROR ) INTEGER REQUEST, IERROR INOUT REQUEST,. MPI_START, MPI_SEND_INIT MPI_RECV_INIT. MPI STARTALL C int MPI_Startall( int count, MPI_Request *array_of_request ) Fortran MPI_STARTALL( COUNT, ARRAY_OF_REQUEST, IERROR ) INTEGER COUNT, ARRAY_OF_REQUEST, IERROR IN COUNT,. INOUT ARRAY_OF_REQUEST, , m,, : program mring include mpif.h c integer iter parameter(iter = 3) integer myid, p, mycomm, ierr, m, status(mpi_status_size, 2), & next, front, mod, n, i, requests(2) c c call mpi_init( ierr ) call mpi_comm_dup( mpi_comm_world, mycomm, ierr) call mpi_comm_rank( mycomm, myid, ierr ) call mpi_comm_size( mycomm, p, ierr ) print *, Process, myid, of, p, is running m = myid front = mod(p+myid-1, p) next = mod(myid+1, p) call mpi_send_init(m, 1, mpi_integer, next, 1, mycomm, & requests(1), ierr) call mpi_recv_init(n, 1, mpi_integer, front, 1, mycomm, & requests(2), ierr) do 10 i=1, iter

58 84 MPI call mpi_startall(2, requests, ierr) call mpi_waitall(2, requests, status, ierr) m = n 10 continue print *, The value of m is, m, on Process, myid c call mpi_comm_free(mycomm, ierr) call mpi_finalize(ierr) stop end 5.9 MPI, MPI, (buffered-mode) (synchronous-mode), MPI (ready-mode).,.,,. MPI_BSEND,,,,,. MPI_SSEND,,,. MPI_RSEND,,. MPI_IBSEND, MPI_BSEND. MPI_ISSEND, MPI_SSEND. MPI_IRSEND, MPI_RSEND. MPI_BSEND_INIT, MPI_SEND_INIT. MPI_SSEND_INIT, MPI_SEND_INIT. MPI_RSEND_INIT, MPI_SEND_INIT., : MPI BUFFER ATTACH C int MPI_Buffer_attach( void *buffer, int size ) Fortran MPI_BUFFER_ATTACH( BUFFER, SIZE, IERROR ) <TYPE> BUFFER(*) INTEGER SIZE, IERROR IN BUFFER,. IN SIZE,..

59 MPI BUFFER DETACH C int MPI_Buffer_detach( void *buffer, int *size ) Fortran MPI_BUFFER_DETACH( BUFFER, SIZE, IERROR ) <TYPE> BUFFER(*) INTEGER SIZE, IERROR OUT BUFFER,. OUT SIZE, MPI C,, MPI,., : ; (displacement)., (type map). : T ypemap = {(type 0, disp 0 ),..., (type n 1, disp n 1 )}, disp i type i, i = 0,..., n 1.. MPI TYPE CONTIGUOUS C int MPI_Type_contiguous( int count, MPI_Datatype oldtype, MPI_Datatype *newtype ) Fortran MPI_TYPE_CONTIGUOUS( COUNT, OLDTYPE, NEWTYPE, IERROR ) INTEGER COUNT, OLDTYPE, NEWTYPE, IERROR IN COUNT, OLDTYPE. IN OLDTYPE,. OUT NEWTYPE,., COUNT,. COUNT=5, OLDTYPE=INTEGER, NEWTYPE 5.

60 86 MPI MPI TYPE VECTOR C int MPI_Type_vector( int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype ) Fortran MPI_TYPE_VECTOR( COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR ) INTEGER COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR IN COUNT, OLDTYPE. IN BLOCKLENGTH,. IN STRIDE, OLDTYPE. IN OLDTYPE,. OUT NEWTYPE,. COUNT=3, BLOCKLENGTH=2, STRIDE=3, OLDTYPE=INTEGER, NEWTYPE , 2, 2. MPI TYPE HVECTOR C int MPI_Type_hvector( int count, int blocklength, int stride, MPI_Datatype oldtype, MPI_Datatype *newtype ) Fortran MPI_TYPE_HVECTOR( COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR ) INTEGER COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR IN COUNT, OLDTYPE. IN BLOCKLENGTH,. IN STRIDE,. IN OLDTYPE,. OUT NEWTYPE,. MPI_TYPE_VECTOR,,. C Fortran MPI TYPE INDEXED int MPI_Type_indexed( int count, int *array_of_blocklengths, int *array_of_displacements, MPI_Datatype oldtype, MPI_Datatype *newtype ) MPI_TYPE_INDEXED( COUNT, ARRAY_OF_BLOCKLENGTHS, ARRAY_OF_DISPLACEMENTS, OLDTYPE, NEWTYPE, IERROR ) INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_DISPLACEMENTS(*), OLDTYPE, NEWTYPE, IERROR

61 IN COUNT, OLDTYPE. IN ARRAY_OF_BLOCKLENGTHS,. IN ARRAY_OF_DISPLACEMENTS,. IN OLDTYPE,. OUT NEWTYPE,. ARRAY_OF_BLOCKLENGTHS ARRAY_OF_DISPLACEMENTS OLDTYPE, ARRAY_OF_DISPLACEMENTS. MPI_TYPE_VECTOR,. MPI_TYPE_VECTOR( COUNT, BLOCKLENGTH, STRIDE, OLDTYPE, NEWTYPE, IERROR ) MPI_TYPE_INDEXED( COUNT, LENGTHS, DISPLACEMENTS, OLDTYPE, NEWTYPE, IERROR ) LENGTHS(i)=BLOCKLENGTH, DISPLACEMENTS(i)=i*STRIDE, i=0,..., COUNT-1. MPI_TYPE_INDEXED OLDTYPE,. C Fortran MPI TYPE HINDEXED int MPI_Type_hindexed( int count, int *array_of_blocklengths, int *array_of_displacements, MPI_Datatype oldtype, MPI_Datatype *newtype ) MPI_TYPE_HINDEXED( COUNT, ARRAY_OF_BLOCKLENGTHS, ARRAY_OF_DISPLACEMENTS, OLDTYPE, NEWTYPE, IERROR ) INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_DISPLACEMENTS(*), OLDTYPE, NEWTYPE, IERROR IN COUNT, OLDTYPE. IN ARRAY_OF_BLOCKLENGTHS,. IN ARRAY_OF_DISPLACEMENTS,. IN OLDTYPE,. OUT NEWTYPE,.,. C Fortran MPI TYPE STRUCT int MPI_Type_struct( int count, int *array_of_blocklengths, int *array_of_displacements, MPI_Datatype *array_of_types, MPI_Datatype *newtype) MPI_TYPE_STRUCT( COUNT, ARRAY_OF_BLOCKLENGTHS, ARRAY_OF_DISPLACEMENTS, ARRAY_OF_TYPES, NEWTYPE, IERROR ) INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_DISPLACEMENTS(*), ARRAY_OF_TYPES(*), NEWTYPE, IERROR

62 88 MPI IN COUNT,. IN ARRAY_OF_BLOCKLENGTHS,. IN ARRAY_OF_DISPLACEMENTS,. IN ARRAY_OF_TYPES,. OUT NEWTYPE,. MPI, MPI_TYPE_STRUCT,.,,,,. MPI TYPE COMMIT C int MPI_Type_commit( MPI_Datatype *datatype ) Fortran MPI_TYPE_COMMIT( DATATYPE, IERROR ) INTEGER DATATYPE, IERROR INOUT DATATYPE,. MPI, MPI_TYPE_COMMIT. MPI TYPE FREE C int MPI_Type_free( MPI_Datatype *datatype ) Fortran MPI_TYPE_FREE( DATATYPE, IERROR ) INTEGER DATATYPE, IERROR INOUT DATATYPE,. MPI TYPE EXTENT C int MPI_Type_extent( MPI_Datatype datatype, MPI_Aint *extent ) Fortran MPI_TYPE_EXTENT( DATATYPE, EXTENT, IERROR ) INTEGER DATATYPE, EXTENT, IERROR IN DATATYPE,. OUT EXTENT,. MPI ADDRESS C int MPI_Address( void* location, MPI_Aint *address ) Fortran MPI_ADDRESS( LOCATION, ADDRESS, IERROR ) <type> LOCATION(*) INTEGER ADDRESS, IERROR

63 IN LOCATION,. OUT ADDRESS,. MPI_TYPE_EXTENT MPI_ADDRESS, C,, MPI. #include <stdio.h> #include "mpi.h" typedef struct { double value; char str; } data; void main(argc, argv) int argc; char **argv; { int p, myid, lens[3]={1, 1, 1}, i; MPI_Comm mycomm; data tst[3]; MPI_Datatype new, type[3] = {MPI_DOUBLE, MPI_CHAR, MPI_UB}; MPI_Aint disp[3], size; MPI_Status status; } MPI_Init( &argc, &argv ); MPI_Comm_dup( MPI_COMM_WORLD, &mycomm); MPI_Comm_rank( mycomm, &myid); MPI_Comm_size( mycomm, &p); if (myid == 0) for(i=0; i<3; i++) { tst[i].value = 1.0; tst[i].str= a ; } printf("\nthe Process %1d of %1d is running.\n", myid, p); MPI_Address(&tst[0], &disp[0]); MPI_Address(&tst[0].str, &disp[1]); for (i=2; i>=0; i--) disp[i] -= disp[0]; MPI_Type_struct(3, lens, disp, type, &new); MPI_Type_commit(&new); MPI_Type_extent(new, &size); if(myid == 0) printf("\nthe Extent of Struct Data Type is %d.\n", size); if(myid == 0) MPI_Ssend(tst, 3, new, 1, 1, mycomm); else if (myid == 1) MPI_Recv(tst, 3, new, 0, 1, mycomm, &status); MPI_Type_free(&new); if(myid == 1) printf("\nthe values are %f and %c\n", tst[1].value, tst[1].str); MPI_Comm_free(&mycomm); MPI_Finalize(); C, MPI,. MPI (pseudo datatype) MPI_UB, MPI MPI_LB. MPI +new+ MPI_TYPE_EXTENT 4 8, 4, 12, 16. MPI_TYPE_SIZE, 9.

64 90 MPI MPI TYPE SIZE C int MPI_Type_size( MPI_Datatype datatype, int *size ) Fortran MPI_TYPE_SIZE( DATATYPE, SIZE, IERROR ) INTEGER DATATYPE, SIZE, IERROR IN DATATYPE,. OUT SIZE,. MPI GET ELEMENTS C int MPI_Get_elements(MPI_Status *status,mpi_datatype datatype,int *count) Fortran MPI_GET_ELEMENTS( STATUS, DATATYPE, COUNT, IERROR ) INTEGER STATUS(MPI_STATUS_SIZE), DATATYPE, COUNT, IERROR IN STATUS,. IN DATATYPE,. OUT COUNT, MPI. MPI_GET_COUNT, MPI_GET_COUNT, MPI_GET_ELEMENTS MPI. MPI, C MPI_INT (Fortran MPI_INTEGER), MPI_GET_COUNT MPI_GET_ELEMENTS..... call mpi_type_contiguous(2, mpi_integer, type, ierr) call mpi_type_commit(type, ierr) if(myid.eq. 0.and. p.gt. 1) then call mpi_send(ia, 3, mpi_integer, 1, 1, mycomm, ierr) elseif(myid.eq. 1) then call mpi_recv(ia, 2, type, 0, 1, mycomm, status, ierr) call mpi_get_count(status, type, count1, ierr) call mpi_get_elements(status, type, count2, ierr) endif...,,, MPI_GET_COUNT., MPI,, MPI,, MPI MPI_BOTTOM, MPI, MPI PVM (Parallel Virtual Machine), MPI MPI..

65 5.12 MPI 91 C Fortran MPI PACK int MPI_Pack( void* inbuf, int incount, MPI_Datatype datatype, void* outbuf, int outsize, int *position, MPI_Comm comm ) MPI_PACK( INBUF, INCOUNT, DATATYPE, OUTBUF, OUTSIZE, POSITION, COMM, IERROR ) <type> INBUF(*), OUTBUF(*) INTEGER INCOUNT, DATATYPE, OUTSIZE, POSITION, COMM, IERROR IN INBUF,. IN INCOUNT,. IN DATATYPE,. OUT OUTBUF,. IN OUTSIZE,. INOUT POSITION,. IN COMM,. C Fortran MPI UNPACK int MPI_Unpack( void* inbuf, int insize, int *position, void* outbuf, int outcount, MPI_Datatype datatype, MPI_Comm comm ) MPI_UNPACK( INBUF, INSIZE, POSITION, OUTBUF, OUTCOUNT, DATATYPE, COMM, IERROR ) <type> INBUF(*), OUTBUF(*) INTEGER INSIZE, POSITION, OUTCOUNT, DATATYPE, COMM, IERROR IN INBUF,. IN INSIZE,. INOUT POSITION,. OUT OUTBUF,. IN OUTCOUNT,. IN DATATYPE,. IN COMM,., MPI_PACKED., MPI : MPI PACK SIZE C int MPI_Pack_size( int incount, MPI_Datatype datatype, MPI_Comm comm, int *size ) Fortran MPI_PACK_SIZE( INCOUNT, DATATYPE, COMM, SIZE, IERROR ) INTEGER INCOUNT, DATATYPE, COMM, SIZE, IERROR

66 92 MPI IN INCOUNT,. IN DATATYPE,. IN COMM,. OUT SIZE,. SIZE,. MPI_PACK MPI_UNPACK, ,,. : program pack include mpif.h c integer maxbuf, len parameter (maxbuf = 200, len = 10) integer myid, p, mycomm, ierr, status(mpi_status_size, 2), & ia(len), count1, count2, i, pos real*8 a(len) character buf(maxbuf) c call mpi_init( ierr ) call mpi_comm_dup( mpi_comm_world, mycomm, ierr) call mpi_comm_rank( mycomm, myid, ierr ) call mpi_comm_size( mycomm, p, ierr ) print *, Process, myid, of, p, is running c if(myid.eq. 0) then do 10 i=1, len ia(i) = i a(i) = dble(i) 10 continue endif call mpi_pack_size(len, mpi_integer, mycomm, count1, ierr) call mpi_pack_size(len, mpi_double_precision, mycomm, count2, i) print *, The pack size of 10 integer and real8 are:, & count1, count2 pos = 1 if(myid.eq. 0.and. p.gt. 1) then call mpi_pack(ia, len, mpi_integer, buf, maxbuf, pos, & mycomm, ierr) call mpi_pack(a, len, mpi_double_precision, buf, maxbuf, pos, & mycomm, ierr) call mpi_send(buf, pos-1, mpi_packed, 1, 1, mycomm, ierr) elseif(myid.eq. 1) then call mpi_recv(buf, maxbuf, mpi_packed, 0, 1, mycomm, & status, ierr) call mpi_unpack(buf, maxbuf, pos, ia, len, mpi_integer, & mycomm, ierr)

67 call mpi_unpack(buf, maxbuf, pos, a, len, mpi_double_precision, & mycomm, ierr) print *, The received values are:, a(1), a(2), a(3) endif call mpi_comm_free(mycomm, ierr) call mpi_finalize(ierr) stop end 5.13 (collective communication) ( 2).,, (barrier synchronization) (global communication functions) (global reduction operations) MPI BARRIER C int MPI_Barrier( MPI_Comm comm ) Fortran MPI_BARRIER( COMM, IERROR ) INTEGER COMM, IERROR IN COMM,. MPI, COMM,,., MPI BCAST C int MPI_Bcast( void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm ) Fortran MPI_BCAST( BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR ) <type> BUFFER(*) INTEGER COUNT, DATATYPE, ROOT, COMM, IERROR INOUT BUFFER,. IN COUNT,. IN DATATYPE,. IN ROOT,. IN COMM,.

68 94 MPI COMM, ROOT, BUFFER COMM., MPI. C Fortran MPI GATHER int MPI_Gather( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm ) MPI_GATHER( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR IN SENDBUF,. IN SENDCOUNT,. IN SENDTYPE,. OUT RECVBUF,. IN RECVCOUNT,. IN RECVTYPE,. IN ROOT,. IN COMM,. MPI (gather), COMM ( ROOT) ROOT, RECVBUF. ROOT, RECVBUF. C Fortran MPI GATHERV int MPI_Gatherv( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm ) MPI_GATHERV( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, ROOT, COMM, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, IERROR

69 IN SENDBUF,. IN SENDCOUNT,. IN SENDTYPE,. OUT RECVBUF,. IN RECVCOUNTS,. IN DISPLS,. IN RECVTYPE,. IN ROOT,. IN COMM,. MPI_GATHER,,, MPI_GATHER. MPI : , ROOT,,. program gather include mpif.h c integer maxbuf, len, mp parameter (maxbuf = 200, len = 10, mp = 5) integer myid, p, mycomm, ierr, root, ia(len), iga(maxbuf), i, & displs(mp), counts(mp) c call mpi_init( ierr ) call mpi_comm_dup( mpi_comm_world, mycomm, ierr) call mpi_comm_rank( mycomm, myid, ierr ) call mpi_comm_size( mycomm, p, ierr ) print *, Process, myid, of, p, is running c do 10 i=1, len ia(i) = i+myid*len 10 continue c do 20 i=1, p displs(i) = 20*i-20 counts(i) = len 20 continue root = 0 c c c call mpi_gather(ia, len, mpi_integer, iga, len, mpi_integer, & root, mycomm, ierr) if(myid.eq. root) then print *, The gather values are:, & iga(1), iga(len+1), iga(2*len+1) endif call mpi_gatherv(ia, len, mpi_integer, iga, counts, displs,

70 96 MPI c c & mpi_integer, root, mycomm, ierr) if(myid.eq. root) then print *, The gatherv values are:, & iga(2), iga(2*len+2), iga(4*len+2) endif call mpi_comm_free(mycomm, ierr) call mpi_finalize(ierr) stop end : 1, 11, 21 2, 12, 22. MPI_GATHER, MPI_GATHERV,, COUNTS, 20. C Fortran MPI SCATTER int MPI_Scatter( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm ) MPI_SCATTER( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR IN SENDBUF,. IN SENDCOUNT,. IN SENDTYPE,. OUT RECVBUF,. IN RECVCOUNT,. IN RECVTYPE,. IN ROOT,. IN COMM,. MPI (scatter), MPI_GATHER. C Fortran MPI SCATTERV int MPI_Scatterv( void* sendbuf, int *sendcounts, int *displs, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm ) MPI_SCATTERV( SENDBUF, SENDCOUNTS, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNTS(*), DISPLS(*), SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR

71 IN SENDBUF,. IN SENDCOUNTS,. IN DISPLS,. IN SENDTYPE,. OUT RECVBUF,. IN RECVCOUNT,. IN RECVTYPE,. IN ROOT,. IN COMM, C Fortran MPI ALLGATHER int MPI_Allgather( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm ) MPI_ALLGATHER( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR IN SENDBUF,. IN SENDCOUNT,. IN SENDTYPE,. OUT RECVBUF,. IN RECVCOUNT,. IN RECVTYPE,. IN COMM,. C Fortran MPI ALLGATHERV int MPI_Allgatherv( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm ) MPI_ALLGATHERV( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR ) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

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

消息传递并行编程环境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

模板

模板 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

05_資源分享-NFS及NIS.doc

05_資源分享-NFS及NIS.doc 5 NFS NFS Server NFS Client NIS NIS 5-0 (Network File System, NFS) Unix NFS mount NFS... Network Information Service NIS Linux NIS NIS NIS / / /etc/passwd /etc/group NFS NIS 5-1 NFS 5-1-1 NFS NFS Network

More information

Microsoft PowerPoint - KN002.ppt

Microsoft PowerPoint - KN002.ppt MPI II 1300141 14114 16001630 1630 MPI 11 11 3 MPI MPI-110 MPI- SPMD Single Program/Instruction Multiple Data CPU 4 PE: Processing Element PE #0 Program Data #0 PE #1 Program Data #1 SPMD mpirun -np M

More information

PowerPoint 演示文稿

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

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

第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

Parallel Programming with MPI

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

More information

PowerPoint 演示文稿

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

More information

投影片 1

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

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 用户手册 国家超级计算济南中心 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

Parallel Programming with MPI

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

More information

PowerPoint Presentation

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

More information

1 学习目标了解并掌握 MPI 的各种非阻塞通信形式及其作用, 并能运用 MPI 的非阻塞通信语句编写高级的并行程序 2 重点和难点非阻塞通信的语义特点, 如何运用非阻塞通信的特点来实现特定的功能和性能 3 学习方法所有的阻塞调用形式都有其相应的非阻塞调用形式, 此外非阻塞调用还有其特殊的接口形式

1 学习目标了解并掌握 MPI 的各种非阻塞通信形式及其作用, 并能运用 MPI 的非阻塞通信语句编写高级的并行程序 2 重点和难点非阻塞通信的语义特点, 如何运用非阻塞通信的特点来实现特定的功能和性能 3 学习方法所有的阻塞调用形式都有其相应的非阻塞调用形式, 此外非阻塞调用还有其特殊的接口形式 Lecture15 阻塞通信和非阻塞通信 1 学习目标了解并掌握 MPI 的各种非阻塞通信形式及其作用, 并能运用 MPI 的非阻塞通信语句编写高级的并行程序 2 重点和难点非阻塞通信的语义特点, 如何运用非阻塞通信的特点来实现特定的功能和性能 3 学习方法所有的阻塞调用形式都有其相应的非阻塞调用形式, 此外非阻塞调用还有其特殊的接口形式 虽然非阻塞调用的形式很多, 但是要把握它们, 最根本的一点就是非阻塞通信的基本语义

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第六讲 消息传递编程接口 MPI 三 MPI 数据类型 1 MPI 数据类型 MPI 数据类型定义 MPI 数据类型的大小 上下界 域及相关函数 MPI 新数据类型的创建 提交与释放 MPI 数据的打包与解包 2 MPI 数据类型 MPI 原始数据类型 MPI 消息传递通常只能处理连续存放的同一类型的数据 MPI 自定义数据类型 如果需要发送或接收具有复杂结构的数据时, 可以使用自定义数据类型 使用自定义数据类型的好处

More information

自由軟體教學平台

自由軟體教學平台 NCHC Opensource task force DRBL steven@nchc.gov.tw, c00hkl00@nchc.gov.tw National Center for High-Performance Computing http://www.nchc.gov.tw Jan, 2003 1 2003/1/28 ( ) 09:00-10:30 10:40-12:00 Linux 13:00-14:30

More information

Microsoft PowerPoint - Tongji_MPI编程初步

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

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

PowerPoint 演示文稿

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

More information

PowerPoint 演示文稿

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

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

untitled

untitled V3049A-EXD IP-SAN/NAS Infinova Infinova Infinova Infinova www.infinova.com.cn Infinova Infinova Infinova 1 2 1 2 V3049A-EXD-R16 V3049A-EXD-R24 ... 1 1.1... 1 1.2... 1 1.3... 1... 2 2.1... 2 2.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

untitled

untitled V3041A-J/V3042A-J IP-SAN/NAS Infinova Infinova Infinova Infinova www.infinova.com.cn Infinova Infinova Infinova 1 2 1 2 V3041A-16R-J V3041A-24R-J V3042A-16R-J V3042A-24R-J V3049-EXD-R16 V3049-EXD-R24 ...

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

Microsoft Word - linux命令及建议.doc

Microsoft Word - linux命令及建议.doc Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换

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

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

本文由筱驀釹贡献

本文由筱驀釹贡献 本 文 由 筱 驀 釹 贡 献 ppt 文 档 可 能 在 WAP 端 浏 览 体 验 不 佳 建 议 您 优 先 选 择 TXT, 或 下 载 源 文 件 到 本 机 查 看 Linux 操 作 系 统 Linux 操 作 系 统 第 一 部 分 介 绍 与 安 装 Linux 的 由 来 : Linux 的 由 来 : 的 由 来 Linus Torvalds 1.Linux 的 版 本 1.Linux

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1.

Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE Project Properties IDE makefile 1. Oracle Solaris Studio 12.2 IDE 2010 9 2 8 9 10 11 13 20 26 28 30 32 33 Oracle Solaris Studio makefile C C++ Fortran IDE Solaris Linux C/C++/Fortran IDE "Project Properties" IDE makefile 1. "File" > "New

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

Simulator By SunLingxi 2003

Simulator By SunLingxi 2003 Simulator By SunLingxi sunlingxi@sina.com 2003 windows 2000 Tornado ping ping 1. Tornado Full Simulator...3 2....3 3. ping...6 4. Tornado Simulator BSP...6 5. VxWorks simpc...7 6. simulator...7 7. simulator

More information

软件测试(TA07)第一学期考试

软件测试(TA07)第一学期考试 一 判 断 题 ( 每 题 1 分, 正 确 的, 错 误 的,20 道 ) 1. 软 件 测 试 按 照 测 试 过 程 分 类 为 黑 盒 白 盒 测 试 ( ) 2. 在 设 计 测 试 用 例 时, 应 包 括 合 理 的 输 入 条 件 和 不 合 理 的 输 入 条 件 ( ) 3. 集 成 测 试 计 划 在 需 求 分 析 阶 段 末 提 交 ( ) 4. 单 元 测 试 属 于 动

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

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun SAP livecache Sun Cluster Solaris OS SPARC Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7374 10 2004 4 A 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD University of California UNIX X/Open Company, Ltd.

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD University of California UNIX X/Open Company, Ltd. Java Desktop System 2 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. : 817 7758 10 2004 9 2004 Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A. Sun Sun

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

Microsoft PowerPoint - os_4.ppt

Microsoft PowerPoint - os_4.ppt 行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是

More information

Windows 2000 Server for T100

Windows 2000 Server for T100 2 1 Windows 95/98 Windows 2000 3.5 Windows NT Server 4.0 2 Windows DOS 3.5 T200 2002 RAID RAID RAID 5.1 Windows 2000 Server T200 2002 Windows 2000 Server Windows 2000 Server Windows 2000 Server 3.5 for

More information

投影片 1

投影片 1 類 Linux BASH shell (, VBird) 2008/03/29 Linux 1 Bash Shell 令 vi vim 料流 令 / 令 理 (job control) 例 2008/03/29 Linux 2 Bash shell 2008/03/29 Linux 3 什 Shell Shell shell 2008/03/29 Linux 4 什 Shell Linux shell

More information

ebook8-30

ebook8-30 3 0 C C C C C C++ C + + C++ GNU C/C++ GNU egcs UNIX shell s h e l l g a w k P e r l U N I X I / O UNIX shell awk P e r l U N I X C C C C C C U N I X 30.1 C C U N I X 70 C C U N I X U N I X U N I X C Dennis

More information

科学计算的语言-FORTRAN95

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

More information

スライド 1

スライド 1 LPIC 304 2014 7 27 ( ) 13:30 16:30 LPI-Japan LPI-Japan 2009. All rights reserved. LPI-Japan 2009. All rights reserved. 2 Linux Linus Torvalds Carl ) in LinuxConJapan http://www.lpi.or.jp/news/event/page/20130529_02_report/

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

スライド 1

スライド 1 LPIC 304 2015 1 18 ( ) 13:30 16:30 LPI-Japan LPI-Japan 2009. All rights reserved. LPI-Japan 2009. All rights reserved. 2 Linux Linus Torvalds Carl ) in LinuxConJapan nginx Igor Sysoev in Nginx LPI-Japan

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

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

ebook35-2

ebook35-2 2 2.1 Linux login Login: < > Password: < > Linux r o o t l o g o u t 2.2 Linux X Window Linux Linux Bourne ( b s h ) C ( c s h ) Korn ( k s h ) Bourne Steven Bourne UNIX Bourne bash Bourne C Bill Joy Bourne

More information

epub 61-2

epub 61-2 2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +

More information

mannal

mannal 高 性 能 集 群 计 算 机 使 用 说 明 书 版 本 1.0.8 高 性 能 计 算 研 究 组 编 2008 年 3 月 12 日 第 1 页 共 30 页 高 性 能 集 群 计 算 机... 1 使 用 说 明 书... 1 高 性 能 计 算 集 群 使 用 说 明... 3 1. 集 群 系 统 概 述... 3 2. 使 用 方 法... 5 1. 登 录 方 法... 5 2.MPI

More information

.. 3 N

.. 3 N 1 .. 3 N9.. 4 5.. 6 7.. 8 20.. 21 23.. 24.. 25 26.. 27.. 28.. 29 2 (Cyber Café) Linux (LAN) Linux Public Home 3 K12LTSP K12LTSPFedora Core 4 (Linux)LTSP Linux (command line interface) (Graphical User Interface,

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用 TORQUE Maui hmli@ustc.edu.cn 2008 1 1 TORQUE 2 1.1 TORQUE........................... 2 1.2 TORQUE...................... 2 1.3 TORQUE.......................... 4 1.4 TORQUE........................... 4

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

untitled

untitled TS-411U Turbo Server TS-411U Turbo Server ( : 1.0.0) 2005 2005 12 8-2 - 1. 2. TS-411U Turbo Server - 3 - ... 7 1.1... 7 1.2... 8 1.3... 9 TS-411U... 10 2.1... 10 2.2... 14 2.3 TS-411U... 15 LCD... 17...

More information

Microsoft PowerPoint - VCAD.ppt []

Microsoft PowerPoint - VCAD.ppt [] WG HPCHPC 2 2004 MD-GRAPE2 GRAPE1989 MDM:MD-GRAPE2 2004MDMRSCC 2006MD-GRAPE3 1 Peta FLOPS 200611Gordon Bell installed Honorable MD-GRAPE3 Planed (RIKEN) Mention180TFLOPS 1PetaFLOPS MD-GRAPE3 BlueGene/Q

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

TCA Linux 相容性認證測試流程步驟

TCA Linux 相容性認證測試流程步驟 年 度 流 -Linux 行 北 年 錄...2 說...4 2.1...4 2.2...4 2.3...4 2.4 行...5...6 3.1...6 3.2...6 3.3...7 3.4 列...7 Linux...8 4.1...8 4.1.1 CD-ROM...8 4.1.2 滑...10 4.1.3...14 4.1.4 路...19 4.1.5 Linux...22 4.1.6...27

More information

ansoft_setup21.doc

ansoft_setup21.doc Cadence Cadence Cadence 1000 (1) (2) CIC (3).. CIC Cadence (a) CIC license license server license CIC license CIC license (b) 2000 Cadence license 92 1 1 license server CIC 92 1 1 Cadence license licenser

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

30 學 術 論 文 10 1980 3 4 二 復 旦 內 部 圍 繞 鬥 爭 目 標 的 紛 爭 1966 6 1 5 6 4 6 10 7 14 8 16 18 9 19 bk bl bm bn

30 學 術 論 文 10 1980 3 4 二 復 旦 內 部 圍 繞 鬥 爭 目 標 的 紛 爭 1966 6 1 5 6 4 6 10 7 14 8 16 18 9 19 bk bl bm bn 學 術 論 文 文 革 初 期 復 旦 大 學 的 樊 建 政 董 國 強 摘 要 :1966 年 10 月 以 後 復 旦 大 學 校 園 內 圍 繞 黑 材 料 問 題 的 公 開 衝 突, 根 源 於 6 月 以 來 復 旦 師 生 間 圍 繞 本 校 如 何 開 展 文 革 運 動 所 出 現 的 紛 爭 與 對 立 一 些 激 進 師 生 貼 出 批 評 黨 委 的 大 字 報 ; 而 校

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

文件1

文件1 iptables log rule policy ( ) 1. (Packet Filter) OSI IP (Router) router router access control list ACL (Transparency) 2. Proxy store-and-forward proxy filter " " 3. Application internet java script 4. Hardware

More information

C/C++ - 数组与指针

C/C++ - 数组与指针 C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 float candy [ 365]; char code [12]; int states [50]; 2 int array [6] = {1, 2, 4, 6, 8, 10}; 3 // day_mon1.c: # include # define MONTHS 12 int

More information

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "P

Oracle Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE P Oracle Solaris Studio 12.3 IDE 2011 12 E26461-01 2 7 8 9 9 Oracle 10 12 14 21 26 27 29 31 32 33 Oracle Solaris Studio IDE makefile C C++ Fortran makefile IDE Solaris Linux C/C++/Fortran Oracle IDE "Project

More information

4 A C n n, AA = A A, A,,, Hermite, Hermite,, A, A A, A, A 4 (, 4,, A A, ( A C n n, A A n, 4 A = (a ij n n, λ, λ,, λ n A n n ( (Schur λ i n

4 A C n n, AA = A A, A,,, Hermite, Hermite,, A, A A, A, A 4 (, 4,, A A, ( A C n n, A A n, 4 A = (a ij n n, λ, λ,, λ n A n n ( (Schur λ i n ,?,,, A, A ( Gauss m n A B P Q ( Ir B = P AQ r(a = r, A Ax = b P Ax = P b, x = Qy, ( Ir y = P b (4 (4, A A = ( P Ir Q,,, Schur, Cholesky LU, ( QR,, Schur,, (,,, 4 A AA = A A Schur, U U AU = T AA = A A

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

幻灯片 1

幻灯片 1 并行机群调试 曙光信息产业 ( 北京 ) 有限公司 技术支持中心 系统常用命令 chkconfig : 开启服务 chkconfig level 35 xfs on;chkconfig --list Rcp:rsh 自带远程拷贝 rcp nodex:/etc/hosts ( 本地 )/etc/ rcp nodex:/etc/hosts nodey:/etc/ Scp:ssh 自带远程拷贝 scp nodex:/etc/hosts

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1 Red Flag Linux Desktop 4.0 68 6 Red Flag Software Co., Ltd. http://www.redflag-linux.com Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1 1 Red Flag Linux Desktop 4.0 1.1 Red Flag Linux Desktop

More information

第11章 可调内核参数

第11章 可调内核参数 11 11 Unix BSD 4.4 Linux sysctl Unix Linux /proc window /proc /proc/sys /proc/sys sysctl Unix root /proc/sys/vm root /proc/sys sysctl /proc/sys struct ctl_table 18274 struct ctl_tables /proc/sys struct

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

Microsoft PowerPoint - CEM-07-Parallel.pptx

Microsoft PowerPoint - CEM-07-Parallel.pptx Parallel Scientific Computing by Computer Cluster Jiun-Hwa Lin Department of Electrical Engineering National Taiwan Ocean University Outline Introduction Simple Cluster Setup Real Examples at NTOU Conclusions

More information

財金資訊-80期.indd

財金資訊-80期.indd IPv6 / LINE YouTube TCP/IP TCP (Transmission Control Protocol) IP (Internet Protocol) (node) (address) IPv4 168.95.1.1 IPv4 1981 RFC 791 --IP IPv4 32 2 32 42 IP (Internet Service Provider ISP) IP IP IPv4

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Linux 操 作 系 统 基 础 介 绍 课 程 目 标 及 要 求 了 解 Linux 操 作 系 统 的 登 入 方 式 掌 握 常 用 命 令 的 基 本 用 法 能 够 熟 练 在 各 个 目 录 转 换 Outline 1. Linux 操 作 系 统 简 介 2. Linux 操 作 系 统 的 登 录 3. Linux 操 作 系 统 的 目 录 结 构 4. 常 用 命 令 5.

More information

录 环 录结 统 资 查 环 设 设 环 变 库 问题 业 计 结 资 请 业 业查 WRF CESM

录 环 录结 统 资 查 环 设 设 环 变 库 问题 业 计 结 资 请 业 业查 WRF CESM 绍 陈 锟 级计 jingkun.chen@nscc-gz.cn 录 环 录结 统 资 查 环 设 设 环 变 库 问题 业 计 结 资 请 业 业查 WRF CESM 环 户 结 结 ln (login node) cn ( compute node) trans-server 盘结 户 ln0~ln3 户 ln7~ln8 ln 过 ssh 进 cn 须 业 进./WORK NSFCGZ /app/toolshs/transserver.sh

More information

Windows 2000 Server for T100

Windows 2000 Server for T100 T200 3020 Windows 2000 Advanced Server /Windows NT 4.0 Server /Redhat Linux7.3 SCO UnixWare7.1.1 Novell NetWare5.0 1. Windows 2000 Advanced Server / 2. Windows NT 4.0 Server / 3. Redhat Linux7.3 4. SCO

More information

Abstract arm linux tool-chain root NET-Start! 2

Abstract arm linux tool-chain root NET-Start! 2 Lab III - Embedding Linux 1 Abstract arm linux tool-chain root NET-Start! 2 Part 1.4 Step1. tool-chain 4 Step2. PATH 4 Part 2 kernel 5 Step1. 5 Step2... 6 Step3...8 Part 3 root. 8 Step1. 8 Step2. 8 Part

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实 云 服 务 器 ECS 快 速 入 门 (Linux) 快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实 例, 有 时 候 也 被 称 为 阿 里 云

More information

投影片 1

投影片 1 9 1 9-1 Windows XP Windows Server 2003 Mac OS Linux, 都 (OS, Operating System ) 2 3 , 來, 行 3 理 行 4 ,, (UI, User Interface), 滑, 令 列 (CLI, Command-Line Interface) (GUI, Graphical User Interface) 2 5 令 列,

More information

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

A Preliminary Implementation of Linux Kernel Virus and Process Hiding 邵 俊 儒 翁 健 吉 妍 年 月 日 学 号 学 号 学 号 摘 要 结 合 课 堂 知 识 我 们 设 计 了 一 个 内 核 病 毒 该 病 毒 同 时 具 有 木 马 的 自 动 性 的 隐 蔽 性 和 蠕 虫 的 感 染 能 力 该 病 毒 获 得 权 限 后 会 自 动 将 自 身 加 入 内 核 模 块 中 劫 持 的 系 统 调 用 并 通 过 简 单 的 方 法 实 现 自 身 的

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

ebook62-1

ebook62-1 1 Red Hat Linux R e d Hat Linux L i n u x X Wi n d o w Red Hat L i n u x 1.1 Red Hat Linux Red Hat 16 M 120 M 3. 5 Intel 386 C D - R O M C D - R O M We b / 1.1.1 L i n u x L i n u 4 Primary Partition Extended

More information

迅闪2009帮助手册(xshelp)

迅闪2009帮助手册(xshelp) 信 佑 技 术 白 皮 书 信 佑 6.0 目 录 1. 产 品 入 门... 1 1.1. 部 署 结 构... 1 1.2. 安 装 环 境 需 求... 1 1.3. 服 务 器 部 署 安 装... 2 1.4. 客 户 机 部 署 安 装... 8 1.5. 服 务 控 制 器... 12 2. 客 户 机 管 理... 13 2.1. 设 置 分 组... 13 2.2. 添 加 客 户

More information

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce.

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce. Linux Ubuntu 10.04 Part 1 17 1 Linux Ubuntu... 18 1-1 Linux... 19 UNIX...19 Linux...19 Linux...20...20 Linux...21 Linux...21 1-2 GNU FSF Open So urce...22 GNU...22 GPL...23...24 1-3 GNU/Linux V.S. Linux...25

More information

MPI实验.doc

MPI实验.doc MPI 实验手册 2014 年 5 月 实验环境说明 : 虚拟机 :Vmware Workstation 9 Linux 系统 :CentOS 6.3 每台机器上有 3 个未配置的虚拟机节点用于进行 MPI 环境配置实验, 有 3 个已配置好 的节点可以直接运行 MPI 程序 3 台已配置好的 Linux 虚拟机 IP 地址如下, 可以登录系统用 ifconfig 指令查看 node1 192.168.1.11

More information