From c6e30d286b96905b94c9b77bbda9ae84f0f77e35 Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Thu, 27 Jun 2019 11:24:14 +0000 Subject: [PATCH] COB-64: Measure real-timeness of MPI transpose --- RTCP/Cobalt/GPUProc/src/Station/StationInput.cc | 2 +- RTCP/Cobalt/GPUProc/src/Station/StationTranspose.cc | 10 ++++++++-- RTCP/Cobalt/GPUProc/src/Station/StationTranspose.h | 4 +++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/RTCP/Cobalt/GPUProc/src/Station/StationInput.cc b/RTCP/Cobalt/GPUProc/src/Station/StationInput.cc index d53e1a40b29..bd0c7824dbf 100644 --- a/RTCP/Cobalt/GPUProc/src/Station/StationInput.cc +++ b/RTCP/Cobalt/GPUProc/src/Station/StationInput.cc @@ -743,7 +743,7 @@ namespace LOFAR { Queue< SmartPtr< MPIData<SampleT> > > mpiQueue(str(format( "sendInputToPipeline::mpiQueue [station %s]") % stationID.name())); - MPISender sender(logPrefix, stationIdx, subbandDistribution); + MPISender sender(logPrefix, stationIdx, subbandDistribution, ps.settings.blockDuration()); /* * Stream the data. diff --git a/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.cc b/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.cc index c493e80173e..e055c88443d 100644 --- a/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.cc +++ b/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.cc @@ -46,6 +46,7 @@ #include <Common/LofarLogger.h> #include <Common/Timer.h> #include <CoInterface/OMPThread.h> +#include <CoInterface/BudgetTimer.h> #include <InputProc/SampleType.h> using namespace LOFAR; @@ -197,14 +198,15 @@ namespace LOFAR { template struct MPIData< SampleType<i4complex> >; MPISender::MPISender( const std::string &logPrefix, size_t stationIdx, - const SubbandDistribution &subbandDistribution ) + const SubbandDistribution &subbandDistribution, float blockDuration ) : logPrefix(logPrefix), stationIdx(stationIdx), subbandDistribution(subbandDistribution), targetRanks(keys(subbandDistribution)), subbandOffsets(targetRanks.size(), 0), - nrSubbands(values(subbandDistribution).size()) + nrSubbands(values(subbandDistribution).size()), + blockDuration(blockDuration) { // Determine the offset of the set of subbands for each rank within // the members in MPIData<SampleT>. @@ -251,6 +253,10 @@ namespace LOFAR { SmartPtr< MPIData<SampleT> > mpiData; NSTimer mpiSendTimer(str(format("%s MPI send data") % logPrefix), true, true); + BudgetTimer copyTimer( + str(format("%s MPI send data") % logPrefix), + blockDuration, + true, true); size_t nrProcessedSamples = 0; size_t nrFlaggedSamples = 0; diff --git a/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.h b/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.h index 36156bbe57c..413f91ad6d8 100644 --- a/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.h +++ b/RTCP/Cobalt/GPUProc/src/Station/StationTranspose.h @@ -129,7 +129,8 @@ namespace LOFAR { class MPISender { public: MPISender( const std::string &logPrefix, size_t stationIdx, - const SubbandDistribution &subbandDistribution ); + const SubbandDistribution &subbandDistribution, + float blockDuration ); /* * Sends blocks over MPI until a NULL is read from the inputQueue. @@ -153,6 +154,7 @@ namespace LOFAR { const std::vector<int> targetRanks; std::vector<size_t> subbandOffsets; const size_t nrSubbands; + const float blockDuration; /* -- GitLab