diff --git a/RTCP/Cobalt/GPUProc/src/Station/StationInput.cc b/RTCP/Cobalt/GPUProc/src/Station/StationInput.cc index d53e1a40b2966e96049b61fea10172cda6c410d1..bd0c7824dbf73c4056dbdb15eaf33e04c3ff3d02 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 c493e80173ebaf17f13275cbf62b3b505215d289..e055c88443dab1ab2c14a4c7e807730904e211af 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 36156bbe57c9a66fd2a318d1842d362f2feae819..413f91ad6d8e114ab4a0cbfa6883428e8cddb67c 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; /*