Skip to content
Snippets Groups Projects
  1. Nov 09, 2018
  2. Nov 08, 2018
    • Christian Engwer's avatar
      [!214] [VariableBlockVector] Fix test · 1ecde728
      Christian Engwer authored
      Merge branch 'bugfix/fix-vbvectortest' into 'master'
      
      ref:core/dune-istl Formerly, this would throw an exception if
      
      DUNE_ISTL_WITH_CHECKING
      
      is enabled since you must not call a create iterator on an initialized
      VariableBlockVector.
      
      That being said, maybe it's a good idea to enable these checks in the CI
      system.
      
      See merge request [core/dune-istl!214]
      
        [core/dune-istl!214]: gitlab.dune-project.org/core/dune-istl/merge_requests/214
      1ecde728
  3. Nov 07, 2018
  4. Oct 17, 2018
    • Markus Blatt's avatar
      [!230] [bugfix] Use submatrix index vector to implement O(1) look-up · 0f4b78a9
      Markus Blatt authored
      Merge branch 'feature/fix-quadratic-umfpacksetup' into 'master'
      
      ref:core/dune-istl Looking up if a column index is contained in submatrix
      could degenerate to accumulated O(n) complexity for each row in the old
      implementation. By setting up a look-up before, this can be improved to O(1).
      Fortunately such a vector is constructed anyway so we can simple use it after
      minor reordering of code.
      
      This should fix [#54].
      
      See merge request [core/dune-istl!230]
      
        [#54]: gitlab.dune-project.org/NoneNone/issues/54
        [core/dune-istl!230]: gitlab.dune-project.org/core/dune-istl/merge_requests/230
      
      
      Closes #54
      0f4b78a9
  5. Oct 05, 2018
    • Carsten Gräser's avatar
      [bugfix] Use submatrix index vector to implement O(1) look-up · 22a5ae5f
      Carsten Gräser authored
      Looking up if a column index is contained in submatrix could
      degenerate to accumulated O(n) complexity for each row in the
      old implementation. By setting up a look-up vector before, this
      can be improved to O(1). Fortunately such a vector is constructed
      anyway so we can simple use it after minor reordering of code.
      
      Note that we keep the old O(n) implementation of addRowNnz()
      because this is still used by some overlapping Schwarz code
      that I do not intend to touch myself.
      22a5ae5f
  6. Aug 17, 2018
  7. Aug 08, 2018
    • Oliver Sander's avatar
      Make VariableBlockVector::CreateIterator an actual STL output iterator · 61bfda19
      Oliver Sander authored
      The class VariableBlockVector::CreateIterator behaves basically
      like an STL output iterator, but it didn't quite implement the
      required interface.  This patch adds the missing methods and
      extends the unit test.
      
      The main benefit of this (besides interface beauty) is that you can
      now use std::fill etc. to set the block sizes of a VariableBlockVector.
      61bfda19
  8. Aug 07, 2018
  9. Jul 23, 2018
    • Dominic Kempf's avatar
      [!227] Do not allow OpenMP to get more than one core in CI · 573e9e01
      Dominic Kempf authored
      Merge branch 'feature/disallow-multithreaded-suitesparse' into 'master'
      
      Suitesparse, as installed with Debian, is thread-parallel using OpenMP. OpenMP
      silently assumes, it can spawn as many threads as there are cores. In a worst
      case scenario, this leads to a number of threads quadratic in the core count,
      if you also do parallel test execution with the maximum number of cores. We
      solve the issue by disallowing OpenMP to allocate more than one thread.
      
      See merge request [core/dune-istl!227]
      
        [core/dune-istl!227]: gitlab.dune-project.org/core/dune-istl/merge_requests/227
      573e9e01
  10. Jul 19, 2018
    • Dominic Kempf's avatar
      Do not allow OpenMP to get more than one core. · 9922ddaf
      Dominic Kempf authored
      Suitesparse, as installed with Debian, is thread-parallel using OpenMP.
      OpenMP silently assumes, it can spawn as many threads as there are cores.
      In a worst case scenario, this leads to a number of threads quadratic in
      the core count, if you also do parallel test execution with the maximum
      number of cores. We solve the issue by disallowing OpenMP to allocate more
      than one thread.
      9922ddaf
  11. Jul 11, 2018
    • Jö Fahlke's avatar
      [!226] [bugfix] [solvers.hh] Set initial search direction of the flexible cg solver to zero · 34f8fff9
      Jö Fahlke authored
      Merge branch 'bugfix/fcg-initial-direction' into 'master'
      
      This adds a missing reset of the vector for the initial direction in the first
      iteration of the apply method.
      
      In the current state the vector for the search direction contains the initial
      solution in the first iteration. Most of the standard preconditioners will add
      their result to the vector instead of replacing it. If the initial solution is
      not zero, this results in an incorrect first search direction.
      
      See merge request [core/dune-istl!226]
      
        [core/dune-istl!226]: gitlab.dune-project.org/core/dune-istl/merge_requests/226
      34f8fff9
  12. Jul 10, 2018
  13. Jul 06, 2018
  14. Jul 05, 2018
    • Jö Fahlke's avatar
      [!221] [TLIME] Relax convergence criterion. · 9da2de98
      Jö Fahlke authored
      Merge branch 'fix-tlime-residual-limit' into 'master'
      
      The previous convergence limit was originally determined experimentally as
      1e-11. This worked for many blas implementations and architectures. However,
      when used with openblas on skylake, apparently the residual norm would not go
      below ~1e-10, so convergence was never achieved. In fact, even on non-skylake
      the residual norm would go above 1e-11 again after briefly dipping below, if
      iterating further.
      
      We believe that this is due to openblas selecting -- at runtime -- some
      skylake specific algorithm leading to a different ordering of operations, in
      turn leading to differences in numerical cancellation. We have however not
      verified this conclusively, nor have we identified precisely which blas
      algorithm is causing this.
      
      This patch raises the convergence limit to
      `sqrt(numeric_limits<field_type>::epsilon())`. This limit has no theoretical
      justification -- it was selected because it usually works as a convergence
      limit for other (completely unrelated) algorithms, and because it works for
      both Skylake and other architectures (AMD Epyc) in this particular case.
      
      Developed together with Sebastian Westerheide.
      
      Fixes: \#48.
      
      
      See merge request core/dune-istl!221
      9da2de98
    • Jö Fahlke's avatar
      [TLIME] Relax convergence criterion. · 0bb1e69d
      Jö Fahlke authored
      The previous convergence limit was originally determined experimentally
      as 1e-11.  This worked for many blas implementations and architectures.
      However, when used with openblas on skylake, apparently the residual norm
      would not go below ~1e-10, so convergence was never achieved.  In fact, even
      on non-skylake the residual norm would go above 1e-11 again after briefly
      dipping below, if iterating further.
      
      We believe that this is due to openblas selecting -- at runtime -- some
      skylake specific algorithm leading to a different ordering of operations, in
      turn leading to differences in numerical cancellation.  We have however not
      verified this conclusively, nor have we identified precisely which blas
      algorithm is causing this.
      
      This patch raises the convergence limit to
      `sqrt(numeric_limits<field_type>::epsilon())`.  This limit has no theoretical
      justification -- it was selected because it usually works as a convergence
      limit for other (completely unrelated) algorithms, and because it works for
      both Skylake and other architectures (AMD Epyc) in this particular case.
      
      Developed together with Sebastian Westerheide.
      
      Fixes: #48.
      0bb1e69d
  15. Jun 27, 2018
  16. Jun 26, 2018
  17. Jun 21, 2018
  18. Jun 11, 2018
  19. Jun 08, 2018
Loading