... | ... | @@ -2,7 +2,7 @@ |
|
|
|
|
|
This document provides the guide for using the *ELPA* library with the new API (API version 20170403 or higher).
|
|
|
|
|
|
If you need instructions on how to build *ELPA*, please look at [INSTALL.md] (INSTALL.md).
|
|
|
If you need instructions on how to build *ELPA*, please look at [INSTALL document](INSTALL.md) .
|
|
|
|
|
|
### Online and local documentation ###
|
|
|
|
... | ... | @@ -11,7 +11,7 @@ Local documentation (via man pages) should be available (if *ELPA* has been inst |
|
|
For example `man elpa2_print_kernels` should provide the documentation for the *ELPA* program, which prints all
|
|
|
the available kernels.
|
|
|
|
|
|
Also a [online doxygen documentation](http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2023.05.001/html/index.html)
|
|
|
Also a [online doxygen documentation](https://elpa.mpcdf.mpg.de/documentation/doxygen/ELPA_DOXYGEN_PAGES/ELPA-2023.11.001/html/index.html)
|
|
|
for each *ELPA* release is available.
|
|
|
|
|
|
|
... | ... | @@ -68,7 +68,7 @@ Fortran synopsis |
|
|
|
|
|
if (elpa_init(20171201) /= ELPA_OK) then ! put here the API version that you are using
|
|
|
print *, "ELPA API version not supported"
|
|
|
stop
|
|
|
stop 1
|
|
|
endif
|
|
|
elpa => elpa_allocate(success)
|
|
|
if (success != ELPA_OK) then
|
... | ... | @@ -178,7 +178,9 @@ 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-2023.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](https://elpa.mpcdf.mpg.de/documentation/doxygen/ELPA_DOXYGEN_PAGES/ELPA-2023.11.001/html/index.html)
|
|
|
for details.
|
|
|
|
|
|
|
|
|
| Name | Purpose | since API version |
|
... | ... | @@ -225,7 +227,7 @@ This is necessary to make the threading an autotunable option. |
|
|
For each tunable parameter mentioned in Section II, there exists a default value. This means, that if this parameter is **not explicitly** set by the user by the
|
|
|
*ELPA* set method, *ELPA* takes the default value for the parameter. E.g. if the user does not set a solver method, than *ELPA* will take the default 1`ELPA_SOLVER_1STAGE`.
|
|
|
|
|
|
The user can change this default value by setting an enviroment variable to the desired value.
|
|
|
The user can change this default value by setting an environment variable to the desired value.
|
|
|
|
|
|
The name of this variable is always constructed in the following way:
|
|
|
```
|
... | ... | @@ -240,6 +242,16 @@ export ELPA_DEFAULT_solver=ELPA_SOLVER_2STAGE |
|
|
|
|
|
in order to define the 2stage solver as the default.
|
|
|
|
|
|
Speciall care has to be taken for keywords of the ELPA library, which contain a dash in the variable name, especially
|
|
|
the variables "nivida-gpu", "amd-gpu", and "intel-gpu". Since environment variables containing a dash are not allowed, for
|
|
|
these variables a work-around must be taken, for example
|
|
|
```
|
|
|
env 'ELPA_DEFAULT_nvidia-gpu=1' ./test_elpa.x ...
|
|
|
```
|
|
|
We will at a later release the alternative names "nvidia_gpu", "amd_gpu", and "intel_gpu", where the usual setting of
|
|
|
environment variables will work.
|
|
|
|
|
|
|
|
|
**Important note**
|
|
|
The default valule is completly ignored, if the user has manually set a parameter-value pair with the *ELPA* set method!
|
|
|
Thus the above environemnt variable will **not** have an effect, if the user code contains a line
|
... | ... | @@ -291,7 +303,7 @@ Fortran synopsis |
|
|
|
|
|
if (elpa_init(20171201) /= ELPA_OK) then
|
|
|
print *, "ELPA API version not supported"
|
|
|
stop
|
|
|
stop 1
|
|
|
endif
|
|
|
elpa => elpa_allocate(success)
|
|
|
|
... | ... | @@ -448,7 +460,7 @@ call descinit( sc_desc, na, na, nblk, nblk, 0, 0, my_blacs_ctxt, na_rows, info ) |
|
|
! check the return code
|
|
|
if (info .ne. 0) then
|
|
|
print *,"Invalid blacs-distribution. Abort!"
|
|
|
stop
|
|
|
stop 1
|
|
|
endif
|
|
|
|
|
|
! Allocate matrices
|
... | ... | @@ -468,7 +480,7 @@ a(i,j) = [ your problem to be solved] |
|
|
|
|
|
if (elpa_init(20171201) /= ELPA_OK) then ! put here the API version that you are using
|
|
|
print *, "ELPA API version not supported"
|
|
|
stop
|
|
|
stop 1
|
|
|
endif
|
|
|
elpa => elpa_allocate(success)
|
|
|
if (success != ELPA_OK) then
|
... | ... | |