Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generalize code to handle complex numbers #8

Closed
wants to merge 46 commits into from
Closed

Generalize code to handle complex numbers #8

wants to merge 46 commits into from

Conversation

teonnik
Copy link
Collaborator

@teonnik teonnik commented Jun 24, 2019

The changes provide support for:

  • float
  • std::complex
  • std::complex

CMake scripts have been refactored. The project layout has changed.

teonnik added 30 commits June 7, 2019 13:25
- Use min version 3.13
- Use BLAS module IntelMKL and OpenBLAS
- Move the cosma target to top directory
- Move coverage and profiling next to testing
- Define the library target at the beginning
- Link the submodule dependencies before after git submodule
- Link non-cmake dependencies and clean-up logic
- Use target based commands
- 3.12.4 is supported on Piz Daint
- Remove unused code
- remove manual flag setting
- clean up the test code
- `const` type qualifier on return has no effect
- Avoid header file clashes with other projects
- Fix cmake test code
- adjust root cmake to new project layout
- Make communicator's destructor virtual
- Explicitly override virtual methods in derived class
- The type alias is shorter and makes code more readable
! All targets build !

- Advantages
  - Eliminates dependency on Fortran ABI / C API compatibility (aka the
    magical underscore)
  - Uses value semantics where needed
  - Has enums where appropriate
  - No need to mess around with mangling (aka extern "C" and co.)

- Fix path to gtest.h and gtest_mpi.h headers
- Rename ubench to benchmarks
- move files from unit to tests and remove unit
- Cleanup unused code (will checkout from history if needed)
- Prefix COSMA cmake variable
- Don't ignore everything starting with build in .gitignor
The target only builds the test without running them
teonnik added 15 commits June 20, 2019 10:48
- Use explicit template instantiations in the cpp file
- Use an extern template declaration to prevent implicit instantiations
  in matrix.cpp
- if yes; disable tests
- Virtual methods can't be templated. The templated parameter will have
  to be placed on top of the class even when there are no data members
  actually using it.

- Remove the virtual hiearchy. The existing virtual hiearchy contained
  only a single Base-Derived pair (Base: communicator, Derived:
  hybrid_communicator). If, in future, some of the operations have to be
  customized (e.g. copy, reduce), templated parameters would be a better
  fit.

- Fix a linking issues with a free function for CosmaMatrix in
  cosma-miniapp.

- Isolate the templated parameter in communicator.

- Note that there is a cicular dependency between one_sided_communicator
  and communicator. This has to be fixed.
- Break circular dependency between communicator and
  one_sided_communicator. Use `use_busy_waiting` from strategy

- Prepare communicator's templated member functions template instantions
- Template local_multiply

- Introduce mpi_mapper to abstract away MPI types
- The code is now templated
- Fixed remaining floating point comparison issues
- Add a fix in cosma-miniapp due to missing default parameter
- Generalize tests to handle complex numbers
- scalars_miniapp is an extension of cosma-miniapp
- simplify reading environment variable in cosma-miniapp

- implement a sbatch script for Piz Daint
- The default FindBLAS shipped with CMake linked with Intel OpenMP
  runtimes while FindOpenMP linked with GNU OpenMP at the same time
  causing a significant performance hit. To avoid the issue a custom MKL
  CMake module adapted from Rafaelle's DLA library is implemented.
  Currently no other BLAS back-ends are supported.

- Remove unused cosma_lapack.cmake

- Reimplement FindMKL.cmake.

- Adjust build scripts on Daint.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant