Changes after code review with Johannes
This commit is contained in:
@@ -1621,8 +1621,9 @@ acGridPeriodicBoundconds(const Stream stream)
|
|||||||
return AC_SUCCESS;
|
return AC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
AcResult
|
|
||||||
acMPIReduceScal(AcReal* local_result, const ReductionType rtype, AcReal* result)
|
static AcResult
|
||||||
|
acMPIReduceScal(const AcReal local_result, const ReductionType rtype, AcReal* result)
|
||||||
{
|
{
|
||||||
|
|
||||||
MPI_Op op;
|
MPI_Op op;
|
||||||
@@ -1642,19 +1643,19 @@ acMPIReduceScal(AcReal* local_result, const ReductionType rtype, AcReal* result)
|
|||||||
MPI_Datatype datatype = MPI_FLOAT;
|
MPI_Datatype datatype = MPI_FLOAT;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
int rank;
|
||||||
|
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
|
||||||
|
*/
|
||||||
|
|
||||||
int world_size;
|
int world_size;
|
||||||
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
|
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
|
||||||
|
|
||||||
if (rtype == RTYPE_RMS || rtype == RTYPE_RMS_EXP) {
|
|
||||||
//Overflow risk?
|
|
||||||
*local_result = *local_result*(*local_result);
|
|
||||||
}
|
|
||||||
|
|
||||||
AcReal mpi_res;
|
AcReal mpi_res;
|
||||||
MPI_Allreduce(&local_result, &mpi_res, 1, datatype, op, MPI_COMM_WORLD);
|
MPI_Allreduce(&local_result, &mpi_res, 1, datatype, op, MPI_COMM_WORLD);
|
||||||
|
|
||||||
if (rtype == RTYPE_RMS || rtype == RTYPE_RMS_EXP) {
|
if (rtype == RTYPE_RMS || rtype == RTYPE_RMS_EXP) {
|
||||||
const AcReal inv_n = AcReal(1.) / world_size;
|
const AcReal inv_n = AcReal(1.) / (grid.nn.x*grid.decomposition.x * grid.nn.y*grid.decomposition.y * grid.nn.z*grid.decomposition.z);
|
||||||
mpi_res = sqrt(inv_n * mpi_res);
|
mpi_res = sqrt(inv_n * mpi_res);
|
||||||
}
|
}
|
||||||
*result = mpi_res;
|
*result = mpi_res;
|
||||||
@@ -1672,7 +1673,7 @@ acGridReduceScal(const Device device, const Stream stream, const ReductionType r
|
|||||||
AcReal local_result;
|
AcReal local_result;
|
||||||
acDeviceReduceScal(device, stream, rtype, vtxbuf_handle, &local_result);
|
acDeviceReduceScal(device, stream, rtype, vtxbuf_handle, &local_result);
|
||||||
|
|
||||||
return acMPIReduceScal(&local_result,rtype,result);
|
return acMPIReduceScal(local_result,rtype,result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1687,7 +1688,7 @@ acGridReduceVec(const Device device, const Stream stream, const ReductionType rt
|
|||||||
AcReal local_result;
|
AcReal local_result;
|
||||||
acDeviceReduceVec(device, stream, rtype, vtxbuf0, vtxbuf1, vtxbuf2, &local_result);
|
acDeviceReduceVec(device, stream, rtype, vtxbuf0, vtxbuf1, vtxbuf2, &local_result);
|
||||||
|
|
||||||
return acMPIReduceScal(&local_result,rtype,result);
|
return acMPIReduceScal(local_result,rtype,result);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // AC_MPI_ENABLED
|
#endif // AC_MPI_ENABLED
|
||||||
|
Reference in New Issue
Block a user