際際滷

際際滷Share a Scribd company logo
亳弍仍亳仂亠从舒 MPI
Message Passing Interface
仂亳 MPI
弌舒仆亟舒 MPI 1.0 1995 亞仂亟, MPI 2.0 1998
亞仂亟. 仗亠亟亠仍磳 API (于舒亳舒仆 亟仍 弌亳,
C++, Fortran, Java).
束仂仄仗仍亠从 仗仂舒于从亳損 MPI
 亳弍仍亳仂亠从舒.
 弌亠亟于舒 从仂仄仗亳仍亳亳 亳 亰舒仗从舒
仗亳仍仂亢亠仆亳.
SPMD-仄仂亟亠仍.
0
1
2
3
舒亰仆亠 仗仂亠
于仗仂仍仆ム 舒亰仆亠 舒亳
仂亟仆仂亞仂 亳 仂亞仂 亢亠 从仂亟舒.
弌弍仂从舒 MPI-仗亳仍仂亢亠仆亳.
弌弍仂从舒 MPI-仗亳仍仂亢亠仆亳 仂亠于仍磳  仗仂仄仂
仗亠亳舒仍仆仂亶 亳仍亳.  仍舒亠 弌亳  mpicc. 亳仄亠:
mpicc o mpihello mpihello.c
舒仗从 MPI-仗亳仍仂亢亠仆亳 仂亠于仍磳  仗仂仄仂
从仂仄舒仆亟 mpirun.
mpirun np 4 mpihello
个仆从亳亳 亳仆亳亳舒仍亳亰舒亳亳 亳
亰舒于亠亠仆亳 舒弍仂.
int MPI_Init(int* argc,char*** argv)
argc  从舒亰舒亠仍 仆舒 亠亳从 舒亞仄亠仆仂于 从仂仄舒仆亟仆仂亶 仂从亳
argv  从舒亰舒亠仍 仆舒 仗亳仂从 舒亞仄亠仆仂于
int MPI_Finalize()
丐仂亢亠 仗仂舒 MPI-仗仂亞舒仄仄舒
#include <mpi.h>
#include <stdio.h>
int main( int argc, char *argv[] )
{
int rank, size;
MPI_Init( &argc, &argv );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
MPI_Comm_size( MPI_COMM_WORLD, &size );
printf( "I am %d of %dn", rank, size );
MPI_Finalize();
return 0;
}
个仆从亳亳 仂仗亠亟亠仍亠仆亳 舒仆亞舒 亳
亳仍舒 仗仂亠仂于.
int MPI_Comm_size (MPI_Comm comm, int* size )
comm - 从仂仄仄仆亳从舒仂
size  亳仍仂 仗仂亠仂于
int MPI_Comm_rank(MPI_Comm comm, int* rank)
comm  从仂仄仄仆亳从舒仂
rank  舒仆亞 仗仂亠舒
亳仄亠 仗仂亠亶亠亶 仗亠亠仍从亳
#include <stdio.h>
#include <mpi.h>
main(int argc, char* argv[])
{
int rank;
MPI_Status st;
char buf[64];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == 0) {
sprintf(buf, "Hello from processor 0");
MPI_Send(buf, 64, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
} else {
MPI_Recv(buf, 64, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &st);
printf("Process %d received %s n", rank, buf);
}
MPI_Finalize();
}
个仆从亳亳 仂弍仄亠仆仂于 仂从舒-仂从舒
int MPI_Send( buf, count, datatype, dest, tag, comm )
void *buf; /* in */
int count, dest, tag; /* in */
MPI_Datatype datatype; /* in */
MPI_Comm comm; /* in */
buf - 舒亟亠 仆舒舒仍舒 弍亠舒 仗仂仍舒亠仄 亟舒仆仆
count - 亳仍仂 仗亠亠仍舒亠仄 仂弍亠从仂于 亳仗舒, 仂仂于亠于ム亠亞仂 datatype
dest - 仆仂仄亠 仗仂亠舒-仗亳亠仄仆亳从舒
tag - 仆亳从舒仍仆亶 亞, 亳亟亠仆亳亳亳ム亳亶 仂仂弍亠仆亳亠
datatype - MPI-亳仗 仗亳仆亳仄舒亠仄 亟舒仆仆
comm - 从仂仄仄仆亳从舒仂
int MPI_Recv( buf, count, datatype, source, tag, comm, status )
void *buf; /* in */
int count, source, tag; /* in */
MPI_Datatype datatype; /* in */
MPI_Comm comm; /* in */
MPI_Status *status; /* out */
buf - 舒亟亠 弍亠舒 亟仍 仗亳亠仄舒 仂仂弍亠仆亳
count - 仄舒从亳仄舒仍仆仂亠 亳仍仂 仂弍亠从仂于 亳仗舒 datatype, 从仂仂仂亠
仄仂亢亠 弍 亰舒仗亳舒仆仂 于 弍亠
source - 仆仂仄亠 仗仂亠舒, 仂 从仂仂仂亞仂 仂亢亳亟舒亠 仂仂弍亠仆亳亠
tag - 仆亳从舒仍仆亶 亞, 亳亟亠仆亳亳亳ム亳亶 仂仂弍亠仆亳亠
datatype - MPI-亳仗 仗亳仆亳仄舒亠仄 亟舒仆仆
comm - 从仂仄仄仆亳从舒仂
status - 舒 亰舒于亠亠仆亳
MPI-仗仂亞舒仄仄舒 亳仍亠仆仆仂亞仂
亳仆亠亞亳仂于舒仆亳
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &r);
MPI_Comm_size(MPI_COMM_WORLD, &p);
if(r == 0)
t = MPI_Wtime();
MPI_Barrier(MPI_COMM_WORLD);
sum = 0.0;
h = (b - a) / n;
for(i = r; i < n; i += p)
sum += f(a + (i + 0.5) * h);
sum *= h;
MPI_Send(&sum, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
sum = 0;
MPI-仗仂亞舒仄仄舒 亳仍亠仆仆仂亞仂
亳仆亠亞亳仂于舒仆亳
if(r == 0) {
double s;
for(i = 0; i < p; i ++) {
MPI_Recv(&s, 1, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &st);
sum += s;
}
t = MPI_Wtime() - t;
printf("Integral value = %lf. Time = %lf sec.n", sum, t);
}
MPI_Finalize();
}
亳亟 仂亠仆
于亰舒亳仄仂亟亠亶于亳亶
MPI_Send 弍仍仂从亳ム舒 仗亠亠仍从舒
仆从亳 于仂亰于舒舒亠 仗舒于仍亠仆亳亠 仂亞亟舒, 从仂亞亟舒
亳仂亟仆亶 弍亠 仄仂亢仆仂 仂于仂弍仂亢亟舒 (.亠. 亟舒仆仆亠
亳仍亳 从仂仗亳仂于舒仆 于 仗仂仄亠亢仂仆亶 亳仍亳
仂仗舒于仍亠仆)
MPI_Bsend 弍亠亳亰仂于舒仆仆舒 仗亠亠仍从舒
仆从亳 于仂亰于舒舒亠 仗舒于仍亠仆亳亠 仂亞亟舒, 从仂亞亟舒
亟舒仆仆亠 从仂仗亳仂于舒仆 于 弍亠, 于亟亠仍磳仄亶
仗仂仍亰仂于舒亠仍亠仄
MPI_Ssend 亳仆仂仆仆舒 仗亠亠仍从舒
仆从亳 于仂亰于舒舒亠 仗舒于仍亠仆亳亠 仂亞亟舒, 从仂亞亟舒
仗仂亠-仗亳亠仄仆亳从 仗亠仗亳仍 从 于仗仂仍仆亠仆亳
仂仂于亠于ム亠亶 仂仗亠舒亳亳 仗亳亠仄舒
MPI_Rsend 亳仆亠舒从亳于仆舒 仗亠亠仍从舒
仗仂于亠亟亠仆亳亠 仆从亳亳 仆亠 仂仗亠亟亠仍亠仆仂, 亠仍亳
仂仂于亠于ム舒 仂仗亠舒亳 仗亳亠仄舒 仆亠 仆舒舒仍舒
于仗仂仍仆亠仆亳 (亟仍 于亠仍亳亠仆亳
仗仂亳亰于仂亟亳亠仍仆仂亳)
亠弍仍仂从亳ム亳亠 仗亠亠仍从亳
 亠亟仆舒亰仆舒亠仆 亟仍
