Blame examples/srtest.c

Packit 0848f5
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
Packit 0848f5
/*
Packit 0848f5
 *  (C) 2001 by Argonne National Laboratory.
Packit 0848f5
 *      See COPYRIGHT in top-level directory.
Packit 0848f5
 */
Packit 0848f5
Packit 0848f5
#include "mpi.h"
Packit 0848f5
#include <stdio.h>
Packit 0848f5
#include <string.h>
Packit 0848f5
Packit 0848f5
#define BUFLEN 512
Packit 0848f5
Packit 0848f5
int main(int argc, char *argv[])
Packit 0848f5
{
Packit 0848f5
    int myid, numprocs, next, namelen;
Packit 0848f5
    char buffer[BUFLEN], processor_name[MPI_MAX_PROCESSOR_NAME];
Packit 0848f5
    MPI_Status status;
Packit 0848f5
Packit 0848f5
    MPI_Init(&argc,&argv);
Packit 0848f5
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
Packit 0848f5
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
Packit 0848f5
    MPI_Get_processor_name(processor_name,&namelen);
Packit 0848f5
Packit 0848f5
    fprintf(stderr,"Process %d on %s\n", myid, processor_name);
Packit 0848f5
    fprintf(stderr,"Process %d of %d\n", myid, numprocs);
Packit 0848f5
    strcpy(buffer,"hello there");
Packit 0848f5
    if (myid == numprocs-1)
Packit 0848f5
	next = 0;
Packit 0848f5
    else
Packit 0848f5
	next = myid+1;
Packit 0848f5
Packit 0848f5
    if (myid == 0)
Packit 0848f5
    {
Packit 0848f5
        printf("%d sending '%s' \n",myid,buffer);fflush(stdout);
Packit 0848f5
	MPI_Send(buffer, strlen(buffer)+1, MPI_CHAR, next, 99, MPI_COMM_WORLD);
Packit 0848f5
	printf("%d receiving \n",myid);fflush(stdout);
Packit 0848f5
	MPI_Recv(buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD,
Packit 0848f5
		 &status);
Packit 0848f5
	printf("%d received '%s' \n",myid,buffer);fflush(stdout);
Packit 0848f5
	/* mpdprintf(001,"%d receiving \n",myid); */
Packit 0848f5
    }
Packit 0848f5
    else
Packit 0848f5
    {
Packit 0848f5
        printf("%d receiving  \n",myid);fflush(stdout);
Packit 0848f5
	MPI_Recv(buffer, BUFLEN, MPI_CHAR, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD,
Packit 0848f5
		 &status);
Packit 0848f5
	printf("%d received '%s' \n",myid,buffer);fflush(stdout);
Packit 0848f5
	/* mpdprintf(001,"%d receiving \n",myid); */
Packit 0848f5
	MPI_Send(buffer, strlen(buffer)+1, MPI_CHAR, next, 99, MPI_COMM_WORLD);
Packit 0848f5
	printf("%d sent '%s' \n",myid,buffer);fflush(stdout);
Packit 0848f5
    }
Packit 0848f5
    MPI_Barrier(MPI_COMM_WORLD);
Packit 0848f5
    MPI_Finalize();
Packit 0848f5
    return (0);
Packit 0848f5
}