Skip to content

Commit

Permalink
* Removed reductions determining buffer-sizes and removed initial all…
Browse files Browse the repository at this point in the history
…ocation at call-side

  - Determining any maximum buffer-size at call-side removed.
  - Allocation at call-side removed.
  • Loading branch information
hfp committed May 6, 2024
1 parent 9381559 commit e39d237
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 96 deletions.
94 changes: 26 additions & 68 deletions src/qs_tensors.F
Original file line number Diff line number Diff line change
Expand Up @@ -1162,10 +1162,10 @@ SUBROUTINE build_3c_derivatives(t3c_der_i, t3c_der_k, filter_eps, qs_env, &

INTEGER :: block_end_i, block_end_j, block_end_k, block_start_i, block_start_j, &
block_start_k, egfi, handle, handle2, i, i_img, i_xyz, iatom, ibasis, ikind, ilist, imax, &
iset, j_img, jatom, jcell, jkind, jset, katom, kcell, kkind, kset, m_max, max_ncoi, &
max_ncoj, max_ncok, max_nset, max_nsgfi, max_nsgfj, max_nsgfk, maxli, maxlj, maxlk, &
mepos, natom, nbasis, ncell_RI, ncoi, ncoj, ncok, nimg, nseti, nsetj, nsetk, nthread, &
op_ij, op_jk, op_pos_prv, sgfi, sgfj, sgfk, unit_id
iset, j_img, jatom, jcell, jkind, jset, katom, kcell, kkind, kset, m_max, max_ncoj, &
max_nset, max_nsgfi, maxli, maxlj, maxlk, mepos, natom, nbasis, ncell_RI, ncoi, ncoj, &
ncok, nimg, nseti, nsetj, nsetk, nthread, op_ij, op_jk, op_pos_prv, sgfi, sgfj, sgfk, &
unit_id
INTEGER, ALLOCATABLE, DIMENSION(:) :: img_to_RI_cell_prv
INTEGER, DIMENSION(2) :: bo
INTEGER, DIMENSION(3) :: blk_idx, blk_size, cell_j, cell_k, &
Expand Down Expand Up @@ -1330,7 +1330,6 @@ SUBROUTINE build_3c_derivatives(t3c_der_i, t3c_der_k, filter_eps, qs_env, &
!Need the max l for each basis for libint and max nset, nco and nsgf for LIBXSMM contraction
nbasis = SIZE(basis_i)
max_nsgfi = 0
max_ncoi = 0
max_nset = 0
maxli = 0
DO ibasis = 1, nbasis
Expand All @@ -1339,29 +1338,22 @@ SUBROUTINE build_3c_derivatives(t3c_der_i, t3c_der_k, filter_eps, qs_env, &
maxli = MAX(maxli, imax)
max_nset = MAX(max_nset, iset)
max_nsgfi = MAX(max_nsgfi, MAXVAL(nsgfi))
max_ncoi = MAX(max_ncoi, MAXVAL(npgfi)*ncoset(maxli))
END DO
max_nsgfj = 0
max_ncoj = 0
maxlj = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_j(ibasis)%gto_basis_set, maxl=imax, &
nset=jset, nsgf_set=nsgfj, npgf=npgfj)
maxlj = MAX(maxlj, imax)
max_nset = MAX(max_nset, jset)
max_nsgfj = MAX(max_nsgfj, MAXVAL(nsgfj))
max_ncoj = MAX(max_ncoj, MAXVAL(npgfj)*ncoset(maxlj))
END DO
max_nsgfk = 0
max_ncok = 0
maxlk = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_k(ibasis)%gto_basis_set, maxl=imax, &
nset=kset, nsgf_set=nsgfk, npgf=npgfk)
maxlk = MAX(maxlk, imax)
max_nset = MAX(max_nset, kset)
max_nsgfk = MAX(max_nsgfk, MAXVAL(nsgfk))
max_ncok = MAX(max_ncok, MAXVAL(npgfk)*ncoset(maxlk))
END DO
m_max = maxli + maxlj + maxlk + 1

Expand Down Expand Up @@ -1435,9 +1427,8 @@ SUBROUTINE build_3c_derivatives(t3c_der_i, t3c_der_k, filter_eps, qs_env, &
!$OMP PARALLEL DEFAULT(NONE) &
!$OMP SHARED (nthread,do_kpoints_prv,kp_index_lbounds,kp_index_ubounds,maxli,maxlk,maxlj,bounds_i,&
!$OMP bounds_j,bounds_k,nimg,basis_i,basis_j,basis_k,dr_ij,dr_jk,dr_ik,ncoset,op_pos_prv,&
!$OMP potential_parameter,der_eps,tspj,spi,spk,cell_to_index,max_ncoi,max_nsgfk,RI_range,&
!$OMP max_nsgfj,max_ncok,natom,nl_3c,t3c_der_i,t3c_der_k,t3c_der_j,ncell_RI,&
!$OMP img_to_RI_cell_prv,do_hfx_kpoints_prv) &
!$OMP potential_parameter,der_eps,tspj,spi,spk,cell_to_index,RI_range,natom,nl_3c,&
!$OMP t3c_der_i,t3c_der_k,t3c_der_j,ncell_RI,img_to_RI_cell_prv,do_hfx_kpoints_prv) &
!$OMP PRIVATE (lib,nl_3c_iter,ikind,jkind,kkind,iatom,jatom,katom,rij,rjk,rik,cell_j,cell_k,&
!$OMP prefac,jcell,kcell,first_sgf_i,lmax_i,lmin_i,npgfi,nseti,nsgfi,rpgf_i,set_radius_i,&
!$OMP sphi_i,zeti,kind_radius_i,first_sgf_j,lmax_j,lmin_j,npgfj,nsetj,nsgfj,rpgf_j,&
Expand All @@ -1454,10 +1445,6 @@ SUBROUTINE build_3c_derivatives(t3c_der_i, t3c_der_k, filter_eps, qs_env, &

CALL cp_libint_init_3eri1(lib, MAX(maxli, maxlj, maxlk))
CALL cp_libint_set_contrdepth(lib, 1)

!pre-allocate contraction buffers
ALLOCATE (cpp_buffer(max_nsgfj*max_ncok), ccp_buffer(max_nsgfj*max_nsgfk*max_ncoi))

CALL neighbor_list_3c_iterator_create(nl_3c_iter, nl_3c)

!We split the provided bounds among the threads such that each threads works on a different set of atoms
Expand Down Expand Up @@ -1875,9 +1862,9 @@ SUBROUTINE calc_3c_virial(work_virial, t3c_trace, pref, qs_env, &

INTEGER :: block_end_i, block_end_j, block_end_k, block_start_i, block_start_j, &
block_start_k, egfi, handle, i, i_xyz, iatom, ibasis, ikind, ilist, imax, iset, j_xyz, &
jatom, jkind, jset, katom, kkind, kset, m_max, max_ncoi, max_ncoj, max_ncok, max_nset, &
max_nsgfi, max_nsgfj, max_nsgfk, maxli, maxlj, maxlk, mepos, natom, nbasis, ncoi, ncoj, &
ncok, nseti, nsetj, nsetk, nthread, op_ij, op_jk, op_pos_prv, sgfi, sgfj, sgfk, unit_id
jatom, jkind, jset, katom, kkind, kset, m_max, max_ncoj, max_nset, max_nsgfi, maxli, &
maxlj, maxlk, mepos, natom, nbasis, ncoi, ncoj, ncok, nseti, nsetj, nsetk, nthread, &
op_ij, op_jk, op_pos_prv, sgfi, sgfj, sgfk, unit_id
INTEGER, DIMENSION(2) :: bo
INTEGER, DIMENSION(3) :: blk_size, sp
INTEGER, DIMENSION(:), POINTER :: lmax_i, lmax_j, lmax_k, lmin_i, lmin_j, &
Expand Down Expand Up @@ -1960,7 +1947,6 @@ SUBROUTINE calc_3c_virial(work_virial, t3c_trace, pref, qs_env, &
!Need the max l for each basis for libint and max nset, nco and nsgf for LIBXSMM contraction
nbasis = SIZE(basis_i)
max_nsgfi = 0
max_ncoi = 0
max_nset = 0
maxli = 0
DO ibasis = 1, nbasis
Expand All @@ -1969,29 +1955,22 @@ SUBROUTINE calc_3c_virial(work_virial, t3c_trace, pref, qs_env, &
maxli = MAX(maxli, imax)
max_nset = MAX(max_nset, iset)
max_nsgfi = MAX(max_nsgfi, MAXVAL(nsgfi))
max_ncoi = MAX(max_ncoi, MAXVAL(npgfi)*ncoset(maxli))
END DO
max_nsgfj = 0
max_ncoj = 0
maxlj = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_j(ibasis)%gto_basis_set, maxl=imax, &
nset=jset, nsgf_set=nsgfj, npgf=npgfj)
maxlj = MAX(maxlj, imax)
max_nset = MAX(max_nset, jset)
max_nsgfj = MAX(max_nsgfj, MAXVAL(nsgfj))
max_ncoj = MAX(max_ncoj, MAXVAL(npgfj)*ncoset(maxlj))
END DO
max_nsgfk = 0
max_ncok = 0
maxlk = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_k(ibasis)%gto_basis_set, maxl=imax, &
nset=kset, nsgf_set=nsgfk, npgf=npgfk)
maxlk = MAX(maxlk, imax)
max_nset = MAX(max_nset, kset)
max_nsgfk = MAX(max_nsgfk, MAXVAL(nsgfk))
max_ncok = MAX(max_ncok, MAXVAL(npgfk)*ncoset(maxlk))
END DO
m_max = maxli + maxlj + maxlk + 1

Expand Down Expand Up @@ -2059,30 +2038,23 @@ SUBROUTINE calc_3c_virial(work_virial, t3c_trace, pref, qs_env, &
!$ nthread = omp_get_max_threads()

!$OMP PARALLEL DEFAULT(NONE) &
!$OMP SHARED (nthread,maxli,maxlk,maxlj,i,work_virial,pref,&
!$OMP basis_i,basis_j,basis_k,dr_ij,dr_jk,dr_ik,ncoset,&
!$OMP potential_parameter,der_eps,tspj,spi,spk,max_ncoi,max_nsgfk,&
!$OMP max_nsgfj,max_ncok,natom,nl_3c,t3c_trace,cell,particle_set) &
!$OMP PRIVATE (lib,nl_3c_iter,ikind,jkind,kkind,iatom,jatom,katom,rij,rjk,rik,i_xyz,j_xyz,&
!$OMP first_sgf_i,lmax_i,lmin_i,npgfi,nseti,nsgfi,rpgf_i,set_radius_i,&
!$OMP sphi_i,zeti,kind_radius_i,first_sgf_j,lmax_j,lmin_j,npgfj,nsetj,nsgfj,rpgf_j,&
!$OMP set_radius_j,sphi_j,zetj,kind_radius_j,first_sgf_k,lmax_k,lmin_k,npgfk,nsetk,nsgfk,&
!$OMP rpgf_k,set_radius_k,sphi_k,zetk,kind_radius_k,djk,dij,dik,ncoi,ncoj,ncok,sgfi,sgfj,&
!$OMP sgfk,dijk_j,dijk_k,ri,rj,rk,max_contraction_i,max_contraction_j,tmp_block,&
!$OMP max_contraction_k,iset,jset,kset,block_t_i,blk_size,dijk_contr,cpp_buffer,ccp_buffer,&
!$OMP block_start_j,block_end_j,block_start_k,block_end_k,block_start_i,block_end_i,found,&
!$OMP sp,mepos,bo,block_t_k,der_ext_i,der_ext_j,der_ext_k,ablock,force,scoord,&
!$OMP block_k_not_zero,der_k_zero,skip,der_j_zero,block_t_j,block_j_not_zero)
!$OMP SHARED (nthread,maxli,maxlk,maxlj,i,work_virial,pref,basis_i,basis_j,basis_k,dr_ij,dr_jk,dr_ik,&
!$OMP ncoset,potential_parameter,der_eps,tspj,spi,spk,natom,nl_3c,t3c_trace,cell,particle_set) &
!$OMP PRIVATE (lib,nl_3c_iter,ikind,jkind,kkind,iatom,jatom,katom,rij,rjk,rik,i_xyz,j_xyz,first_sgf_i,&
!$OMP lmax_i,lmin_i,npgfi,nseti,nsgfi,rpgf_i,set_radius_i,sphi_i,zeti,kind_radius_i,first_sgf_j,&
!$OMP lmax_j,lmin_j,npgfj,nsetj,nsgfj,rpgf_j,set_radius_j,sphi_j,zetj,kind_radius_j,first_sgf_k,&
!$OMP lmax_k,lmin_k,npgfk,nsetk,nsgfk,rpgf_k,set_radius_k,sphi_k,zetk,kind_radius_k,djk,dij,dik,&
!$OMP ncoi,ncoj,ncok,sgfi,sgfj,sgfk,dijk_j,dijk_k,ri,rj,rk,max_contraction_i,max_contraction_j,&
!$OMP tmp_block,max_contraction_k,iset,jset,kset,block_t_i,blk_size,dijk_contr,found,sp,mepos,&
!$OMP block_start_j,block_end_j,block_start_k,block_end_k,block_start_i,block_end_i,block_t_k,&
!$OMP bo,der_ext_i,der_ext_j,der_ext_k,ablock,force,scoord,skip,cpp_buffer,ccp_buffer,&
!$OMP block_k_not_zero,der_k_zero,der_j_zero,block_t_j,block_j_not_zero)

mepos = 0
!$ mepos = omp_get_thread_num()

CALL cp_libint_init_3eri1(lib, MAX(maxli, maxlj, maxlk))
CALL cp_libint_set_contrdepth(lib, 1)

!pre-allocate contraction buffers
ALLOCATE (cpp_buffer(max_nsgfj*max_ncok), ccp_buffer(max_nsgfj*max_nsgfk*max_ncoi))

CALL neighbor_list_3c_iterator_create(nl_3c_iter, nl_3c)

!We split the provided bounds among the threads such that each threads works on a different set of atoms
Expand Down Expand Up @@ -2385,10 +2357,9 @@ SUBROUTINE build_3c_integrals(t3c, filter_eps, qs_env, &

INTEGER :: block_end_i, block_end_j, block_end_k, block_start_i, block_start_j, &
block_start_k, egfi, handle, handle2, i, iatom, ibasis, ikind, ilist, imax, iset, jatom, &
jcell, jkind, jset, katom, kcell, kkind, kset, m_max, max_ncoi, max_ncoj, max_ncok, &
max_nset, max_nsgfi, max_nsgfj, max_nsgfk, maxli, maxlj, maxlk, mepos, natom, nbasis, &
ncell_RI, ncoi, ncoj, ncok, nimg, nseti, nsetj, nsetk, nthread, op_ij, op_jk, op_pos_prv, &
sgfi, sgfj, sgfk, unit_id
jcell, jkind, jset, katom, kcell, kkind, kset, m_max, max_ncoj, max_nset, max_nsgfi, &
maxli, maxlj, maxlk, mepos, natom, nbasis, ncell_RI, ncoi, ncoj, ncok, nimg, nseti, &
nsetj, nsetk, nthread, op_ij, op_jk, op_pos_prv, sgfi, sgfj, sgfk, unit_id
INTEGER, ALLOCATABLE, DIMENSION(:) :: img_to_RI_cell_prv
INTEGER, DIMENSION(2) :: bo
INTEGER, DIMENSION(3) :: blk_idx, blk_size, cell_j, cell_k, &
Expand Down Expand Up @@ -2525,7 +2496,6 @@ SUBROUTINE build_3c_integrals(t3c, filter_eps, qs_env, &
!Need the max l for each basis for libint and max nset, nco and nsgf for LIBXSMM contraction
nbasis = SIZE(basis_i)
max_nsgfi = 0
max_ncoi = 0
max_nset = 0
maxli = 0
DO ibasis = 1, nbasis
Expand All @@ -2534,29 +2504,22 @@ SUBROUTINE build_3c_integrals(t3c, filter_eps, qs_env, &
maxli = MAX(maxli, imax)
max_nset = MAX(max_nset, iset)
max_nsgfi = MAX(max_nsgfi, MAXVAL(nsgfi))
max_ncoi = MAX(max_ncoi, MAXVAL(npgfi)*ncoset(maxli))
END DO
max_nsgfj = 0
max_ncoj = 0
maxlj = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_j(ibasis)%gto_basis_set, maxl=imax, &
nset=jset, nsgf_set=nsgfj, npgf=npgfj)
maxlj = MAX(maxlj, imax)
max_nset = MAX(max_nset, jset)
max_nsgfj = MAX(max_nsgfj, MAXVAL(nsgfj))
max_ncoj = MAX(max_ncoj, MAXVAL(npgfj)*ncoset(maxlj))
END DO
max_nsgfk = 0
max_ncok = 0
maxlk = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_k(ibasis)%gto_basis_set, maxl=imax, &
nset=kset, nsgf_set=nsgfk, npgf=npgfk)
maxlk = MAX(maxlk, imax)
max_nset = MAX(max_nset, kset)
max_nsgfk = MAX(max_nsgfk, MAXVAL(nsgfk))
max_ncok = MAX(max_ncok, MAXVAL(npgfk)*ncoset(maxlk))
END DO
m_max = maxli + maxlj + maxlk

Expand Down Expand Up @@ -2632,10 +2595,9 @@ SUBROUTINE build_3c_integrals(t3c, filter_eps, qs_env, &

!$OMP PARALLEL DEFAULT(NONE) &
!$OMP SHARED (nthread,do_kpoints_prv,kp_index_lbounds,kp_index_ubounds,maxli,maxlk,maxlj,bounds_i,&
!$OMP bounds_j,bounds_k,nimg,basis_i,basis_j,basis_k,dr_ij,dr_jk,dr_ik,ncoset,&
!$OMP potential_parameter,int_eps,t3c,tspj,spi,spk,debug,cell_to_index,max_ncoi,max_nsgfk,&
!$OMP max_nsgfj,max_ncok,natom,nl_3c,cell,op_pos_prv,do_hfx_kpoints_prv,RI_range,ncell_RI, &
!$OMP img_to_RI_cell_prv) &
!$OMP bounds_j,bounds_k,nimg,basis_i,basis_j,basis_k,dr_ij,dr_jk,dr_ik,ncoset,int_eps,t3c,&
!$OMP tspj,spi,spk,debug,cell_to_index,natom,nl_3c,cell,op_pos_prv,do_hfx_kpoints_prv,&
!$OMP RI_range,ncell_RI,img_to_RI_cell_prv,potential_parameter) &
!$OMP PRIVATE (lib,nl_3c_iter,ikind,jkind,kkind,iatom,jatom,katom,rij,rjk,rik,cell_j,cell_k,&
!$OMP prefac,jcell,kcell,first_sgf_i,lmax_i,lmin_i,npgfi,nseti,nsgfi,rpgf_i,set_radius_i,&
!$OMP sphi_i,zeti,kind_radius_i,first_sgf_j,lmax_j,lmin_j,npgfj,nsetj,nsgfj,rpgf_j,&
Expand All @@ -2651,10 +2613,6 @@ SUBROUTINE build_3c_integrals(t3c, filter_eps, qs_env, &

CALL cp_libint_init_3eri(lib, MAX(maxli, maxlj, maxlk))
CALL cp_libint_set_contrdepth(lib, 1)

!pre-allocate contraction buffers
ALLOCATE (cpp_buffer(max_nsgfj*max_ncok), ccp_buffer(max_nsgfj*max_nsgfk*max_ncoi))

CALL neighbor_list_3c_iterator_create(nl_3c_iter, nl_3c)

!We split the provided bounds among the threads such that each threads works on a different set of atoms
Expand Down
39 changes: 11 additions & 28 deletions src/xas_tdp_integrals.F
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,8 @@ SUBROUTINE fill_pqX_tensor(pq_X, ab_nl, ac_nl, basis_set_list_a, basis_set_list_
CHARACTER(len=*), PARAMETER :: routineN = 'fill_pqX_tensor'
INTEGER :: egfa, egfb, egfc, handle, i, iatom, ibasis, ikind, ilist, imax, iset, jatom, &
jkind, jset, katom, kkind, kset, m_max, max_ncob, max_ncoc, max_nset, max_nsgfa, &
max_nsgfb, maxli, maxlj, maxlk, mepos, nbasis, ncoa, ncob, ncoc, ni, nj, nk, nseta, &
nsetb, nsetc, nthread, sgfa, sgfb, sgfc, unit_id
jkind, jset, katom, kkind, kset, m_max, max_nset, maxli, maxlj, maxlk, mepos, nbasis, &
ncoa, ncob, ncoc, ni, nj, nk, nseta, nsetb, nsetc, nthread, sgfa, sgfb, sgfc, unit_id
INTEGER, DIMENSION(:), POINTER :: la_max, la_min, lb_max, lb_min, lc_max, &
lc_min, npgfa, npgfb, npgfc, nsgfa, &
nsgfb, nsgfc
Expand Down Expand Up @@ -324,35 +323,27 @@ SUBROUTINE fill_pqX_tensor(pq_X, ab_nl, ac_nl, basis_set_list_a, basis_set_list_
!Need the max l for each basis for libint (and overall max #of sets for screening)
nbasis = SIZE(basis_set_list_a)
max_nsgfa = 0
max_nset = 0
maxli = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_set_list_a(ibasis)%gto_basis_set, &
maxl=imax, nset=iset, nsgf_set=nsgfa)
maxli = MAX(maxli, imax)
max_nset = MAX(max_nset, iset)
max_nsgfa = MAX(max_nsgfa, MAXVAL(nsgfa))
END DO
max_nsgfb = 0
max_ncob = 0
maxlj = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_set_list_b(ibasis)%gto_basis_set, &
maxl=imax, nset=iset, nsgf_set=nsgfb, npgf=npgfb)
maxlj = MAX(maxlj, imax)
max_nset = MAX(max_nset, iset)
max_nsgfb = MAX(max_nsgfb, MAXVAL(nsgfb))
max_ncob = MAX(max_ncob, MAXVAL(npgfb)*ncoset(maxlj))
END DO
maxlk = 0
max_ncoc = 0
DO ibasis = 1, nbasis
CALL get_gto_basis_set(gto_basis_set=basis_set_list_c(ibasis)%gto_basis_set, &
maxl=imax, nset=iset, npgf=npgfc)
maxlk = MAX(maxlk, imax)
max_nset = MAX(max_nset, iset)
max_ncoc = MAX(max_ncoc, MAXVAL(npgfc)*ncoset(maxlk))
END DO
m_max = maxli + maxlj + maxlk
Expand Down Expand Up @@ -483,27 +474,19 @@ SUBROUTINE fill_pqX_tensor(pq_X, ab_nl, ac_nl, basis_set_list_a, basis_set_list_
CALL o3c_iterator_create(o3c, o3c_iterator, nthread=nthread)
!$OMP PARALLEL DEFAULT(NONE) &
!$OMP SHARED (pq_X,do_screen,max_nset,basis_set_list_a,max_contra,max_contrb,max_contrc,max_nsgfa,&
!$OMP basis_set_list_b, basis_set_list_c,ncoset,screen_radius,potential_parameter,max_ncob,&
!$OMP my_eps_screen,maxli,maxlj,maxlk,my_sort_bc,nthread,o3c,o3c_iterator,tspa,spb,spc,&
!$OMP max_ncoc,max_nsgfb) &
!$OMP PRIVATE (lib,i,mepos,work,iset,ncoa,sgfa,egfa,nseta,&
!$OMP iatom,ikind,jatom,jkind,katom,kkind,rij,rik,rjk,basis_set_a,nsetb,&
!$OMP la_max,la_min,lb_max,lb_min,lc_max,lc_min,npgfa,npgfb,npgfc,nsgfa,nsgfb,nsgfc,ri,rk,&
!$OMP first_sgfa,first_sgfb,first_sgfc,set_radius_a,set_radius_b,set_radius_c, nsetc,rj,&
!$OMP rpgf_a,rpgf_b,rpgf_c,zeta,zetb,zetc,basis_set_b,basis_set_c,dij,dik,djk,ni,nj,nk,&
!$OMP iabc,sabc,jset,kset,ncob,ncoc,sgfb,sgfc,egfb,egfc,sabc_ext,cpp_buffer,ccp_buffer)
!$OMP SHARED (pq_X,do_screen,max_nset,basis_set_list_a,max_contra,max_contrb,max_contrc,&
!$OMP basis_set_list_b, basis_set_list_c,ncoset,screen_radius,potential_parameter,&
!$OMP my_eps_screen,maxli,maxlj,maxlk,my_sort_bc,nthread,o3c,o3c_iterator,tspa,spb,spc) &
!$OMP PRIVATE (lib,i,mepos,work,iset,ncoa,sgfa,egfa,nseta,iatom,ikind,jatom,jkind,katom,kkind,&
!$OMP rij,rik,rjk,basis_set_a,nsetb,la_max,la_min,lb_max,lb_min,lc_max,lc_min,npgfa,&
!$OMP npgfb,npgfc,nsgfa,nsgfb,nsgfc,ri,rk,first_sgfa,first_sgfb,first_sgfc,nsetc,&
!$OMP set_radius_a,set_radius_b,set_radius_c,rj,rpgf_a,rpgf_b,rpgf_c,zeta,zetb,&
!$OMP zetc,basis_set_b,basis_set_c,dij,dik,djk,ni,nj,nk,iabc,sabc,jset,kset,&
!$OMP ncob,ncoc,sgfb,sgfc,egfb,egfc,sabc_ext,cpp_buffer,ccp_buffer)
mepos = 0
!$ mepos = omp_get_thread_num()
!pre-allocate work buffers for LIBXSMM contract in order to avoid memory ops
ALLOCATE (cpp_buffer(max_nsgfa*max_ncob))
ALLOCATE (ccp_buffer(max_nsgfa*max_nsgfb*max_ncoc))
!note: we do not initalize libxsmm here, because we assume that if the flag is there, then it
! is done in dbcsr already
!each thread need its own libint object (internals may change at different rates)
CALL cp_libint_init_3eri(lib, MAX(maxli, maxlj, maxlk))
CALL cp_libint_set_contrdepth(lib, 1)
Expand Down

0 comments on commit e39d237

Please sign in to comment.