Homec4science

ENH: First implementation of MPI parallelization.

Authored by junge on Mar 16 2018, 17:48.

Description

ENH: First implementation of MPI parallelization.

Summary:
Parallelization presently works only for MPI FFTW. MPI parallelization passes patch test for CG solvers. Python bindings still need to be finalized.

WIP: Added dummy FFTWEngineMPI. Updated CMakeLists.txt to search for MPI and MPI FFTW and link to those libraries.

DOC: Updated file header.

WIP: First version of MPI FFTW test.

WIP: Refactoring; FFTWEngineMPI -> FFTWMPIEngine

WIP: Separated MPI tests into their own executable.

WIP: Added MPIContext singleton that takes care of initializing and tearing down MPI.

WIP: fftw_engine_mpi -> fftwmpi_engine

WIP: Added MPI communicator as parameter.

WIP: First implementation of communicator abstraction.

WIP: Have FFTWMPIEngine and tests use the abstracted communicator.

WIP: Added more MPI datatypes.

WIP: Need to compute size over all MPI processes.

DOC: Added doc strings.

WIP: µSpectre -> muSpectre

WIP: Use transposed local size planner.

WIP: mpi_type template specializations must be inline.

WIP: Added initial PFFT engine.

WIP: Pass engine as template parameter to fixture.

WIP: MPI FFT test compiles with PFFT. No passes yet.

Merge branch 'master' into feat/mpi

WIP: FFT_Engine_base -> FFTEngineBase

WIP: Remove material dimension from FieldCollections in MPI test.

WIP: Apple Xcode fixes.

WIP: Check whether plan has been created.

WIP: Introduced temporary padded input buffer.

Merge branch 'master' into feat/mpi

WIP: MPI FFTW running on one process works.

WIP: MPI FFTW with transposed output works.

WIP: Switched MPI FFT test to FFTW.

WIP: Code documentation.

WIP: Added MPI projection tests.

WIP: Pixels class has now a 'transposed' template arguments, that tells it that the first two dimensions are transposed.

WIP: Transpose pixels for local grid collection

WIP: Added locations and domain_resolutions getter

WIP: Updated documentation strings

WIP: Pixels now knows about its (subdomain) location. Cell now knows about its (subdomain) location as well as the domain resoltuions.

WIP: Made 'resize' of Field* public. MPI FFTW needs to enlarge the underlying storage.

WIP: Enlarge workspace buffer size.

WIP: 0,0 grid locations resides on one of the MPI processes only.

Revert "WIP: Made 'resize' of Field* public. MPI FFTW needs to enlarge the underlying storage."

This reverts commit 4c7b0a9182d072c349ebdf1f1f524be991ca62fc.

WIP: Replace public resize with explicit pad size information in FieldBase

WIP: hermitian resolutions are now fourier resolution and stored in the base class.

WIP: Initialize norm factor with global resolution

WIP: get_ccoord now rewuires a locations argument

WIP: Initialize resolutions in constructor.

WIP: Pass fourier_locations to Pixels constructor.

WIP: Workspace pixel initialisation in constructor.

WIP: Added rank() methode to Communicator

WIP: FieldCollection now stores locations.

WIP: Need to use domain resolutions when constructing FFT frequencies.

WIP: Pass locations to FieldCollection and Field initialisation.

WIP: Cleaned up tests.

WIP: Cosmetics.

WIP: Added reduction operations to SolverCG

Merge branch 'master' into feat/mpi

WIP: Added missing locations argument.

WIP: FFTEngineBase now holds the communicator object and returns it via get_communicator()

WIP: SolverCG appears to be working in parallel.

WIP: de_geus solver converges

WIP: get_index needs locations argument

WIP: Removed constexpr for get_mpi_comm

WIP: Updated FindPFFT.cmake and CMakeLists.txt.

WIP: Added communication for reduction operations in newton_cg solver.

WIP: Added convenience functions to create parallel cells.

WIP: Enabled and updated MPI parallel patch test.

WIP: HAVE_MPI should have been WITH_MPI

WIP: Updated language bindings to reflect recent changes in API.

fixed python tests

Test Plan: Test pass

Reviewers: junge

Differential Revision: https://c4science.ch/D169

Details

Committed
pastewkaMar 16 2018, 17:51
Pushed
pastewkaMar 16 2018, 20:32
Differential Revision
Restricted Differential Revision
Parents
rMUSPECTRE0f03cbf18341: WIP: Updated language bindings to reflect recent changes in API.
Branches
Unknown
Tags
Unknown
Reverts
rMUSPECTRE4c7b0a9182d0: WIP: Made 'resize' of Field* public. MPI FFTW needs to enlarge the underlying…