Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
I IPPL
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 34
    • Issues 34
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 15
    • Merge requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Metrics
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI/CD
    • Code Review
    • Issue
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OPAL
  • Libraries
  • IPPL
  • Merge requests
  • !97

Merged
Created Aug 27, 2021 by vinciguerra_a@vinciguerra_aDeveloper

Buffer Preallocation and other Optimizations

  • Overview 91
  • Commits 132
  • Changes 57

The buffer-factory branch mainly improves performance by reducing the number of memory allocations performed during MPI communication, which is especially important for GPU performance. New tests are added and various other optimizations are also made.

Major changes:

  • Added a globally accessible interface for requesting buffers to be used for MPI communication
  • Overallocate memory for communication buffers the first time and reuse the same buffers to avoid reallocation calls
  • Particle deletion re-implemented as a partitioning algorithm
  • Field layouts and particle regions now use the same mesh 1

Optimizations:

  • Kokkos resize calls replaced with realloc, which does not preserve old memory contents 2
  • Unnecessary barriers and if-conditions removed
  • Added a non-blocking receive function to the Communicate class but it is not currently used
  • Reduced host-space memory reallocations by allocating vectors of MPI requests just once

Structural/repository changes:

  • Introduced plasma mini-apps
  • Updated the Solvers module to point to the branch with the FFT solver
  • Redundant test programs deleted and replaced with equivalent unit tests where appropriate

Piz Daint:

  • Various type changes introduced to ensure successful compilation on Piz Daint

Aesthetic changes:

  • Introduced a new header file with type aliases

Possible additional changes to be made:

  • Some more cleanup in FFT files and test programs
  • Expand use of new type aliases

Also closes #79 (closed).

  1. Introduces charge conservation errors in the Penning trap test. Fixed in periodic-bcs-for-scatter-gather branch. ↩

  2. Except in ParticleAttrib where the unpack call still resizes to preserve old particle data ↩

Edited Sep 01, 2021 by vinciguerra_a
Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: buffer-factory