From 2cd4a513dceed5fae94faf5c65d4222e906ac356 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 23 Mar 2017 15:41:27 +0100 Subject: [PATCH] Accelerated Davidson MRCC --- plugins/MRCC_Utils/davidson.irp.f | 5 +++-- src/Determinants/filter_connected.irp.f | 16 ++++------------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/plugins/MRCC_Utils/davidson.irp.f b/plugins/MRCC_Utils/davidson.irp.f index b96e9585..436b89a4 100644 --- a/plugins/MRCC_Utils/davidson.irp.f +++ b/plugins/MRCC_Utils/davidson.irp.f @@ -1023,7 +1023,7 @@ subroutine H_S2_u_0_mrcc_nstates(v_0,s_0,u_0,H_jj,S2_jj,n,keys_tmp,Nint,istate_i Vt = 0.d0 St = 0.d0 - !$OMP DO SCHEDULE(static,1) + !$OMP DO SCHEDULE(guided) do sh=1,shortcut(0,1) do sh2=sh,shortcut(0,1) exa = 0 @@ -1066,7 +1066,8 @@ subroutine H_S2_u_0_mrcc_nstates(v_0,s_0,u_0,H_jj,S2_jj,n,keys_tmp,Nint,istate_i enddo enddo !$OMP END DO - !$OMP DO SCHEDULE(static,1) + + !$OMP DO SCHEDULE(guided) do sh=1,shortcut(0,2) do i=shortcut(sh,2),shortcut(sh+1,2)-1 org_i = sort_idx(i,2) diff --git a/src/Determinants/filter_connected.irp.f b/src/Determinants/filter_connected.irp.f index ed6aa6d2..b76540f7 100644 --- a/src/Determinants/filter_connected.irp.f +++ b/src/Determinants/filter_connected.irp.f @@ -285,9 +285,7 @@ subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_micro do i=1, N_minilist - mobileMask(1,1) = iand(key_mask_neg(1,1), minilist(1,1,i)) - mobileMask(1,2) = iand(key_mask_neg(1,2), minilist(1,2,i)) - do j=2,Nint + do j=1,Nint mobileMask(j,1) = iand(key_mask_neg(j,1), minilist(j,1,i)) mobileMask(j,2) = iand(key_mask_neg(j,2), minilist(j,2,i)) end do @@ -298,9 +296,7 @@ subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_micro if(n_element(1) + n_element(2) /= 4) then idx_microlist(cur_microlist(0)) = i - microlist(1,1,cur_microlist(0)) = minilist(1,1,i) - microlist(1,2,cur_microlist(0)) = minilist(1,2,i) - do k=2,Nint + do k=1,Nint microlist(k,1,cur_microlist(0)) = minilist(k,1,i) microlist(k,2,cur_microlist(0)) = minilist(k,2,i) enddo @@ -309,10 +305,8 @@ subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_micro do j=1,n_element(1) nt = list(j,1) idx_microlist(cur_microlist(nt)) = i - microlist(1,1,cur_microlist(nt)) = minilist(1,1,i) - microlist(1,2,cur_microlist(nt)) = minilist(1,2,i) ! TODO : Page faults - do k=2,Nint + do k=1,Nint microlist(k,1,cur_microlist(nt)) = minilist(k,1,i) microlist(k,2,cur_microlist(nt)) = minilist(k,2,i) enddo @@ -322,9 +316,7 @@ subroutine create_microlist(minilist, N_minilist, key_mask, microlist, idx_micro do j=1,n_element(2) nt = list(j,2) + mo_tot_num idx_microlist(cur_microlist(nt)) = i - microlist(1,1,cur_microlist(nt)) = minilist(1,1,i) - microlist(1,2,cur_microlist(nt)) = minilist(1,2,i) - do k=2,Nint + do k=1,Nint microlist(k,1,cur_microlist(nt)) = minilist(k,1,i) microlist(k,2,cur_microlist(nt)) = minilist(k,2,i) enddo