/* use method solve to solve the eigenvalue problem */
/* other possible methods are desribed in USERS_GUIDE.md */
elpa_eigenvectors(handle, a, ev, z, &error);
...
...
@@ -169,7 +200,7 @@ The following table gives a list of all supported parameters which can be used t
## III) List of computational routines ##
The following compute routines are available in *ELPA*: Please have a look at the man pages or [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2018.05.001/html/index.html) for details.
The following compute routines are available in *ELPA*: Please have a look at the man pages or [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2018.11.001.rc1/html/index.html) for details.
| Name | Purpose | since API version |
...
...
@@ -181,6 +212,7 @@ The following compute routines are available in *ELPA*: Please have a look at th
| hermitian_multiply | do (real) a^T x b <br> (complex) a^H x b | 20170403 |
| cholesky | do cholesky factorisation | 20170403 |
| ELPA_AUTOTUNE_MEDIUM | all of abvoe + { gpu, partly gpu } |
| ELPA_AUTOTUNE_EXTENSIVE | all of above + { various blocking factors, stripewidth, |
| | intermediate_bandwidth } |
2.) the user can **remove** tunable parameters from the list of autotuning possibilites by explicetly setting this parameter,
e.g. if the user sets in his code
...
...
@@ -274,7 +307,7 @@ Fortran synopsis
print *, "ELPA API version not supported"
stop
endif
elpa => elpa_allocate()
elpa => elpa_allocate(success)
! set parameters decribing the matrix and it's MPI distribution
call elpa%set("na", na, success)
...
...
@@ -286,23 +319,23 @@ Fortran synopsis
call elpa%set("process_row", my_prow, success)
call elpa%set("process_col", my_pcol, success)
succes = elpa%setup()
success = elpa%setup()
tune_state => e%autotune_setup(ELPA_AUTOTUNE_MEDIUM, ELPA_AUTOTUNE_DOMAIN_REAL, error) ! prepare autotuning, set AUTOTUNE_LEVEL and the domain (real or complex)
tune_state => e%autotune_setup(ELPA_AUTOTUNE_MEDIUM, ELPA_AUTOTUNE_DOMAIN_REAL, success) ! prepare autotuning, set AUTOTUNE_LEVEL and the domain (real or complex)
! do the loop of subsequent ELPA calls which will be used to do the autotuning
do i=1, scf_cycles
unfinished = e%autotune_step(tune_state) ! check whether autotuning is finished; If not do next step
unfinished = e%autotune_step(tune_state, success) ! check whether autotuning is finished; If not do next step
if (.not.(unfinished)) then
print *,"autotuning finished at step ",i
endif
call e%eigenvectors(a, ev, z, error) ! do the normal computation
call e%eigenvectors(a, ev, z, success) ! do the normal computation
enddo
call e%autotune_set_best(tune_state) ! from now use the values found by autotuning
call e%autotune_set_best(tune_state, success) ! from now use the values found by autotuning