Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • A ADIOS2
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 97
    • Issues 97
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 9
    • Merge requests 9
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Podhorszki, Norbert
  • ADIOS2
  • Issues
  • #913

Closed
Open
Created Oct 04, 2018 by Podhorszki, Norbert@pnbMaintainer

SST has a

Created by: pnorbert

SST has the same scalability issue that InsituMPI had in Fix scalability bottleneck in InSituMPIReader PR #863

"Currently, the reader receives and deserializes messages from each writer one by one. This design is limiting the scalability in terms of the number of writers per reader. Need to change the behavior to a bulk receive followed by a bulk deserialization."

ffs_marshal.c:

static SstStatusValue WaitForReadRequests(SstStream Stream)
{
    struct FFSReaderMarshalBase *Info = Stream->ReaderMarshalData;

    for (int i = 0; i < Stream->WriterCohortSize; i++)
    {
        if (Info->WriterInfo[i].Status == Requested)
        {
            SstStatusValue Result =
                SstWaitForCompletion(Stream, Info->WriterInfo[i].ReadHandle);
            if (Result == SstSuccess)
            {
                Info->WriterInfo[i].Status = Full;
                DecodeAndPrepareData(Stream, i);
            }
            else
            {
                CP_verbose(Stream, "Wait for remote read completion failed, "
                                   "returning failure\n");
                return Result;
            }
        }
    }
    CP_verbose(Stream, "All remote memory reads completed\n");
    return SstSuccess;
}

Similarly, this needs to be checked for BP marshalling.

Assignee
Assign to
Time tracking