仗亠亠从亳 仂弍仄亠仆仂于
亳 于亳仍亠仆亳亶.
 仗亠舒亳
舒亠仗仍磳 仆舒 亟于亠:
亳仆亳亳舒亳 亳
亰舒于亠亠仆亳亠.
舒于亠亠仆亳亠:
int MPI_Wait (MPI_Request * request, MPI_Status * status)
int MPI_Test(MPI_Request *request, int *flag,
MPI_Status *status)
int MPI_Waitall(int count, MPI_Request array_of_requests[],
MPI_Status array_of_statuses[] )
int MPI_Waitany(int count, MPI_Request array_of_requests[],
int* index, MPI_Status *status )
仂仍仍亠从亳于仆亠 于亰舒亳仄仂亟亠亶于亳
仗仂亠仂于
int MPI_Bcast ( buffer, count, datatype, root,
comm )
void* buffer - 仆舒舒仍仆亶 舒亟亠 弍亠舒 亟仍 仗亠亠亟舒亳
仂弍亠仆亳亶
int count - 亳仍仂 仗亠亠亟舒于舒亠仄 仍亠仄亠仆仂于 亟舒仆仆
MPI_Datatype datatype - 亳仗 仗亠亠亟舒于舒亠仄 亟舒仆仆
int root - 舒仆亞 仗仂亠舒, 仗仂仍舒ム亠亞仂 亟舒仆仆亠
MPI_Comm comm - 从仂仄仄仆亳从舒仂
int MPI_Reduce ( sendbuf, recvbuf, count,
datatype, op, root, comm )
void *sendbuf; 弍亠 仂仗亠舒仆亟仂于
void *recvbuf; 弍亠 仗亳亠仄舒
int count; 亳仍仂 亟舒仆仆
MPI_Datatype datatype; 亳仗 亟舒仆仆
MPI_Op op; 仂仗亠舒亳
int root; 舒仆亞 仗仂亠舒, 仂亟亠亢舒亠亞仂 亠亰仍舒
MPI_Comm comm; 从仂仄仄仆亳从舒仂
op
MPI_MAX 仄舒从亳仄仄
MPI_MIN 仄亳仆亳仄仄
MPI_SUM 仄仄舒
MPI_PROD 仗仂亳亰于亠亟亠仆亳亠
MPI_LAND 仍仂亞亳亠从仂亠 "亳"
MPI_BAND 仗仂弍亳仂于仂亠 "亳"
MPI_LOR 仍仂亞亳亠从仂亠 "亳仍亳"
MPI_BOR 仗仂弍亳仂于仂亠 "亳仍亳"
MPI_LXOR 仍仂亞亳亠从仂亠 亳从仍ム舒ム亠亠 "亳仍亳"
MPI_BXOR 仗仂弍亳仂于仂亠 亳从仍ム舒ム亠亠 "亳仍亳"
亳仍亠仆亳亠 亳仍舒 Pi
#include "mpi.h"
#include <math.h>
int main(argc,argv)
int argc;
char *argv[];
{
int n, myid, numprocs, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x, a;
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
while (1)
{
if (myid == 0) {
printf("Enter the number of intervals: (0 quits) ");
scanf("%d",&n);
}
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if (n == 0) break;
h = 1.0 / (double) n;
sum = 0.0;
for (i = myid + 1; i <= n; i += numprocs) {
x = h * ((double)i - 0.5);
sum += 4.0 / (1.0 + x*x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0,
MPI_COMM_WORLD);
if (myid == 0)
printf("pi is approximately %.16f, Error is %.16fn",
pi, fabs(pi - PI25DT));
}
MPI_Finalize();
仆亠- 亳 亳仆舒-
从仂仄仄仆亳从舒仂
仆舒-
从仂仄仄仆亳从舒仂
仆亠-
从仂仄仄仆亳从舒仂
仆舒-从仂仄仄仆亳从舒仂
仂弍亠亟亳仆ム 仗仂亠
亳亰 仂亟仆仂亶 亞仗仗.
仆亠-从仂仄仄仆亳从舒仂
仗仂亰于仂仍磳 仗亠亠亟舒于舒
亟舒仆仆亠 仄亠亢亟 仗仂亠舒仄亳 亳亰
舒亰仆 亳仆舒-从仂仄仄仆亳从舒仂仂于.
仆亠-从仂仄仄仆亳从舒仂
仆亠 仄仂亞 亳仗仂仍亰仂于舒 于
从仂仍仍亠从亳于仆 于亰舒亳仄仂亟亠亶于亳.
01
2
3
4
1
0
3
2
1
1
舒亰仆舒亠仆亳亠 从仂仄仄仆亳从舒仂仂于
 仂亟亟亠亢从舒 仗舒舒仍仍亠仍仆 弍亳弍仍亳仂亠从.
 仂亟亟亠亢从舒 从仂仍仍亠从亳于仆 仂仗亠舒亳亶 仆舒
舒亳 于亳仍亳亠仍仆仂亞仂 仗仂舒仆于舒.
 仂于亠仆亳亠 仂于仆 舒弍舒从亳亳
仗舒舒仍仍亠仍仆 仗亳仍仂亢亠仆亳亶.
仆仂仄舒亳仂仆仆亠 仆从亳亳 亟仍
舒弍仂  亞仗仗舒仄亳
仗亠亟亠仍亠仆亳亠 舒亰仄亠舒 亞仗仗:
int MPI_Group_size(MPI_Group group, int *size)
group  亞仗仗舒;
size  从舒亰舒亠仍 仆舒 仂弍仍舒 仗舒仄亳 亟仍 亰舒仗亳亳 亳仆仂仄舒亳亳 仂
从仂仍亳亠于亠 仗仂亠仂于 于 亞仗仗亠;
仗亠亟亠仍亠仆亳亠 仆仂仄亠舒 仗仂亠舒, 于仗仂仍仆ム亠亞仂 于亰仂于 仆从亳亳, 于
亞仗仗亠:
int MPI_Group_rank(MPI_Group group, int *rank)
group  亞仗仗舒;
rank  从舒亰舒亠仍 仆舒 仂弍仍舒 仗舒仄亳 亟仍 仂舒仆亠仆亳 仆仂仄亠舒
仗仂亠舒;
舒亰仆仂 亟于 亞仗仗:
int MPI_Group_difference(MPI_Group gr1, MPI_Group
g2, MPI_Group* gr3)
gr1  仗亠于舒 亞仗仗舒;
gr2  于仂舒 亞仗仗舒;
gr3  从舒亰舒亠仍 仆舒 仂弍仍舒 亟仍 仂舒仆亠仆亳
亠亰仍舒舒 仂仗亠舒亳亳;
仗仗舒 gr3 仂舒于仍亠仆舒 亳亰 仗仂亠仂于, 于仂亟亳 于 gr1,
仆仂 仆亠 于仂亟亳 于 gr2, 舒仗仂仍仂亢亠仆仆 于 仂仄 亢亠
仗仂磲从亠, 仂 亳 于 gr1.
亠亠仗仂磲仂亳于舒仆亳亠 ( 于仂亰仄仂亢仆仄 亟舒仍亠仆亳亠仄) 仗仂亠仂于
于 亠于ム亠亶 亞仗仗亠:
int MPI_Group_incl(MPI_Group* group, int n, int*
ranks, MPI_Group* newgroup)
group  亳仂亟仆舒 亞仗仗舒;
n  亳仍仂 仍亠仄亠仆仂于 于 仄舒亳于亠 ranks;
ranks  仄舒亳于 仆仂仄亠仂于 仗仂亠仂于, 亳亰 从仂仂
弍亟亠 仂亰亟舒仆舒 仆仂于舒 亞仗仗舒;
newgroup  从舒亰舒亠仍 仆舒 仂弍仍舒 亟仍 仂舒仆亠仆亳
亠亰仍舒舒 仂仗亠舒亳亳;
弌仂亰亟舒仆仆舒 亞仗仗舒 newgroup 仂亟亠亢亳 仍亠仄亠仆 亞仗仗
group, 仗亠亠亳仍亠仆仆亠 于 仄舒亳于亠 ranks: i-亶 仗仂亠
仂亰亟舒于舒亠仄仂亶 亞仗仗 newgroup 仂于仗舒亟舒亠  仗仂亠仂仄,
亳仄亠ム亳仄 仆仂仄亠 ranks[i] 于 亞仗仗亠 group.
弌亳亠仄舒 亳仗仂于 仂仂弍亠仆亳亶 MPI
丐亳仗 于 MPI
乘 丐乘
MPI_CHAR
MPI_SHORT
MPI_INT
MPI_LONG
MPI_UNSIGNED_CHAR
MPI_UNSIGNED_SHORT
MPI_UNSIGNED
MPI_UNSIGNED_LONG
MPI_FLOAT
MPI_DOUBLE
MPI_LONG_DOUBLE
乘 丐乘
MPI_TYPE_CONTIGUOUS
MPI_TYPE_VECTOR
MPI_TYPE_HVECTOR
MPI_TYPE_INDEXED
MPI_TYPE_HINDEXED
MPI_TYPE_STRUCT
MPI_PACKED
乘 丐乘
亳仗 MPI 亳仗 弌亳
MPI_CHAR signed char
MPI_SHORT signed short int
MPI_INT signed int
MPI_LONG signed long int
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short
MPI_UNSIGNED unsigned int
MPI_UNSIGNED_LONG unsigned long int
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
舒亰仆舒亠仆亳亠 仗仂亳亰于仂亟仆
亳仗仂于
 仗亠亠仍从舒 亟舒仆仆, 舒仗仂仍仂亢亠仆仆 于
仆亠仄亠亢仆 仂弍仍舒 仗舒仄亳 于 仂亟仆仂仄
仂仂弍亠仆亳亳;
 仗亠亠仍从舒 舒亰仆仂亳仗仆 亟舒仆仆 于 仂亟仆仂仄
仂仂弍亠仆亳亳;
 仂弍仍亠亞亠仆亳亠 仗仂仆亳仄舒仆亳 仗仂亞舒仄仄;
丱丐乘 丿 
MPI-丱
乘 丿
 亳弍从亳 仗仂仍亠亟仂于舒亠仍仆 仗仂亞舒仄仄.
 亳弍从亳 仆亠仂仂于亠于亳 亳仗仂于.
 亳弍从亳 舒弍仂  MPI-仂弍亠从舒仄亳.
 亰舒亳仄仆亠 弍仍仂从亳仂于从亳.
 亠亟亠亠仄亳仆亳亰仄.
亠亟亠亠仄亳仆亳亰仄 亰舒 亠 舒亰仆亳 于
仂仆仂亳亠仍仆 从仂仂 仗仂亠仂于 (race
condition)
Deadlock
if(rank == 0) {
MPI_Ssend( 1 )
MPI_Recv(1)
} else {
MPI_Ssend( 0 )
MPI_Recv(0)
}
束亠亟亠亠仄亳仆亳仂于舒仆仆亶損
deadlock
if(rank == 0) {
MPI_Send( 1 )
MPI_Recv(1)
} else {
MPI_Send( 0 )
MPI_Recv(0)
}
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10

More Related Content

What's hot (18)

弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)
弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)
弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)
Mikhail Kurnosov
亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆
亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆
亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆
Alexey Paznikov
亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive
亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive
亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive
Technopark
Optimization of Automata-Based Programs by means of Requirements Transformati...
Optimization of Automata-Based Programs by means of Requirements Transformati...Optimization of Automata-Based Programs by means of Requirements Transformati...
Optimization of Automata-Based Programs by means of Requirements Transformati...
Iosif Itkin
仂亳仂于从舒 仍亳礌亳礆亳
仂亳仂于从舒 仍亳礌亳礆亳仂亳仂于从舒 仍亳礌亳礆亳
仂亳仂于从舒 仍亳礌亳礆亳
Dmitry Protopopov
C++ 亠仂亳
C++ 亠仂亳C++ 亠仂亳
C++ 亠仂亳
tank1975
丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从
丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从
丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从
corehard_by
舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆
舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆
舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆
Sergey Vasilyev
丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆
丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆
丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆
Sergey Staroletov
丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...
丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...
丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...
Alexey Paznikov
舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019
舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019
舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019
corehard_by
亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)
亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)
亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)
Technopark
弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳
弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳
弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳
mcroitor
弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)
弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)
弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)
Mikhail Kurnosov
亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)
亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)
亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)
Mikhail Kurnosov
丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
Alexey Paznikov
磶从 仗仂亞舒仄亳仂于舒仆亳
磶从 仗仂亞舒仄亳仂于舒仆亳磶从 仗仂亞舒仄亳仂于舒仆亳
磶从 仗仂亞舒仄亳仂于舒仆亳
Olegmingalev1997
弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)
弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)
弌亠仄亳仆舒 9. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 2)
Mikhail Kurnosov
亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆
亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆
亠从亳 1. 仆仂于仆亠 仗仂仆亳 舒仆亟舒舒 MPI. 亳亠亠仆亳仂于舒仆仆亠 仂弍仄亠仆
Alexey Paznikov
亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive
亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive
亠从亳 7. 于亠亟亠仆亳亠 于 Pig 亳 Hive
Technopark
Optimization of Automata-Based Programs by means of Requirements Transformati...
Optimization of Automata-Based Programs by means of Requirements Transformati...Optimization of Automata-Based Programs by means of Requirements Transformati...
Optimization of Automata-Based Programs by means of Requirements Transformati...
Iosif Itkin
仂亳仂于从舒 仍亳礌亳礆亳
仂亳仂于从舒 仍亳礌亳礆亳仂亳仂于从舒 仍亳礌亳礆亳
仂亳仂于从舒 仍亳礌亳礆亳
Dmitry Protopopov
C++ 亠仂亳
C++ 亠仂亳C++ 亠仂亳
C++ 亠仂亳
tank1975
丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从
丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从
丕从仂磳仄 弍仂从 弌++ 仗仂亠从仂于. 舒从亳从舒 亳仗仂仍亰仂于舒仆亳 unity-弍仂仂从
corehard_by
舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆
舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆
舒舒仍仍亠仍仆亠 舒仍亞仂亳仄 仂弍舒弍仂从亳 亟舒仆仆
Sergey Vasilyev
丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆
丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆
丐亠仂亳 磶从仂于 仗仂亞舒仄仄亳仂于舒仆亳 仆亠从仂仂亠 仍舒亶亟 从 仍亠从亳礆
Sergey Staroletov
丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...
丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...
丐 - 于亠仆舒 2015 - 亠从亳 2. POSIX Threads. 仆仂于仆亠 仗仂仆亳 仄仆仂亞仂仗仂仂仆仂亞仂 仗...
Alexey Paznikov
舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019
舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019
舒从亳于舒亠仄 亠从. 于舒仆 仂仆仂仄舒亠于. CoreHard Spring 2019
corehard_by
亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)
亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)
亠从亳 4. MapReduce 于 Hadoop (于于亠亟亠仆亳亠)
Technopark
弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳
弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳
弍亳弍仍亳仂亠从亳 仗仂亞舒仄仄亳仂于舒仆亳
mcroitor
弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)
弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)
弌亠仄亳仆舒 6. 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 OpenMP (舒 6)
Mikhail Kurnosov
亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)
亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)
亠从亳 7: 仆仂亞仂仗仂仂仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠: 舒 3 (OpenMP)
Mikhail Kurnosov
丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
丐 - 于亠仆舒 2015 - 亠从亳 4. 丿舒弍仍仂仆 仄仆仂亞仂仗仂仂仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
Alexey Paznikov
磶从 仗仂亞舒仄亳仂于舒仆亳
磶从 仗仂亞舒仄亳仂于舒仆亳磶从 仗仂亞舒仄亳仂于舒仆亳
磶从 仗仂亞舒仄亳仂于舒仆亳
Olegmingalev1997

