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

Parallel ILU factorization with a reference implementation #305

Merged
merged 17 commits into from
Jun 13, 2019

Commits on Jun 6, 2019

  1. Added ParIlu factorization factory

    - Added stubs for ilu factorization factory, including stubs
      and reference implementations (which were provided by
      @hartwiganzt) for 3 kernels.
    - Added core test for the ParILU Factory.
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    0833118 View commit details
    Browse the repository at this point in the history
  2. Made ParIlu inherit from Composition

    ParIlu factorization is now inheriting from `Composition` instead from
    `LinOpFactory` (or similar).
    Additionally, all added files are now also mentioned inside the
    appropriate `CMakeLists.txt`.
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    4e185f6 View commit details
    Browse the repository at this point in the history
  3. Further work on ParIlu factorization

    - Added `get_l` and `get_u_factor` to ParIluFactors
    - Fixed compiler errors for reference implementation
    - Added simple test for reference implementation
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    c27a28a View commit details
    Browse the repository at this point in the history
  4. First complete version of ParIlu

    - Renamed class to `ParIlu` (and the files accordingly)
    - Added `iterations` variable to `ParIlu` to set the number of iterations
      of the compute kernel
    - Extended both `core` and `reference` test
    - optimized conversions (`system_matrix` -> Csr, Coo) by reducing the
      number of copies
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    67697c0 View commit details
    Browse the repository at this point in the history
  5. Improved ParIlu tests, corrected kernel

    - Added apply test for ParIlu
    - Made all test matrices const
    - Added additional reference tests for the 3 kernels
    - Fixed wrong include file in `common_kernels`
    - Fixed a mistake in the compute_l_u kernel (still not correct)
    - Added comments to compute_l_u kernel
    - Added debug output (MUST BE REMOVED BEFORE MERGING)
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    7a30066 View commit details
    Browse the repository at this point in the history
  6. Removed existing bug from ParIlu

    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    e903059 View commit details
    Browse the repository at this point in the history
  7. Finished first complete version of ParIlu

    - All debug output was removed
    - More tests were added (to cover most of the corner cases)
    - Documentation was extended
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    00c9055 View commit details
    Browse the repository at this point in the history
  8. Added option to sort Csr Matrices

    Sorting of Csr matrices is required for ParIlu to work with any
    kind of matrix input.
    Currently, only the reference implementation is done. It is performed
    with `std::sort` with a custom Iterator. That helps to prevent both
    unnecessary copies and the need to implement a custom sorting algorithm.
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    6a96b91 View commit details
    Browse the repository at this point in the history
  9. Finished adding sorting to CSR matrix

    - Moved (and renamed) the former CustomIterator (now IteratorFactory)
      to a separate file
    - Added documentation to IteratorFactory
    - Added tests for IteratorFactory
    - Added tests for sorting in CSR
    - Added sorting to ParIlu, so all tests succeed
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    ec6dbb3 View commit details
    Browse the repository at this point in the history
  10. Corrected core test of ParIlu

    The core test for ParIlu used kernels from the reference module,
    which are not required to exist for the core tests. All relevant
    tests were moved to the reference test.
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    afb5269 View commit details
    Browse the repository at this point in the history
  11. Corrected comment shift (caused by make-format)

    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    d890a8a View commit details
    Browse the repository at this point in the history
  12. In ParIlu, iterations now have an Auto value

    Instead of having the same default value on all executors, it now
    defaults to `0`, which means the implementation can freely choose
    how many iterations are appropriate for the given ressources.
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    0300184 View commit details
    Browse the repository at this point in the history
  13. Updated documentation of ParIlu

    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    0486f1c View commit details
    Browse the repository at this point in the history
  14. Improved Documentation and code coverage

    - Added used LaTeX packages into `Doxyfile-usr.in`
    - Improved code coverage by adding tests for
      + `IteratorFactory` (specifically for the `operator<` in Reference)
      + `ParIlu` (Added additional test with sorted CSR matrix)
    - re-added the overview description for `ParIlu`
    Thomas Grützmacher committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    e8108e8 View commit details
    Browse the repository at this point in the history

Commits on Jun 13, 2019

  1. Added changes from the review comments

    Thomas Grützmacher committed Jun 13, 2019
    Configuration menu
    Copy the full SHA
    e9e876b View commit details
    Browse the repository at this point in the history
  2. Made further style changes.

    Thomas Grützmacher committed Jun 13, 2019
    Configuration menu
    Copy the full SHA
    637af5a View commit details
    Browse the repository at this point in the history
  3. Restrict the CI system to only use the 1st GPU

    To prevent conflicts with other users on the CI system, we now restrict
    it to only use the first GPU (device ID 0) for all tests.
    
    Note: That also restricts the CUDA executor copy test to a single GPU,
          meaning data will be copied internally on a single GPU instead of
          across devices.
    Thomas Grützmacher committed Jun 13, 2019
    Configuration menu
    Copy the full SHA
    dbabfdb View commit details
    Browse the repository at this point in the history