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