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
  • !157

Merged
Created Mar 13, 2023 by vinciguerra_a@vinciguerra_aDeveloper

Dimensionality Independence

  • Overview 333
  • Commits 150
  • Changes 90

Compatibility note: This MR rewrites large parts of IPPL to depend on C++20 compliance. Do not mark as ready until a meaningful number of target machines have been updated to CUDA 12 or otherwise support this standard.

Closes #148 (closed).

  • Replaces all rank-dependent parallel_for kernels with templated lambdas
  • Implements a functor wrapper and convenience function for reduction kernels and replaces all rank-dependent parallel_reduce kernels with wrapped, templated lambdas
  • Implements a wrapper for all rank independent kernels
  • Generalizes IPPL algorithms (ORB, field operations, PIC) to work with problems in any number of dimensions
  • Adds some tests for the new features
  • Expands unit testing to check functionality for all supported dimensionalities

Note that FFT is still dependent on heFFTe, so the source is written to support any number of dimensions, but Dim <= 3 is still enforced because heFFTe doesn't support higher dimensionality.

This MR also introduces a few other quality-of-life changes.

  • Makes it easier to convert between index and coordinate spaces with NDIndex objects by using vector expressions
  • Implements ranged iteration (for (auto x : v)) for IPPL's Vector and NDIndex types
Edited May 03, 2023 by vinciguerra_a
Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: dimension-independence