Similar to 20140420 parallel programming_kalishenko_lecture10 (20)

Tarantool Modules, Tarantool Meetup 2016-08-25
Tarantool Modules, Tarantool Meetup 2016-08-25Tarantool Modules, Tarantool Meetup 2016-08-25
Tarantool Modules, Tarantool Meetup 2016-08-25
Roman Tsisyk
弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)
弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)
弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)
Mikhail Kurnosov
弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)
弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)
弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)
Mikhail Kurnosov
于亞亠仆亳亶 从仂 仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...
于亞亠仆亳亶 从仂  仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...于亞亠仆亳亶 从仂  仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...
于亞亠仆亳亶 从仂 仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...
Yandex
弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)
弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)
弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)
Mikhail Kurnosov
亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP
Mikhail Kurnosov
亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
Alexander Petrov
Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒
Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒
Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒
Anastasia Lubennikova
MPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPI
MPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPIMPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPI
MPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPI
Mikhail Kurnosov
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
Michael Karpov
亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP
Mikhail Kurnosov
Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于
Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于
Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于
Lviv Startup Club
亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)
亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)
亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)
Mikhail Kurnosov
丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒
丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒
丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒
Tatyanazaxarova
C++ 亠仂亳
C++ 亠仂亳C++ 亠仂亳
C++ 亠仂亳
tank1975
C++ 亠仂亳
C++ 亠仂亳C++ 亠仂亳
C++ 亠仂亳
tank1975
舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo 仆仂仆 仂于亞舒仍
舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo  仆仂仆 仂于亞舒仍舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo  仆仂仆 仂于亞舒仍
舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo 仆仂仆 仂于亞舒仍
Badoo Development
Netmap (by luigi rizzo) 仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...
Netmap (by luigi rizzo)   仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...Netmap (by luigi rizzo)   仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...
Netmap (by luigi rizzo) 仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...
Ontico
Tarantool Modules, Tarantool Meetup 2016-08-25
Tarantool Modules, Tarantool Meetup 2016-08-25Tarantool Modules, Tarantool Meetup 2016-08-25
Tarantool Modules, Tarantool Meetup 2016-08-25
Roman Tsisyk
弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)
弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)
弌亠仄亳仆舒 11. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 4)
Mikhail Kurnosov
弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)
弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)
弌亠仄亳仆舒 10. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 3)
Mikhail Kurnosov
于亞亠仆亳亶 从仂 仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...
于亞亠仆亳亶 从仂  仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...于亞亠仆亳亶 从仂  仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...
于亞亠仆亳亶 从仂 仗 于仆亠亟亠仆亳 亠仆仂仍仂亞亳亶 仗舒舒仍仍亠仍仆 于亳仍亠仆亳亶 亟仍 仗仂于...
Yandex
弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)
弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)
弌亠仄亳仆舒 8. 舒舒仍仍亠仍仆仂亠 仗仂亞舒仄仄亳仂于舒仆亳亠 仆舒 MPI (舒 1)
Mikhail Kurnosov
亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP
Mikhail Kurnosov
亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
亳仆仄亠仆 仗舒舒仍仍亠仍仆仂亞仂 仗仂亞舒仄仄亳仂于舒仆亳
Alexander Petrov
Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒
Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒
Hacking PostgreSQL. 弍亰仂 亳仂亟仆仂亞仂 从仂亟舒
Anastasia Lubennikova
MPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPI
MPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPIMPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPI
MPIPerf: 仗舒从亠 仂亠仆从亳 亠从亳于仆仂亳 从仂仄仄仆亳从舒亳仂仆仆 仆从亳亶 舒仆亟舒舒 MPI
Mikhail Kurnosov
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
Michael Karpov
亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP亠从亳 6. 弌舒仆亟舒 OpenMP
亠从亳 6. 弌舒仆亟舒 OpenMP
Mikhail Kurnosov
Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于
Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于
Lviv MDDay 2014. 仆亟舒仆 亟舒仆仂于 仆仆亶 于 iOS 亟仂亟舒从于
Lviv Startup Club
亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)
亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)
亠从亳 7: 个亳弍仂仆舒亳亠于 从亳 (Fibonacci heaps)
Mikhail Kurnosov
丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒
丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒
丕仂从 13. 舒亠仆 5. 亟亠仆舒 舒亳仄亠亳从舒
Tatyanazaxarova
C++ 亠仂亳
C++ 亠仂亳C++ 亠仂亳
C++ 亠仂亳
tank1975
C++ 亠仂亳
C++ 亠仂亳C++ 亠仂亳
C++ 亠仂亳
tank1975
舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo 仆仂仆 仂于亞舒仍
舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo  仆仂仆 仂于亞舒仍舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo  仆仂仆 仂于亞舒仍
舒从 仄 亟亠仍舒亠仄 仄仂亟仍亳 PHP 于 Badoo 仆仂仆 仂于亞舒仍
Badoo Development
Netmap (by luigi rizzo) 仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...
Netmap (by luigi rizzo)   仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...Netmap (by luigi rizzo)   仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...
Netmap (by luigi rizzo) 仗仂仂亶 亳 亟仂弍仆亶 opensource 亠亶仄于仂从 亟仍 仂弍舒弍仂从...
Ontico

