From 9f17395b637107eabb67880e055aaeb136c04d5c Mon Sep 17 00:00:00 2001
From: Tobias Winchen <tobias.winchen@rwth-aachen.de>
Date: Thu, 15 Apr 2021 11:56:14 +0000
Subject: [PATCH] Check heap loss on zero bit of ICD
---
.../effelsberg/edd/detail/GatedSpectrometer.cu | 4 ++--
.../effelsberg/edd/src/GatedSpectrometer.cu | 2 +-
.../edd/test/src/GatedSpectrometerTest.cu | 16 ++++++++--------
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/psrdada_cpp/effelsberg/edd/detail/GatedSpectrometer.cu b/psrdada_cpp/effelsberg/edd/detail/GatedSpectrometer.cu
index 96480e6b..03cee1d7 100644
--- a/psrdada_cpp/effelsberg/edd/detail/GatedSpectrometer.cu
+++ b/psrdada_cpp/effelsberg/edd/detail/GatedSpectrometer.cu
@@ -389,7 +389,7 @@ void GatedSpectrometer<HandlerType, InputType, OutputType>::process(SinglePolari
const int heaps_per_output_spectra = inputDataStream->_sideChannelData_h.size() / _naccumulate / _nBlocks;
for (int j = output_block_number * heaps_per_output_spectra ; j < (output_block_number+1) * heaps_per_output_spectra * _dadaBufferLayout.getNSideChannels(); j+=_dadaBufferLayout.getNSideChannels())
{
- if (TEST_BIT(inputDataStream->_sideChannelData_h.a().data()[j], 42))
+ if (TEST_BIT(inputDataStream->_sideChannelData_h.a().data()[j], 3))
{ // heap was lost
continue;
}
@@ -454,7 +454,7 @@ void GatedSpectrometer<HandlerType, InputType, OutputType>::process(DualPolariza
const int heaps_per_output_spectra = inputDataStream->polarization0._sideChannelData_h.size() / _naccumulate / _nBlocks;
for (int j = output_block_number * heaps_per_output_spectra ; j < (output_block_number+1) * heaps_per_output_spectra * _dadaBufferLayout.getNSideChannels(); j+=_dadaBufferLayout.getNSideChannels())
{
- if (TEST_BIT(inputDataStream->polarization0._sideChannelData_h.a().data()[j], 42) || TEST_BIT(inputDataStream->polarization1._sideChannelData_h.a().data()[j], 42))
+ if (TEST_BIT(inputDataStream->polarization0._sideChannelData_h.a().data()[j], 3) || TEST_BIT(inputDataStream->polarization1._sideChannelData_h.a().data()[j], 3))
{
lostHeaps++;
// thiss heap was lost, do not count
diff --git a/psrdada_cpp/effelsberg/edd/src/GatedSpectrometer.cu b/psrdada_cpp/effelsberg/edd/src/GatedSpectrometer.cu
index d5933006..52b770fd 100644
--- a/psrdada_cpp/effelsberg/edd/src/GatedSpectrometer.cu
+++ b/psrdada_cpp/effelsberg/edd/src/GatedSpectrometer.cu
@@ -49,7 +49,7 @@ __global__ void gating(float* __restrict__ G0,
selectedSideChannel];
const unsigned int bit_set = TEST_BIT(sideChannelItem, bitpos);
- const unsigned int heap_lost = TEST_BIT(sideChannelItem, 63);
+ const unsigned int heap_lost = TEST_BIT(sideChannelItem, 3);
G1[i] = (v - baseLineG1) * bit_set * (!heap_lost) + baseLineG1;
G0[i] = (v - baseLineG0) * (!bit_set) *(!heap_lost) + baseLineG0;
diff --git a/psrdada_cpp/effelsberg/edd/test/src/GatedSpectrometerTest.cu b/psrdada_cpp/effelsberg/edd/test/src/GatedSpectrometerTest.cu
index 9a42371a..78df9f86 100644
--- a/psrdada_cpp/effelsberg/edd/test/src/GatedSpectrometerTest.cu
+++ b/psrdada_cpp/effelsberg/edd/test/src/GatedSpectrometerTest.cu
@@ -383,12 +383,12 @@ class GatedTestSinkFullStokes{
for(int i =0; i <4; i++)
{
uint64_t *S = reinterpret_cast<uint64_t*>(buf.ptr() + 8 *nchans * 32 /8 + i * 2 *sizeof(size_t));
- EXPECT_EQ(S[0], nHeaps * 4096); // expect samples from two polarizations
- EXPECT_EQ(S[2], nHeaps * 4096);
+ EXPECT_EQ(S[0], nHeaps * 4096) << "S" << i; // expect samples from two polarizations
+ EXPECT_EQ(S[2], nHeaps * 4096) << "S" << i;
// Correct number of overflowed samples
- EXPECT_EQ(S[1], 27 + 7);
- EXPECT_EQ(S[3], 23 + 3); // First heap has 23 and bit set, thus G1
+ EXPECT_EQ(S[1], 27 + 7) << "S" << i;;
+ EXPECT_EQ(S[3], 23 + 3) << "S" << i;; // First heap has 23 and bit set, thus G1
}
call_count ++;
@@ -435,10 +435,10 @@ TEST(GatedSpectrometer, processingFullStokes)
uint64_t* sc_items = reinterpret_cast<uint64_t*>(raw_buffer + 2*nHeaps * 4096);
for (int i = 0; i < 2 * nHeaps; i+=4)
{
- sc_items[i] = 0;
- sc_items[i+1] = 0;
- sc_items[i+2] = 0;
- sc_items[i+3] = 0;
+ sc_items[i] = 0L;
+ sc_items[i+1] = 0L;
+ sc_items[i+2] = 0L;
+ sc_items[i+3] = 0L;
SET_BIT(sc_items[i], 0);
SET_BIT(sc_items[i + 1], 0);
}
--
GitLab