source: CIVL/examples/mpi/collective/allreduce.c@ 4e86cdd

1.23 2.0 acw/focus-triggers main test-branch
Last change on this file since 4e86cdd was e077e59, checked in by Manchun Zheng <zmanchun@…>, 11 years ago

minor correction.

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

  • Property mode set to 100644
File size: 1018 bytes
Line 
1#include <mpi.h>
2#include <stdio.h>
3#ifdef _CIVL
4#include<civlc.cvh>
5#endif
6
7#define WCOMM MPI_COMM_WORLD
8
9int main(int argc, char **argv){
10 int npes, mype, ierr;
11 double sum, val; int calc, knt=1;
12 ierr = MPI_Init(&argc, &argv);
13 ierr = MPI_Comm_size(WCOMM, &npes);
14 ierr = MPI_Comm_rank(WCOMM, &mype);
15
16 val = (double)mype;
17
18#ifdef TYPE
19 if(mype%2)
20 ierr = MPI_Allreduce(&val, &sum, knt, MPI_DOUBLE, MPI_SUM, WCOMM);
21 else
22 ierr = MPI_Allreduce(&val, &sum, knt, MPI_INT, MPI_SUM, WCOMM);
23#elif defined OPERATOR
24 if(mype%2)
25 ierr = MPI_Allreduce(&val, &sum, knt, MPI_DOUBLE, MPI_SUM, WCOMM);
26 else
27 ierr = MPI_Allreduce(&val, &sum, knt, MPI_DOUBLE, MPI_MAX, WCOMM);
28#else
29 ierr = MPI_Allreduce(&val, &sum, knt, MPI_DOUBLE, MPI_SUM, WCOMM);
30#endif
31
32 calc = ((npes - 1) * npes) / 2;
33 printf(" PE: %d sum=%5.0f calc=%d\n", mype, sum, calc);
34#ifdef _CIVL
35#ifndef OPERATOR
36 $assert(sum == calc);
37#endif
38#endif
39 ierr = MPI_Finalize();
40}
Note: See TracBrowser for help on using the repository browser.