/** * sleep_sort.c * * Sorts a random collection of values using sleep() * * Compile: mpicc -g -Wall -lm sleep_sort.c -o sleep_sort * (or run make) * * Run: mpirun -n 4 ./sleep_sort */ #include #include #include #include #include const int MAX_CONTRIB = 10; void sort(int my_contrib, int my_rank); int main(int argc, char* argv[]) { int p, my_rank; MPI_Comm comm; int my_contrib; int sum; MPI_Init(&argc, &argv); comm = MPI_COMM_WORLD; MPI_Comm_size(comm, &p); MPI_Comm_rank(comm, &my_rank); if (my_rank == 0) { printf("Generating random values...\n"); } srandom(my_rank + 1 + 25); my_contrib = random() % MAX_CONTRIB; printf("Proc %d > my_contrib = %d\n", my_rank, my_contrib); fflush(stdout); if (my_rank == 0) { printf("[Press enter to start.]\n"); getchar(); printf("Sorting values...\n"); fflush(stdout); } MPI_Barrier(comm); sort(my_contrib, my_rank); MPI_Finalize(); return 0; } /** * Function: sort * Purpose: Sleeps for a given amount of time, and then prints the process * contribution (random number). * * Input args: my_contrib the number to help sort * my_rank rank of the process */ void sort(int my_contrib, int my_rank) { sleep(my_contrib); printf("Proc %d > my_contrib = %d\n", my_rank, my_contrib); }