From 2e002ebd3f2380dbd5b8a76264fdb33c55d12574 Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Fri, 6 Mar 2015 09:57:59 +0000
Subject: [PATCH] Task #7543: Fixed Cobalt block-size calculations for
 sub-second integation times, and improved comments

---
 SAS/Scheduler/src/blocksize.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/SAS/Scheduler/src/blocksize.h b/SAS/Scheduler/src/blocksize.h
index eb141a626c7..359dcc8c972 100644
--- a/SAS/Scheduler/src/blocksize.h
+++ b/SAS/Scheduler/src/blocksize.h
@@ -101,20 +101,21 @@ public:
           if (correlatedEnabled) {
             // Add required multiples for the Correlator
 
-            // 16 is number of PPF taps
+            // 16 is number of PPF taps (FIR_Filter.cu)
             factor = lcm(factor, 16 * correlatorChannelsPerSubband);
 
-            // each subblock needs at least 16 samples
-            factor = lcm(factor, 16 * _nrSubblocks(requestedIntegrationTime));
+            // each subblock needs at least 16 samples per channel (Correlator.cu)
+            factor = lcm(factor, 16 * correlatorChannelsPerSubband * _nrSubblocks(requestedIntegrationTime));
           }
 
           if (coherentStokesEnabled) {
             // Add required multiples for the CS Beamformer
 
-            // 16 * 64 is required by the Cobalt DelayAndBandPassKernel
+            // 16 * 64 (DelayAndBandPass.cu)
             factor = lcm(factor, 16 * 64);
 
-            // 1024 is the maxNrThreadsPerBlock, required by the CoherentStokesKernel
+            // 1024 is the maxNrThreadsPerBlock (CoherentStokesKernel.cc)
+            // Note that coherenthannelsPerSubband is always a power of 2 < 1024
             factor = lcm(factor, 1024 * coherentTimeIntegrationFactor);
 
 	    (void)coherentChannelsPerSubband;
@@ -123,9 +124,10 @@ public:
           if (incoherentStokesEnabled) {
             // Add required multiples for the IS Beamformer
 
-            // 16 * 64 is required by the Cobalt DelayAndBandPassKernel
+            // 16 * 64 (DelayAndBandPass.cu)
             factor = lcm(factor, 16 * 64);
 
+            // integration should fit (IncoherentStokes.cu)
             factor = lcm(factor, incoherentTimeIntegrationFactor * incoherentChannelsPerSubband);
           }
 
-- 
GitLab