Skip to content
Snippets Groups Projects
Commit c5e8cb7e authored by Jan David Mol's avatar Jan David Mol
Browse files

Task #9522: Fix CorrelatedData::size. Introduced CorrelatedData::nrBytesPerNrValidSamples.

parent 988ae82c
No related branches found
No related tags found
No related merge requests found
...@@ -76,8 +76,7 @@ namespace LOFAR ...@@ -76,8 +76,7 @@ namespace LOFAR
itsAlignment, itsAlignment,
allocator, allocator,
true), true),
itsNrBytesPerNrValidSamples( itsNrBytesPerNrValidSamples(nrBytesPerNrValidSamples(maxNrValidSamples))
maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4)
{ {
init(nrChannels, allocator); init(nrChannels, allocator);
} }
...@@ -100,8 +99,7 @@ namespace LOFAR ...@@ -100,8 +99,7 @@ namespace LOFAR
[NR_POLARIZATIONS], [NR_POLARIZATIONS],
visibilities, visibilities,
false), false),
itsNrBytesPerNrValidSamples( itsNrBytesPerNrValidSamples(nrBytesPerNrValidSamples(maxNrValidSamples))
maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4)
{ {
ASSERT(this->visibilities.num_elements() == nrVisibilities); ASSERT(this->visibilities.num_elements() == nrVisibilities);
init(nrChannels, allocator); init(nrChannels, allocator);
...@@ -114,11 +112,14 @@ namespace LOFAR ...@@ -114,11 +112,14 @@ namespace LOFAR
unsigned alignment) unsigned alignment)
{ {
const size_t nrBaselines = nrStations * (nrStations + 1) / 2; const size_t nrBaselines = nrStations * (nrStations + 1) / 2;
const size_t nrBytesPerNrValidSamples =
maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4;
return nrBaselines * nrChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof(float) + alignment return nrBaselines * nrChannels * NR_POLARIZATIONS * NR_POLARIZATIONS * sizeof (fcomplex) + alignment
+ nrBaselines * nrChannels * nrBytesPerNrValidSamples + 2 * alignment; + nrBaselines * nrChannels * nrBytesPerNrValidSamples(maxNrValidSamples) + 2 * alignment; // nrValidSamples are aligned and padded
}
size_t CorrelatedData::nrBytesPerNrValidSamples(size_t maxNrValidSamples) {
return maxNrValidSamples < 256 ? 1 : maxNrValidSamples < 65536 ? 2 : 4;
} }
......
...@@ -93,6 +93,8 @@ namespace LOFAR ...@@ -93,6 +93,8 @@ namespace LOFAR
Matrix<uint32_t> itsNrValidSamples4; // [nrBaselines][nrChannels] Matrix<uint32_t> itsNrValidSamples4; // [nrBaselines][nrChannels]
Matrix<uint16_t> itsNrValidSamples2; // [nrBaselines][nrChannels] Matrix<uint16_t> itsNrValidSamples2; // [nrBaselines][nrChannels]
Matrix<uint8_t> itsNrValidSamples1; // [nrBaselines][nrChannels] Matrix<uint8_t> itsNrValidSamples1; // [nrBaselines][nrChannels]
static size_t nrBytesPerNrValidSamples(size_t maxNrValidSamples);
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment