Codici Incontro 2
parent
cb6e4e3ef3
commit
298d4dc7d9
@ -0,0 +1,19 @@
|
|||||||
|
MPICC = mpicc #The wrapper for the compiler
|
||||||
|
CFLAGS += -g #Useful for debug symbols
|
||||||
|
|
||||||
|
all: helloworld hamlet easysendrecv nonblockingsendrecv
|
||||||
|
|
||||||
|
helloworld: helloworld.c
|
||||||
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
hamlet: hamlet.c
|
||||||
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
easysendrecv: easysendrecv.c
|
||||||
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
nonblockingsendrecv: nonblockingsendrecv.c
|
||||||
|
$(MPICC) $(CFLAGS) $(LDFLAGS) $? $(LDLIBS) -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f helloworld hamlet easysendrecv nonblockingsendrecv
|
@ -0,0 +1,20 @@
|
|||||||
|
#include "mpi.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
int main( int argc, char **argv){
|
||||||
|
char message[20];
|
||||||
|
int myrank;
|
||||||
|
MPI_Status status;
|
||||||
|
MPI_Init( &argc, &argv );
|
||||||
|
MPI_Comm_rank( MPI_COMM_WORLD, &myrank );
|
||||||
|
if (myrank == 0){ /* code for process zero */
|
||||||
|
strcpy(message,"Hello, there");
|
||||||
|
MPI_Send(message, strlen(message)+1, MPI_CHAR, 1, 99, MPI_COMM_WORLD);
|
||||||
|
}
|
||||||
|
else if (myrank == 1){ /* code for process one */
|
||||||
|
MPI_Recv(message, 20, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status);
|
||||||
|
printf("received :%s:\n", message);
|
||||||
|
}
|
||||||
|
MPI_Finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
#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( "Hello world! I'm process %d of %d\n",rank, size );
|
||||||
|
MPI_Finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
#include "mpi.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
MPI_Init( &argc, &argv);
|
||||||
|
printf("Hello, world!\n");
|
||||||
|
MPI_Finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#SBATCH --job-name=helloworld
|
||||||
|
#SBATCH --nodes=1
|
||||||
|
#SBATCH --ntasks=6
|
||||||
|
#SBATCH --time=00:05:00
|
||||||
|
#SBATCH -o ./%x.%j.out
|
||||||
|
#SBATCH -e ./%x.%j.err
|
||||||
|
mpirun helloworld
|
@ -0,0 +1,30 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <mpi.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
int a, b;
|
||||||
|
int size, rank;
|
||||||
|
int tag = 0;
|
||||||
|
MPI_Status status;
|
||||||
|
MPI_Request send_request, recv_request;
|
||||||
|
MPI_Init(&argc, &argv);
|
||||||
|
MPI_Comm_size(MPI_COMM_WORLD, &size);
|
||||||
|
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||||||
|
if (rank == 0) {
|
||||||
|
a = 314159;
|
||||||
|
MPI_Isend(&a, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &send_request);
|
||||||
|
MPI_Irecv (&b, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &recv_request);
|
||||||
|
MPI_Wait(&send_request, &status);
|
||||||
|
MPI_Wait(&recv_request, &status);
|
||||||
|
printf ("Process %d received value %d\n", rank, b);
|
||||||
|
} else {
|
||||||
|
a = 667;
|
||||||
|
MPI_Isend (&a, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &send_request);
|
||||||
|
MPI_Irecv (&b, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &recv_request);
|
||||||
|
MPI_Wait(&send_request, &status);
|
||||||
|
MPI_Wait(&recv_request, &status);
|
||||||
|
printf ("Process %d received value %d\n", rank, b);
|
||||||
|
}
|
||||||
|
MPI_Finalize();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue