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