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. use_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