Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • T TurTLE
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3
    • Issues 3
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • TurTLE
  • TurTLE
  • Issues
  • #3

Closed
Open
Created Sep 27, 2016 by Berenger Bramas@bbramasMaintainer

Timing results mixed between processes

sometimes the output from different CPUs is mixed up.

The timing output should be in order, but sometime it is not even so we are using a right to left blocking com:

void show(const MPI_Comm inComm) const {
        int myRank, nbProcess;
        int retMpi = MPI_Comm_rank( inComm, &myRank);
        assert(retMpi == MPI_SUCCESS);
        retMpi = MPI_Comm_size( inComm, &nbProcess);
        assert(retMpi == MPI_SUCCESS);

        if((&outputStream == &std::cout || &outputStream == &std::clog) && myrank != nbProcess-1){
            // Print in reverse order
            char tmp;
            MPI_Recv(&tmp, 1, MPI_BYTE, myrank+1, 99, inComm, MPI_STATUS_IGNORE);
        }

        std::stack<std::pair<int, const std::shared_ptr<CoreEvent>>> events;

        for (int idx = static_cast<int>(root->getChildren().size()) - 1; idx >= 0; --idx) {
            events.push({0, root->getChildren()[idx]});
        }

        outputStream << "[TIMING-" <<  myRank<< "] Local times.\n";
        outputStream << "[TIMING-" <<  myRank<< "] :" << root->getName() << "\n";
        // output here            
        outputStream.flush();

        if((&outputStream == &std::cout || &outputStream == &std::clog) && myrank != 0){
            // Print in reverse order
            char tmp;
            MPI_Send(&tmp, 1, MPI_BYTE, myrank-1, 99, inComm);
        }
    }
Assignee
Assign to
Time tracking