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