Added timing to acDeviceRunMPITest()

This commit is contained in:
jpekkila
2020-01-20 14:54:26 +02:00
parent af51534d35
commit 3625e9db5f

View File

@@ -598,6 +598,7 @@ acDeviceRunMPITest(void)
// From Astaroth Utils // From Astaroth Utils
#include "src/utils/config_loader.h" #include "src/utils/config_loader.h"
#include "src/utils/memory.h" #include "src/utils/memory.h"
#include "src/utils/timer_hires.h"
#include "src/utils/verification.h" #include "src/utils/verification.h"
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
@@ -874,12 +875,11 @@ acDeviceGatherMeshMPI(const AcMesh src, const int3 decomposition, AcMesh* dst)
return AC_SUCCESS; return AC_SUCCESS;
} }
static AcResult static AcResult acDeviceCommunicateBlocksMPI(const Device device, //
acDeviceCommunicateBlocksMPI(const Device device, // const int3* a0s, // Src idx inside comp. domain
const int3* a0s, // Src idx inside comp. domain const int3* b0s, // Dst idx inside bound zone
const int3* b0s, // Dst idx inside bound zone const size_t mapping_count, // Num a0s and b0s
const size_t mapping_count, // Num a0s and b0s const int3 dims) // Block size
const int3 dims) // Block size
{ {
cudaSetDevice(device->id); cudaSetDevice(device->id);
acDeviceSynchronizeStream(device, STREAM_ALL); acDeviceSynchronizeStream(device, STREAM_ALL);
@@ -1196,10 +1196,26 @@ acDeviceRunMPITest(void)
MPI_Barrier(MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD);
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
// TIMING START //////////////////////////////////////////////
acDeviceSynchronizeStream(device, STREAM_ALL);
MPI_Barrier(MPI_COMM_WORLD);
Timer t;
timer_reset(&t);
//////////////////////////////////////////////////////////////
// INTEGRATION & BOUNDCONDS//////////////////////////////////// // INTEGRATION & BOUNDCONDS////////////////////////////////////
acDeviceCommunicateHalosMPI(device); acDeviceCommunicateHalosMPI(device);
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
// TIMING END //////////////////////////////////////////////
acDeviceSynchronizeStream(device, STREAM_ALL);
MPI_Barrier(MPI_COMM_WORLD);
if (!pid) {
timer_diff_print(t);
}
MPI_Barrier(MPI_COMM_WORLD);
//////////////////////////////////////////////////////////////
// STORE & GATHER ///////////////////////////////////////////// // STORE & GATHER /////////////////////////////////////////////
MPI_Barrier(MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD);
acDeviceStoreMesh(device, STREAM_DEFAULT, &submesh); acDeviceStoreMesh(device, STREAM_DEFAULT, &submesh);