source: CIVL/examples/messagePassing/ring2.cvl@ dfb0fef

1.23 2.0 main test-branch
Last change on this file since dfb0fef was cc2ff44, checked in by Manchun Zheng <zmanchun@…>, 12 years ago

minor correction of header files.

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

  • Property mode set to 100644
File size: 1020 bytes
RevLine 
[18cad8a]1/* Create nprocs processes. Have them exchange data in a cycle.
2 * Commandline example:
[e51fd2f]3 * civl verify -input_NP=3 ring2.cvl -simplify=false
[18cad8a]4 */
[cc2ff44]5#include<comm.cvh>
[fc3ff5e]6#include<stdio.h>
[18cad8a]7#include "mp_root2.cvh"
8
[e51fd2f]9void MPI_Process (int __rank) {
[18cad8a]10#include "mp_proc2.cvh"
11
[e51fd2f]12// ******************* BEGIN PROGRAM SOURCE *************************
13
14 int rank, nprocs, count;
15 double x, y;
[18cad8a]16 MPI_Status stat;
[c905758]17 MPI_Comm MPI_COMM_WORLD = $comm_create($here, __MPI_Comm_World, __rank);
[18cad8a]18
[e51fd2f]19 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
20 MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
21 x = rank;
22 MPI_Send(&x, 1, MPI_DOUBLE, (rank+1)%nprocs, 0, MPI_COMM_WORLD);
23 MPI_Recv(&y, 1, MPI_DOUBLE, (rank+nprocs-1)%nprocs, 0, MPI_COMM_WORLD, &stat);
[09b9231b]24 $assert(y == (rank+nprocs-1)%nprocs);
[e51fd2f]25 MPI_Get_count(&stat, MPI_DOUBLE, &count);
[09b9231b]26 $assert(count == 1);
27 $assert(stat.MPI_SOURCE == (rank+nprocs-1)%nprocs);
28 $assert(stat.MPI_TAG == 0);
[48bfab9]29 $comm_destroy(MPI_COMM_WORLD);
[e51fd2f]30
31// ******************** END PROGRAM SOURCE ***************************
32
[18cad8a]33}
Note: See TracBrowser for help on using the repository browser.