xref: /phasta/phastaIO/phiompi.c (revision a663ed547a5d6235aa3bcffc8f9fa412c3d80f1f)
1 #include<mpi.h>
2 #include<assert.h>
3 #include"phiompi.h"
4 int phio_ar_int(int val, int op) {
5   int res = 0;
6   int err = MPI_Allreduce(&val,&res,1,MPI_INT,op,MPI_COMM_WORLD);
7   assert(err == MPI_SUCCESS);
8   return res;
9 }
10 double phio_ar_dbl(double val, int op) {
11   double res = 0;
12   int err = MPI_Allreduce(&val,&res,1,MPI_DOUBLE,op,MPI_COMM_WORLD);
13   assert(err == MPI_SUCCESS);
14   return res;
15 }
16 long phio_ar_long(long val, int op) {
17   long res = 0;
18   int err = MPI_Allreduce(&val,&res,1,MPI_LONG,op,MPI_COMM_WORLD);
19   assert(err == MPI_SUCCESS);
20   return res;
21 }
22 int phio_min_int(int val) {
23   return phio_ar_int(val,MPI_MIN);
24 }
25 int phio_max_int(int val) {
26   return phio_ar_int(val,MPI_MAX);
27 }
28 long phio_add_long(long val) {
29   return phio_ar_long(val,MPI_SUM);
30 }
31 double phio_min_double(double val) {
32   return phio_ar_dbl(val,MPI_MIN);
33 }
34 double phio_max_double(double val) {
35   return phio_ar_dbl(val,MPI_MAX);
36 }
37 double phio_add_double(double val) {
38   return phio_ar_dbl(val,MPI_SUM);
39 }
40 int phio_self() {
41   int self;
42   MPI_Comm_rank(MPI_COMM_WORLD, &self);
43   return self;
44 }
45 int phio_peers() {
46   int peers;
47   MPI_Comm_size(MPI_COMM_WORLD, &peers);
48   return peers;
49 }
50