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
  • Memory usage of st wslda

Last edited by Gabriel Wlazłowski Feb 20, 2026
Page history

Memory usage of st wslda

Arithmetics

Static codes support two types of arithmetics:

  • double complex: ELEMENT_SIZE=16B
    default mode: matrix elements of the Hamiltonian are assumed to be of complex numbers.
  • double: ELEMENT_SIZE=8B
    if you know that matrix elements, as well as the solution, will be real numbers (for examples based on symmetries of your problem) you can speed-up the calculation process by switching to double arithmetics. To do this, you need to activate in predefines.h the flag:
/**
 * Activate this if you know that the Hamiltonian matrix is real. 
 * The code will utilize it in order to speed up the calculations by a factor of 4x (approximately)
 * */
// #define HAMILTONIAN_IS_REAL

st-wslda-3d

3D version of the code diagonalizes a matrix of size:
MATRIX_DIM = NX*NY*NZ*2.
The memory needed to store this matrix in memory is
MATRIX_SIZE = MATRIX_DIM*MATRIX_DIM*ELEMENT_SIZE.
To execute the diagonalization routine st-wslda-3d code needs:
REQUIRED_MEMORY = k*MATRIX_SIZE,
Factor k is in [3,10] and accounts for storage for matrix, storage for eigen-vectors, working space, which depends on the selected diagonalization engine, and execution parameters.

st-wslda-2d

In (quasi) 2D formulation of the problem, diagonalization of the full Hamiltonian matrix factorizes into a series of max(NZ/2,1) diagonalizations of matrices of size (NZ/2 arises from the fact that there is the degeneracy of states with respect to the sign of k_z wave-vectors):
MATRIX_DIM = NX*NY*2
and the corresponding matrix size is
MATRIX_SIZE = MATRIX_DIM*MATRIX_DIM*ELEMENT_SIZE.
The number of matrices diagonalized simultaneously is:
NUMBER_OF_SIMULTANUES_DIAGONALIZATIONS = np / (p*q)
where np is the number of MPI processes (provided to the mpi execution command) and p and q are input file parameters. To execute the diagonalization routine st-wslda-2d code needs:
REQUIRED_MEMORY = k*MATRIX_SIZE*NUMBER_OF_SIMULTANUES_DIAGONALIZATIONS.

Note: if p and q are not specified in the input file, by default st-wslda-2d will select the values that provide the highest parallelization (maximization of the number of simultaneous diagonalizations). It means the highest memory request.

st-wslda-1d

In (quasi) 1D formulation of the problem, diagonalization ofthe full Hamiltonian matrix factorizes into a series of max(NY*NZ/4,1) diagonalizations of matrices of size:
MATRIX_DIM = NX*2
and the corresponding matrix size is
MATRIX_SIZE = MATRIX_DIM*MATRIX_DIM*ELEMENT_SIZE.
The number of matrices diagonalized simultaneously is:
NUMBER_OF_SIMULTANUES_DIAGONALIZATIONS = np / (p*q)
where np is the number of MPI processes (provided to the mpi execution command) and p and q are input file parameters. To execute the diagonalization routine st-wslda-1d code needs at most:
REQUIRED_MEMORY = k*MATRIX_SIZE*NUMBER_OF_SIMULTANUES_DIAGONALIZATIONS.

Note: if p and q are not specified in the input file, by default st-wslda-1d will select the values that provide the highest parallelization (maximization of the number of simultaneous diagonalizations). It means the highest memory request.

Clone repository

Official webpage
Main Repo
Main Docs
W-BSK Toolkit
Mirror Repo: GitLab, GitHub
Mirror Doc: GitLab, GitHub