source: CIVL/examples/mpi/mpiFeature/not_single_path_bad.c@ 397ae5f

main test-branch
Last change on this file since 397ae5f was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 797 bytes
Line 
1/* Example illustrating that a deadlock can occur along the path resulting
2 * from one choice at MPI_ANY_SOURCE, but not along the path resulting from
3 * a different choice. Mopper will not detect the deadlock.
4 */
5#include <mpi.h>
6#include <stdlib.h>
7#define comm MPI_COMM_WORLD
8
9int main(int argc, char * argv[]) {
10 int data = 0, rank;
11 MPI_Status status;
12
13 MPI_Init(&argc, &argv);
14 MPI_Comm_rank(comm, &rank);
15 if (rank == 0) {
16 MPI_Recv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, 0, comm, &status);
17 MPI_Recv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, 0, comm, MPI_STATUS_IGNORE);
18 if (status.MPI_SOURCE == 2)
19 MPI_Recv(NULL, 0, MPI_INT, MPI_ANY_SOURCE, 0, comm, MPI_STATUS_IGNORE);
20 } else if (rank == 1 || rank == 2) {
21 MPI_Send(NULL, 0, MPI_INT, 0, 0, comm);
22 }
23 MPI_Finalize();
24}
Note: See TracBrowser for help on using the repository browser.