Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • wslda wslda
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • wtools
  • wsldawslda
  • Wiki
  • Setting up diagonalization engine

Setting up diagonalization engine · Changes

Page history
Update Setting up diagonalization engine authored Feb 17, 2021 by Gabriel Wlazłowski's avatar Gabriel Wlazłowski
Hide whitespace changes
Inline Side-by-side
Setting-up-diagonalization-engine.md
View page @ 6ea05e5b
# ELPA Library
For static calculations it is recommend to use ELPA Library, which has better performance than ScaLapack. In particularly, ELPA allows for utilization of GPUs which provide significant boost for calculations. In order to activate ELPA lib in [predefines.h](https://gitlab.fizyka.pw.edu.pl/gabrielw/wslda/-/tree/public/st-myproject-template/predefines.h) set:
For static calculations, it is recommended to use ELPA Library, which has better performance than ScaLapack. In particular, ELPA allows for the utilization of GPUs which provide a significant boost for calculations. In order to activate ELPA lib in [predefines.h](https://gitlab.fizyka.pw.edu.pl/gabrielw/wslda/-/tree/public/st-myproject-template/predefines.h) set:
```c
// select diagonalization routine
#define DIAGONALIZATION_ROUTINE ELPA
......@@ -33,7 +33,7 @@ Moreover, you need to inspect carefully part:
1. [GPU-Acceleration of the ELPA2 Distributed Eigensolver for Dense Symmetric and Hermitian Eigenproblems](https://arxiv.org/abs/2002.10991)
# ScaLapack library
If target system does not provide ELPA libray user can use (standard) diagonalization library: [ScaLAPACK](http://www.netlib.org/scalapack/). W-SLDA Toolkit can utilize following ScaLapack diagonalization engines:
If the target system does not provide ELPA library user can use (standard) diagonalization library: [ScaLAPACK](http://www.netlib.org/scalapack/). W-SLDA Toolkit can utilize the following ScaLapack diagonalization engines:
```c
#define DIAGONALIZATION_ROUTINE PZHEEVR
```
......@@ -41,11 +41,12 @@ or
```c
#define DIAGONALIZATION_ROUTINE PZHEEVD
```
It is recommended to use `PZHEEVR`. This engine takes advantage from fact that typically we extract only fraction of eigenstates. However, we find that in some rare cases (system dependent) this routine does not work correctly. In such can `PZHEEVD` should be used.
It is recommended to use `PZHEEVR`. This engine takes advantage from the fact that typically we extract only a fraction of eigenstates. However, we find that in some rare cases (system dependent) this routine does not work correctly. In such a case, `PZHEEVD` should be used.
# Benchmarks
| matrix size | p | q | mb | nb | prec. | routine | system | time [sec] | cost |
| ------------|---|---|----|----|--------|---------|--------|------------|------|
| **65,536 = 2x32^3** | 24 | 28 | 8 | 8 | complex| ELPA (1-GPU) | Summit | **118** | **0.52 nh** |
| **128,000 = 2x40^3** | 20 | 20 | 32 | 32 | complex| ELPA (1-GPU) | Daint | **220** | **24.4 nh** |
| 128,000 | 54 | 64 | 32 | 32 | complex| ELPA (2-CPU) | Daint | 677 | 54.1 nh |
| 128,000 | 54 | 64 | 32 | 32 | complex| PZHEEVR | Daint | 945 | 75.6 nh |
......
Clone repository
  • API version
  • Automatic interpolations
  • Auxiliary tools
  • Browsing the code
  • Broyden algorithm
  • C and CUDA
  • Campaign of calculations
  • Checking correctness of settings
  • Chemical potentials control
  • Code & Results quality
  • Common failures of static codes
  • Common failures of time dependent codes
  • Computation domain
  • Configuring GPU machine
  • Constraining densities and potentials
View All Pages