Unverified Commit 3a99d651 authored by Podhorszki, Norbert's avatar Podhorszki, Norbert Committed by GitHub
Browse files

Merge pull request #3211 from pnorbert/fix-bpls-localvalue

Fix:  BP5 LocalValue (shown at read as GlobalArray)  MinBlocksInfo ca…
parents d881d36d b3e74fb2
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1485,6 +1485,7 @@ MinVarInfo *BP5Deserializer::MinBlocksInfo(const VariableBase &Var, size_t Step)
            if (writer_meta_base)
            {
                MinBlockInfo Blk;
                Blk.MinMax.Init(VarRec->Type);
                Blk.WriterID = WriterRank;
                Blk.BlockID = Id++;
                Blk.BufferP = writer_meta_base;
@@ -1493,6 +1494,11 @@ MinVarInfo *BP5Deserializer::MinBlocksInfo(const VariableBase &Var, size_t Step)
                    Blk.Count = (size_t *)1;
                    Blk.Start = (size_t *)WriterRank;
                }
                if (writer_meta_base)
                {
                    ApplyElementMinMax(Blk.MinMax, VarRec->Type,
                                       writer_meta_base);
                }
                MV->BlocksInfo.push_back(Blk);
            }
        }
+33 −13
Original line number Diff line number Diff line
@@ -3066,11 +3066,15 @@ Dims get_global_array_signature(core::Engine *fp, core::IO *io,
                {
                    for (size_t k = 0; k < ndim; k++)
                    {
                        size_t n =
                            (minBlocks->WasLocalVar
                                 ? reinterpret_cast<size_t>(minBlocks->Shape)
                                 : minBlocks->Shape[k]);
                        if (firstStep)
                        {
                            dims[k] = minBlocks->Shape[k];
                            dims[k] = n;
                        }
                        else if (dims[k] != minBlocks->Shape[k])
                        else if (dims[k] != n)
                        {
                            dims[k] = 0;
                        }
@@ -3365,20 +3369,26 @@ void print_decomp(core::Engine *fp, core::IO *io, core::Variable<T> *variable)

                    for (size_t k = 0; k < ndim; k++)
                    {
                        if (blocks[j].Count[k])
                        size_t c =
                            (minBlocksInfo->WasLocalVar
                                 ? reinterpret_cast<size_t>(blocks[j].Count)
                                 : blocks[j].Count[k]);

                        if (c)
                        {
                            size_t s =
                                (minBlocksInfo->WasLocalVar
                                     ? reinterpret_cast<size_t>(blocks[j].Start)
                                     : blocks[j].Start[k]);
                            if (variable->m_ShapeID == ShapeID::GlobalArray)
                            {
                                fprintf(outf, "%*zu:%*zu", ndigits_dims[k],
                                        blocks[j].Start[k], ndigits_dims[k],
                                        blocks[j].Start[k] +
                                            blocks[j].Count[k] - 1);
                                fprintf(outf, "%*zu:%*zu", ndigits_dims[k], s,
                                        ndigits_dims[k], s + c - 1);
                            }
                            else
                            {
                                // blockStart is empty vector for LocalArrays
                                fprintf(outf, "0:%*zu", ndigits_dims[k],
                                        blocks[j].Count[k] - 1);
                                fprintf(outf, "0:%*zu", ndigits_dims[k], c - 1);
                            }
                        }
                        else
@@ -3411,6 +3421,15 @@ void print_decomp(core::Engine *fp, core::IO *io, core::Variable<T> *variable)
                    }
                    fprintf(outf, "\n");
                    if (dump)
                    {
                        if (minBlocksInfo->WasLocalVar)
                        {
                            readVarBlock(
                                fp, io, variable, RelStep, j,
                                {reinterpret_cast<size_t>(blocks[j].Count)},
                                {reinterpret_cast<size_t>(blocks[j].Start)});
                        }
                        else
                        {
                            readVarBlock(
                                fp, io, variable, RelStep, j,
@@ -3420,6 +3439,7 @@ void print_decomp(core::Engine *fp, core::IO *io, core::Variable<T> *variable)
                    }
                }
            }
        }
        return;
    }