Skip to content
Snippets Groups Projects
Commit 662169b1 authored by Thomas Jahns's avatar Thomas Jahns :cartwheel:
Browse files

Only perform computation and reallocation when actually needed.

parent 9dfaddf5
No related branches found
No related tags found
No related merge requests found
......@@ -1375,15 +1375,11 @@ writeGribStream(size_t streamIdx,
: false;
struct cacheRedist *restrict retained = rxWin[streamIdx].retained;
struct passDict *varsInPass = NULL;
size_t varsInPassSize = 0;
size_t varsInPassSize = 0, maxNumVarsAlloc = 0;
MPI_Aint *displ = NULL;
const struct winHeaderEntry *winDict = (wHECast)clientBuf[0].mem;
for (size_t pass = 0; pass < numPasses; ++pass)
{
size_t numVarsInPass
= buildPassVarDict(collSize, passes[pass], writtenRecords,
&varsInPassSize, &varsInPass);
varRedists = Realloc(varRedists, numVarsInPass * sizeof (*varRedists));
size_t myRecordStart = passes[pass][collRank].recordAggStart,
myRecordEnd = passes[pass][collRank].recordAggEnd;
size_t myAggSize = 0;
......@@ -1396,9 +1392,19 @@ writeGribStream(size_t streamIdx,
}
else
{
size_t numVarsInPass
= buildPassVarDict(collSize, passes[pass], writtenRecords,
&varsInPassSize, &varsInPass);
int myVarStart = passes[pass][collRank].varStart,
myVarEnd = passes[pass][collRank].varEnd;
displ = Realloc(displ, sizeof (*displ) * (numVarsInPass * 2 + 1));
if (numVarsInPass > maxNumVarsAlloc)
{
maxNumVarsAlloc = numVarsInPass;
varRedists
= Realloc(varRedists, numVarsInPass * sizeof (*varRedists));
displ
= Realloc(displ, (numVarsInPass * 2 + 1) * sizeof (*displ));
}
memset(displ, 0, sizeof (*displ) * (numVarsInPass + 1));
for (size_t varIdx = 0; varIdx < numVarsInPass; ++varIdx)
{
......
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