mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-25 22:38:04 +02:00
MPI
This commit is contained in:
parent
c2db4122e7
commit
deea4832fe
7 changed files with 104 additions and 5 deletions
20
documents/Programmierparadigmen/scripts/mpi/for-example.c
Normal file
20
documents/Programmierparadigmen/scripts/mpi/for-example.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
#include <stdio.h>
|
||||
#include <mpi.h>
|
||||
int main (int argc, char** args) {
|
||||
int size, i;
|
||||
int myrank;
|
||||
MPI_Init(&argc, &args);
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &size);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
|
||||
|
||||
for (i=0; i<size; i++) {
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
if (i == myrank) {
|
||||
printf("Hello World, I have rank %d out of %d.\n",
|
||||
myrank, size);
|
||||
}
|
||||
}
|
||||
|
||||
MPI_Finalize();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
#include "mpi.h"
|
||||
|
||||
int msglen, again=1;
|
||||
void *buf;
|
||||
MPI_Datatype datatype
|
||||
MPI_Comm comm;
|
||||
MPI_Status status;
|
||||
|
||||
...
|
||||
while (again) {
|
||||
MPI_Probe(ROOT, MPI_ANY_TAG, comm, &status);
|
||||
MPI_Get_count(&status, datatype, &msglen);
|
||||
buf=malloc(msglen*sizeof(int));
|
||||
MPI_Recv(buf, msglen, datatype, status.MPI_SOURCE,
|
||||
status.MPI_TAG, comm, &status);
|
||||
...
|
||||
}
|
||||
...
|
|
@ -0,0 +1,3 @@
|
|||
int MPI_Recv(void *buf, int count,
|
||||
MPI_Datatype datatype, int source, int tag,
|
||||
MPI_Comm comm, MPI_Status *status)
|
|
@ -0,0 +1,18 @@
|
|||
#include "mpi.h"
|
||||
...
|
||||
int signal, i, numprogs, me;
|
||||
MPI_Status stat;
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &me);
|
||||
MPI_Comm_size(MPI_COMM_WORLD,
|
||||
&numprocs);
|
||||
if (me==ROOT) {
|
||||
...
|
||||
for (i=1; i<numprocs; i++) {
|
||||
MPI_Send(&signal, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
|
||||
}
|
||||
...
|
||||
else {
|
||||
MPI_Recv(&sig, 1, MPI_INT, ROOT, MPI_ANY_TAG,
|
||||
MPI_COMM_WORLD, &stat);
|
||||
...
|
||||
}
|
3
documents/Programmierparadigmen/scripts/mpi/mpi-send.c
Normal file
3
documents/Programmierparadigmen/scripts/mpi/mpi-send.c
Normal file
|
@ -0,0 +1,3 @@
|
|||
int MPI_Send(void *buf, int count,
|
||||
MPI_Datatype datatype, int dest,
|
||||
int tag, MPI_Comm comm)
|
Loading…
Add table
Add a link
Reference in a new issue