More from Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
Computer Science Club
Computer Vision
Computer VisionComputer Vision
Computer Vision
Computer Science Club
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
Computer Science Club
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
Computer Science Club
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
Computer Science Club
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
Computer Science Club
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
Computer Science Club
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
Computer Science Club
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
Computer Science Club
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
Computer Science Club
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
Computer Science Club
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
Computer Science Club
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
Computer Science Club
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
Computer Science Club
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
Computer Science Club
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
Computer Science Club
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
Computer Science Club
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
Computer Science Club

20140420 parallel programming_kalishenko_lecture10

  • 2. 仂亳 MPI 弌舒仆亟舒 MPI 1.0 1995 亞仂亟, MPI 2.0 1998 亞仂亟. 仗亠亟亠仍磳 API (于舒亳舒仆 亟仍 弌亳, C++, Fortran, Java).
  • 3. 束仂仄仗仍亠从 仗仂舒于从亳損 MPI 亳弍仍亳仂亠从舒. 弌亠亟于舒 从仂仄仗亳仍亳亳 亳 亰舒仗从舒 仗亳仍仂亢亠仆亳.
  • 4. SPMD-仄仂亟亠仍. 0 1 2 3 舒亰仆亠 仗仂亠 于仗仂仍仆ム 舒亰仆亠 舒亳 仂亟仆仂亞仂 亳 仂亞仂 亢亠 从仂亟舒.
  • 5. 弌弍仂从舒 MPI-仗亳仍仂亢亠仆亳. 弌弍仂从舒 MPI-仗亳仍仂亢亠仆亳 仂亠于仍磳 仗仂仄仂 仗亠亳舒仍仆仂亶 亳仍亳. 仍舒亠 弌亳 mpicc. 亳仄亠: mpicc o mpihello mpihello.c 舒仗从 MPI-仗亳仍仂亢亠仆亳 仂亠于仍磳 仗仂仄仂 从仂仄舒仆亟 mpirun. mpirun np 4 mpihello
  • 6. 个仆从亳亳 亳仆亳亳舒仍亳亰舒亳亳 亳 亰舒于亠亠仆亳 舒弍仂. int MPI_Init(int* argc,char*** argv) argc 从舒亰舒亠仍 仆舒 亠亳从 舒亞仄亠仆仂于 从仂仄舒仆亟仆仂亶 仂从亳 argv 从舒亰舒亠仍 仆舒 仗亳仂从 舒亞仄亠仆仂于 int MPI_Finalize()
  • 7. 丐仂亢亠 仗仂舒 MPI-仗仂亞舒仄仄舒 #include <mpi.h> #include <stdio.h> int main( int argc, char *argv[] ) { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "I am %d of %dn", rank, size ); MPI_Finalize(); return 0; }
  • 8. 个仆从亳亳 仂仗亠亟亠仍亠仆亳 舒仆亞舒 亳 亳仍舒 仗仂亠仂于. int MPI_Comm_size (MPI_Comm comm, int* size ) comm - 从仂仄仄仆亳从舒仂 size 亳仍仂 仗仂亠仂于 int MPI_Comm_rank(MPI_Comm comm, int* rank) comm 从仂仄仄仆亳从舒仂 rank 舒仆亞 仗仂亠舒
  • 9. 亳仄亠 仗仂亠亶亠亶 仗亠亠仍从亳 #include <stdio.h> #include <mpi.h> main(int argc, char* argv[]) { int rank; MPI_Status st; char buf[64]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if(rank == 0) { sprintf(buf, "Hello from processor 0"); MPI_Send(buf, 64, MPI_CHAR, 1, 0, MPI_COMM_WORLD); } else { MPI_Recv(buf, 64, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &st); printf("Process %d received %s n", rank, buf); } MPI_Finalize(); }
  • 10. 个仆从亳亳 仂弍仄亠仆仂于 仂从舒-仂从舒 int MPI_Send( buf, count, datatype, dest, tag, comm ) void *buf; /* in */ int count, dest, tag; /* in */ MPI_Datatype datatype; /* in */ MPI_Comm comm; /* in */ buf - 舒亟亠 仆舒舒仍舒 弍亠舒 仗仂仍舒亠仄 亟舒仆仆 count - 亳仍仂 仗亠亠仍舒亠仄 仂弍亠从仂于 亳仗舒, 仂仂于亠于ム亠亞仂 datatype dest - 仆仂仄亠 仗仂亠舒-仗亳亠仄仆亳从舒 tag - 仆亳从舒仍仆亶 亞, 亳亟亠仆亳亳亳ム亳亶 仂仂弍亠仆亳亠 datatype - MPI-亳仗 仗亳仆亳仄舒亠仄 亟舒仆仆 comm - 从仂仄仄仆亳从舒仂
  • 11. int MPI_Recv( buf, count, datatype, source, tag, comm, status ) void *buf; /* in */ int count, source, tag; /* in */ MPI_Datatype datatype; /* in */ MPI_Comm comm; /* in */ MPI_Status *status; /* out */ buf - 舒亟亠 弍亠舒 亟仍 仗亳亠仄舒 仂仂弍亠仆亳 count - 仄舒从亳仄舒仍仆仂亠 亳仍仂 仂弍亠从仂于 亳仗舒 datatype, 从仂仂仂亠 仄仂亢亠 弍 亰舒仗亳舒仆仂 于 弍亠 source - 仆仂仄亠 仗仂亠舒, 仂 从仂仂仂亞仂 仂亢亳亟舒亠 仂仂弍亠仆亳亠 tag - 仆亳从舒仍仆亶 亞, 亳亟亠仆亳亳亳ム亳亶 仂仂弍亠仆亳亠 datatype - MPI-亳仗 仗亳仆亳仄舒亠仄 亟舒仆仆 comm - 从仂仄仄仆亳从舒仂 status - 舒 亰舒于亠亠仆亳
  • 12. MPI-仗仂亞舒仄仄舒 亳仍亠仆仆仂亞仂 亳仆亠亞亳仂于舒仆亳 MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &r); MPI_Comm_size(MPI_COMM_WORLD, &p); if(r == 0) t = MPI_Wtime(); MPI_Barrier(MPI_COMM_WORLD); sum = 0.0; h = (b - a) / n; for(i = r; i < n; i += p) sum += f(a + (i + 0.5) * h); sum *= h; MPI_Send(&sum, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD); sum = 0;
  • 13. MPI-仗仂亞舒仄仄舒 亳仍亠仆仆仂亞仂 亳仆亠亞亳仂于舒仆亳 if(r == 0) { double s; for(i = 0; i < p; i ++) { MPI_Recv(&s, 1, MPI_DOUBLE, i, 0, MPI_COMM_WORLD, &st); sum += s; } t = MPI_Wtime() - t; printf("Integral value = %lf. Time = %lf sec.n", sum, t); } MPI_Finalize(); }
  • 14. 亳亟 仂亠仆 于亰舒亳仄仂亟亠亶于亳亶 MPI_Send 弍仍仂从亳ム舒 仗亠亠仍从舒 仆从亳 于仂亰于舒舒亠 仗舒于仍亠仆亳亠 仂亞亟舒, 从仂亞亟舒 亳仂亟仆亶 弍亠 仄仂亢仆仂 仂于仂弍仂亢亟舒 (.亠. 亟舒仆仆亠 亳仍亳 从仂仗亳仂于舒仆 于 仗仂仄亠亢仂仆亶 亳仍亳 仂仗舒于仍亠仆) MPI_Bsend 弍亠亳亰仂于舒仆仆舒 仗亠亠仍从舒 仆从亳 于仂亰于舒舒亠 仗舒于仍亠仆亳亠 仂亞亟舒, 从仂亞亟舒 亟舒仆仆亠 从仂仗亳仂于舒仆 于 弍亠, 于亟亠仍磳仄亶 仗仂仍亰仂于舒亠仍亠仄
  • 15. MPI_Ssend 亳仆仂仆仆舒 仗亠亠仍从舒 仆从亳 于仂亰于舒舒亠 仗舒于仍亠仆亳亠 仂亞亟舒, 从仂亞亟舒 仗仂亠-仗亳亠仄仆亳从 仗亠仗亳仍 从 于仗仂仍仆亠仆亳 仂仂于亠于ム亠亶 仂仗亠舒亳亳 仗亳亠仄舒 MPI_Rsend 亳仆亠舒从亳于仆舒 仗亠亠仍从舒 仗仂于亠亟亠仆亳亠 仆从亳亳 仆亠 仂仗亠亟亠仍亠仆仂, 亠仍亳 仂仂于亠于ム舒 仂仗亠舒亳 仗亳亠仄舒 仆亠 仆舒舒仍舒 于仗仂仍仆亠仆亳 (亟仍 于亠仍亳亠仆亳 仗仂亳亰于仂亟亳亠仍仆仂亳)
  • 16. 亠弍仍仂从亳ム亳亠 仗亠亠仍从亳 亠亟仆舒亰仆舒亠仆 亟仍 仗亠亠从亳 仂弍仄亠仆仂于 亳 于亳仍亠仆亳亶. 仗亠舒亳 舒亠仗仍磳 仆舒 亟于亠: 亳仆亳亳舒亳 亳 亰舒于亠亠仆亳亠.
  • 17. 舒于亠亠仆亳亠: int MPI_Wait (MPI_Request * request, MPI_Status * status) int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status) int MPI_Waitall(int count, MPI_Request array_of_requests[], MPI_Status array_of_statuses[] ) int MPI_Waitany(int count, MPI_Request array_of_requests[], int* index, MPI_Status *status )
  • 19. int MPI_Bcast ( buffer, count, datatype, root, comm ) void* buffer - 仆舒舒仍仆亶 舒亟亠 弍亠舒 亟仍 仗亠亠亟舒亳 仂弍亠仆亳亶 int count - 亳仍仂 仗亠亠亟舒于舒亠仄 仍亠仄亠仆仂于 亟舒仆仆 MPI_Datatype datatype - 亳仗 仗亠亠亟舒于舒亠仄 亟舒仆仆 int root - 舒仆亞 仗仂亠舒, 仗仂仍舒ム亠亞仂 亟舒仆仆亠 MPI_Comm comm - 从仂仄仄仆亳从舒仂
  • 20. int MPI_Reduce ( sendbuf, recvbuf, count, datatype, op, root, comm ) void *sendbuf; 弍亠 仂仗亠舒仆亟仂于 void *recvbuf; 弍亠 仗亳亠仄舒 int count; 亳仍仂 亟舒仆仆 MPI_Datatype datatype; 亳仗 亟舒仆仆 MPI_Op op; 仂仗亠舒亳 int root; 舒仆亞 仗仂亠舒, 仂亟亠亢舒亠亞仂 亠亰仍舒 MPI_Comm comm; 从仂仄仄仆亳从舒仂 op
  • 21. MPI_MAX 仄舒从亳仄仄 MPI_MIN 仄亳仆亳仄仄 MPI_SUM 仄仄舒 MPI_PROD 仗仂亳亰于亠亟亠仆亳亠 MPI_LAND 仍仂亞亳亠从仂亠 "亳" MPI_BAND 仗仂弍亳仂于仂亠 "亳" MPI_LOR 仍仂亞亳亠从仂亠 "亳仍亳" MPI_BOR 仗仂弍亳仂于仂亠 "亳仍亳" MPI_LXOR 仍仂亞亳亠从仂亠 亳从仍ム舒ム亠亠 "亳仍亳" MPI_BXOR 仗仂弍亳仂于仂亠 亳从仍ム舒ム亠亠 "亳仍亳"
  • 22. 亳仍亠仆亳亠 亳仍舒 Pi #include "mpi.h" #include <math.h> int main(argc,argv) int argc; char *argv[]; { int n, myid, numprocs, i; double PI25DT = 3.141592653589793238462643; double mypi, pi, h, sum, x, a; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid);
  • 23. while (1) { if (myid == 0) { printf("Enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += 4.0 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %.16f, Error is %.16fn", pi, fabs(pi - PI25DT)); } MPI_Finalize();
  • 24. 仆亠- 亳 亳仆舒- 从仂仄仄仆亳从舒仂 仆舒- 从仂仄仄仆亳从舒仂 仆亠- 从仂仄仄仆亳从舒仂 仆舒-从仂仄仄仆亳从舒仂 仂弍亠亟亳仆ム 仗仂亠 亳亰 仂亟仆仂亶 亞仗仗. 仆亠-从仂仄仄仆亳从舒仂 仗仂亰于仂仍磳 仗亠亠亟舒于舒 亟舒仆仆亠 仄亠亢亟 仗仂亠舒仄亳 亳亰 舒亰仆 亳仆舒-从仂仄仄仆亳从舒仂仂于. 仆亠-从仂仄仄仆亳从舒仂 仆亠 仄仂亞 亳仗仂仍亰仂于舒 于 从仂仍仍亠从亳于仆 于亰舒亳仄仂亟亠亶于亳. 01 2 3 4 1 0 3 2 1 1
  • 25. 舒亰仆舒亠仆亳亠 从仂仄仄仆亳从舒仂仂于 仂亟亟亠亢从舒 仗舒舒仍仍亠仍仆 弍亳弍仍亳仂亠从. 仂亟亟亠亢从舒 从仂仍仍亠从亳于仆 仂仗亠舒亳亶 仆舒 舒亳 于亳仍亳亠仍仆仂亞仂 仗仂舒仆于舒. 仂于亠仆亳亠 仂于仆 舒弍舒从亳亳 仗舒舒仍仍亠仍仆 仗亳仍仂亢亠仆亳亶.
  • 26. 仆仂仄舒亳仂仆仆亠 仆从亳亳 亟仍 舒弍仂 亞仗仗舒仄亳 仗亠亟亠仍亠仆亳亠 舒亰仄亠舒 亞仗仗: int MPI_Group_size(MPI_Group group, int *size) group 亞仗仗舒; size 从舒亰舒亠仍 仆舒 仂弍仍舒 仗舒仄亳 亟仍 亰舒仗亳亳 亳仆仂仄舒亳亳 仂 从仂仍亳亠于亠 仗仂亠仂于 于 亞仗仗亠; 仗亠亟亠仍亠仆亳亠 仆仂仄亠舒 仗仂亠舒, 于仗仂仍仆ム亠亞仂 于亰仂于 仆从亳亳, 于 亞仗仗亠: int MPI_Group_rank(MPI_Group group, int *rank) group 亞仗仗舒; rank 从舒亰舒亠仍 仆舒 仂弍仍舒 仗舒仄亳 亟仍 仂舒仆亠仆亳 仆仂仄亠舒 仗仂亠舒;
  • 27. 舒亰仆仂 亟于 亞仗仗: int MPI_Group_difference(MPI_Group gr1, MPI_Group g2, MPI_Group* gr3) gr1 仗亠于舒 亞仗仗舒; gr2 于仂舒 亞仗仗舒; gr3 从舒亰舒亠仍 仆舒 仂弍仍舒 亟仍 仂舒仆亠仆亳 亠亰仍舒舒 仂仗亠舒亳亳; 仗仗舒 gr3 仂舒于仍亠仆舒 亳亰 仗仂亠仂于, 于仂亟亳 于 gr1, 仆仂 仆亠 于仂亟亳 于 gr2, 舒仗仂仍仂亢亠仆仆 于 仂仄 亢亠 仗仂磲从亠, 仂 亳 于 gr1.
  • 28. 亠亠仗仂磲仂亳于舒仆亳亠 ( 于仂亰仄仂亢仆仄 亟舒仍亠仆亳亠仄) 仗仂亠仂于 于 亠于ム亠亶 亞仗仗亠: int MPI_Group_incl(MPI_Group* group, int n, int* ranks, MPI_Group* newgroup) group 亳仂亟仆舒 亞仗仗舒; n 亳仍仂 仍亠仄亠仆仂于 于 仄舒亳于亠 ranks; ranks 仄舒亳于 仆仂仄亠仂于 仗仂亠仂于, 亳亰 从仂仂 弍亟亠 仂亰亟舒仆舒 仆仂于舒 亞仗仗舒; newgroup 从舒亰舒亠仍 仆舒 仂弍仍舒 亟仍 仂舒仆亠仆亳 亠亰仍舒舒 仂仗亠舒亳亳; 弌仂亰亟舒仆仆舒 亞仗仗舒 newgroup 仂亟亠亢亳 仍亠仄亠仆 亞仗仗 group, 仗亠亠亳仍亠仆仆亠 于 仄舒亳于亠 ranks: i-亶 仗仂亠 仂亰亟舒于舒亠仄仂亶 亞仗仗 newgroup 仂于仗舒亟舒亠 仗仂亠仂仄, 亳仄亠ム亳仄 仆仂仄亠 ranks[i] 于 亞仗仗亠 group.
  • 30. 丐亳仗 于 MPI 乘 丐乘 MPI_CHAR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNED_CHAR MPI_UNSIGNED_SHORT MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_FLOAT MPI_DOUBLE MPI_LONG_DOUBLE 乘 丐乘 MPI_TYPE_CONTIGUOUS MPI_TYPE_VECTOR MPI_TYPE_HVECTOR MPI_TYPE_INDEXED MPI_TYPE_HINDEXED MPI_TYPE_STRUCT MPI_PACKED
  • 31. 乘 丐乘 亳仗 MPI 亳仗 弌亳 MPI_CHAR signed char MPI_SHORT signed short int MPI_INT signed int MPI_LONG signed long int MPI_UNSIGNED_CHAR unsigned char MPI_UNSIGNED_SHORT unsigned short MPI_UNSIGNED unsigned int MPI_UNSIGNED_LONG unsigned long int MPI_FLOAT float MPI_DOUBLE double MPI_LONG_DOUBLE long double
  • 32. 舒亰仆舒亠仆亳亠 仗仂亳亰于仂亟仆 亳仗仂于 仗亠亠仍从舒 亟舒仆仆, 舒仗仂仍仂亢亠仆仆 于 仆亠仄亠亢仆 仂弍仍舒 仗舒仄亳 于 仂亟仆仂仄 仂仂弍亠仆亳亳; 仗亠亠仍从舒 舒亰仆仂亳仗仆 亟舒仆仆 于 仂亟仆仂仄 仂仂弍亠仆亳亳; 仂弍仍亠亞亠仆亳亠 仗仂仆亳仄舒仆亳 仗仂亞舒仄仄;
  • 34. 乘 丿 亳弍从亳 仗仂仍亠亟仂于舒亠仍仆 仗仂亞舒仄仄. 亳弍从亳 仆亠仂仂于亠于亳 亳仗仂于. 亳弍从亳 舒弍仂 MPI-仂弍亠从舒仄亳. 亰舒亳仄仆亠 弍仍仂从亳仂于从亳. 亠亟亠亠仄亳仆亳亰仄.
  • 35. 亠亟亠亠仄亳仆亳亰仄 亰舒 亠 舒亰仆亳 于 仂仆仂亳亠仍仆 从仂仂 仗仂亠仂于 (race condition)
  • 36. Deadlock if(rank == 0) { MPI_Ssend( 1 ) MPI_Recv(1) } else { MPI_Ssend( 0 ) MPI_Recv(0) }
  • 37. 束亠亟亠亠仄亳仆亳仂于舒仆仆亶損 deadlock if(rank == 0) { MPI_Send( 1 ) MPI_Recv(1) } else { MPI_Send( 0 ) MPI_Recv(0) }