1. 11 Feb, 2016 1 commit
    • Andreas Marek's avatar
      Enable single-precision calculations for ELPA1 · de6a4fde
      Andreas Marek authored
      With the configure option "--enable-single-precision" ELPA1 is build
      with single-precision (half-words) only.
      
      The best precision in single-precision (float or complex) is
      2^-23 ~ 1.2e-7. The accuracy of the error residual of ELPA1 in
      single-precision mode is of the order 1e-4 to 1e-5. The orthogonality of
      the EV's is fullfilled up to about ~1e-6.
      
      Thus the precision of ELPA1 in single-precision mode is roughly 100 -
      1000 times less than the best achievable precison. This is consistent
      with the double-precision mode, where also a factor of 100 - 1000 less
      precision than the theoretical best one is found.
      
      The float EVs are identical to the double EVs to at least 1e-2, the
      precision of the EVs is thus about 1e-7/1e-2 = 1e5 times lower than the
      best theoretical precision. If the same holds for the double precision
      calculations, this implies that the double precision results can also
      be only trusted on the level 1e-11 (5 orders of magnitude larger
      than the best theoretical precision)
      
      The best speed-up compared to the double precision calculation is
      a factor of two. This is by far not achieved yet, since the singl
      precision version is not at all optimized at the moment
      de6a4fde
  2. 05 Feb, 2016 1 commit
  3. 04 Feb, 2016 2 commits
  4. 03 Feb, 2016 2 commits
  5. 02 Feb, 2016 15 commits
  6. 22 Jan, 2016 1 commit
  7. 19 Jan, 2016 2 commits
  8. 13 Jan, 2016 1 commit
  9. 11 Jan, 2016 1 commit
  10. 08 Jan, 2016 1 commit
  11. 05 Jan, 2016 1 commit
    • Andreas Marek's avatar
      Updated all variable types · 62a29931
      Andreas Marek authored
      All variables (real, integer, complex) are now declecared with the
      appropiate kind statement. The definition of the kind types is done
      in src/mod_precision.f90
      
      To ensure interoperability with C, the kind types are decleared via
      iso_c_binding to C variables
      62a29931
  12. 04 Jan, 2016 1 commit
    • Andreas Marek's avatar
      Started to remove depecrated Fortran variable declerations · 0a05f7d3
      Andreas Marek authored
      The Fortran variable declerations "variable type*[4,8,16]" is non
      Fortran standard. It might cause problem in the future.
      Furthermore, the usage of Fortran and C togehther is more clean
      if variables are defined according to C variable types.
      
      This is done, now for all the test programs
      0a05f7d3
  13. 22 Dec, 2015 2 commits
  14. 16 Dec, 2015 1 commit
    • Andreas Marek's avatar
      Add interface to unify C and Fortran names · bb046d1c
      Andreas Marek authored
      This commit does not change the interfaces defined in ELPA_2015.11.001 !
      All functionality is available via the interface names and definitions
      as in ELPA_2015.11.001
      
      But some new interfaces have been added, in order to unfiy the
      references from C and Fortran codes:
      
      - The procedures to create the ELPA (row/column) communicators are now
        available from C _and_ Fortran with the name "get_elpa_communicators".
        The old Fortran name "get_elpa_row_col_comms" and the old C name
        "elpa_get_communicators" are from now on deprecated but still available
      
      - The 1-stage solver routines are available from C _and_ Fortran via
        the names "solve_evp_real_1stage" and "solve_evp_complex_1stage".
        The old Fortran names "solve_evp_real" and "solve_evp_complex" are
        from now on deprecated but still functional.
      
      All documentation (man pages, doxygen, and example test programs) have
      been changed accordingly.
      
      This commit implies a change in the API versioning number, but no
      changes to codes calling ELPA (if they have been already updated to the
      API of ELPA_2015.11.001)
      bb046d1c
  15. 11 Dec, 2015 2 commits
  16. 10 Dec, 2015 3 commits
    • Andreas Marek's avatar
      Create doxygen documentation for ELPA · 927f988a
      Andreas Marek authored
      The user functions of ELPA are now documented with doxygen tags.
      At the moment the interface of ELPA 2015.11.001 is decribed.
      
      The documentation has step by step to be implemented for all functions
      and test programms.
      927f988a
    • Andreas Marek's avatar
      Split file elpa2.F90 into elpa2.F90 and elpa2_compute.F90 · 2998fac3
      Andreas Marek authored
      As in a previous commit for elpa1.F90, for automatic generation of
      documentation elpa2.F90 has been splitted in two files, in order to
      have a lean, easy-to-understand user interface:
      
      elpa2.F90
      the visible user functions, which provide the library calls.
      The usage is the same as before
      
      elpa2_compute.F90
      all internal routines, which are used by ELPA2, but which are never
      called external of the library by a user. These functions are now
      "hidden" in the module elpa2_compute, which is used by ELPA2.
      
      The procedures in elpa2_compute.F90 are identical to the ones in
      elpa2.F90 before this split commit. The only -- but quite a lot of them
      -- changes are intendation changes.
      2998fac3
    • Andreas Marek's avatar
      Split file elpa1.F90 into elpa1.F90 and elpa1_compute.F90 · 9710bf08
      Andreas Marek authored
      For automatic generation of documentation, the file elpa1.F90
      has been splitted into two files, in order to have a lean,
      easy-to-understand user interface:
      
      elpa1.F90
      the visible user functios, which provide the library calls.
      The usage is the same as always
      
      elpa1_compute.F90
      all internal routines, which are used by ELPA1 and ELPA2, but
      which are never called by the user. These functions are now "hidden"
      in the module elpa1_compute, which is used by ELPA1 and ELPA2.
      
      The procedures in elpa1_compute.F90 are identical to the ones in
      elpa1.F90 before this split commit. The only -- but lot of --
      changes are intendation.
      9710bf08
  17. 09 Dec, 2015 1 commit
  18. 08 Dec, 2015 1 commit
    • Alexander Heinecke's avatar
      first attempt to fix the bug which was rolled back in 402629d9. · b6ce5fd4
      Alexander Heinecke authored
      Current fix does as much blocking as possible, which should be
      beneficial from both a compute and communication point of view.
      
      Additionally, a second possible fix was added which just calls
      the blocked version if the local matrix has a sufficient size.
      This might create smaller and more messages at scale.
      b6ce5fd4
  19. 07 Dec, 2015 1 commit
    • Andreas Marek's avatar
      Bugfix in ELPA_2015.11.001, roll back of minor changes · 402629d9
      Andreas Marek authored
      For some matrix/block size combinations the real case of ELPA2
      crashes, e.g:
      
      mpiexec -n 1 ./elpa2_test_real 50 50 32
      
      leads to an error message
       ** On entry to DGEMM parameter number  3 had an illegal value
       and a crash.
      
      This only seems to happen with matrix size smaller than 64*64.
      he code path responsible for this has been identified, but the problem
      tself is not yet solved!
      
      The part of the code, which causes these crashes, has been switched on
      as default by Intel in commit fe63372d. The rest of the commit fe63372d
      seems to be fine, and is performance critical.
      
      As an intermediate step, the responsible code path is switched off again
      as default, this will be changed again once the underlying root cause
      has been solved.
      402629d9