Initialize the library
SUBROUTINE dbcsr_multiply_lib_init()
!! Initialize the library
INTEGER :: ithread, nthreads
nthreads = 1; ithread = 0
!$ nthreads = OMP_GET_NUM_THREADS(); ithread = OMP_GET_THREAD_NUM()
CALL dbcsr_mm_multrec_lib_init()
!$OMP MASTER
dbcsr_mpi_statistics%last_mpi_ranks_used = 0
dbcsr_mpi_statistics%nimages = -1
dbcsr_mpi_statistics%nexchanged = 0
dbcsr_mpi_statistics%data_size = 0
dbcsr_mpi_statistics%data_size(:, 2) = HUGE(dbcsr_mpi_statistics%data_size(1, 2))
dbcsr_mpi_statistics%data_size_breakdown = 0
marketing_flops = 0
max_memory = 0
ALLOCATE (memtype_product_wm(0:nthreads - 1))
!$OMP END MASTER
!$OMP BARRIER
! Each thread has its own working-matrix and its own mempool
ALLOCATE (memtype_product_wm(ithread)%p)
CALL dbcsr_memtype_setup(memtype_product_wm(ithread)%p, has_pool=dbcsr_cfg%use_mempools_cpu%val .OR. has_acc)
CALL dbcsr_mempool_limit_capacity(memtype_product_wm(ithread)%p%pool, capacity=MAX(1, dbcsr_cfg%num_layers_3D%val))
END SUBROUTINE dbcsr_multiply_lib_init