From 38ace69d8699c089aff2334895447686814ccde2 Mon Sep 17 00:00:00 2001 From: Connor Aird Date: Tue, 6 Feb 2024 17:23:46 +0000 Subject: [PATCH 1/5] Thread xyz loops --- src/exx_evalpao.f90 | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/exx_evalpao.f90 b/src/exx_evalpao.f90 index 768c3eeb4..94e9e9bef 100644 --- a/src/exx_evalpao.f90 +++ b/src/exx_evalpao.f90 @@ -60,7 +60,7 @@ subroutine exx_phi_on_grid(inode,atom,spec,extent,xyz,nsuppfuncs,phi_on_grid,r_i real(double) :: grid_spacing real(double) :: x, y, z, r real(double) :: int, n, rest - real(double) :: xyz_delta(3) + real(double) :: xyz_delta(3), xyz_offset(3) integer :: count1, nsf1 integer :: ierr, stat @@ -155,19 +155,21 @@ subroutine exx_phi_on_grid(inode,atom,spec,extent,xyz,nsuppfuncs,phi_on_grid,r_i pz = pz -ijk(3)+1 end if overlap_box !print*, + xyz_offset = xyz + rst + !$omp parallel do collapse(3) schedule(runtime) default(none) & + !$omp shared(mx,my,mz,px,py,pz,grid_spacing,xyz_offset,pao,spec,phi_on_grid,i_dummy,exx_cartesian) & + !$omp private(nx,ny,nz,x,y,z,count,l1,acz,m1,pao_val) grid_x_loop: do nx = mx, px - x = xyz(1) + real(nx,double)*grid_spacing + rst(1) - grid_y_loop: do ny = my, py - y = xyz(2) + real(ny,double)*grid_spacing + rst(2) - grid_z_loop: do nz = mz, pz - z = xyz(3) + real(nz,double)*grid_spacing + rst(3) + x = nx*grid_spacing + xyz_offset(1) + y = ny*grid_spacing + xyz_offset(2) + z = nz*grid_spacing + xyz_offset(3) !norm = sqrt((x-xyz(1))**2+(y-xyz(2))**2+(z-xyz(3))**2) !if (norm <= r_h) then - r = sqrt(x*x+y*y+z*z) + !r = sqrt(x*x+y*y+z*z) !if(r < very_small) then ! r = zero !end if @@ -182,7 +184,7 @@ subroutine exx_phi_on_grid(inode,atom,spec,extent,xyz,nsuppfuncs,phi_on_grid,r_i magn_loop: do m1 = -l1, l1 pao_val = zero - y_val = zero + !y_val = zero call evaluate_pao(i_dummy,spec,l1,acz,m1,x,y,z,pao_val,exx_cartesian) From 70b1539083b93428df45e1d73c19a80585b72ae5 Mon Sep 17 00:00:00 2001 From: Connor Aird Date: Wed, 7 Feb 2024 09:45:25 +0000 Subject: [PATCH 2/5] Ending parallel do --- src/exx_evalpao.f90 | 1 + 1 file changed, 1 insertion(+) diff --git a/src/exx_evalpao.f90 b/src/exx_evalpao.f90 index 94e9e9bef..21b23d695 100644 --- a/src/exx_evalpao.f90 +++ b/src/exx_evalpao.f90 @@ -200,6 +200,7 @@ subroutine exx_phi_on_grid(inode,atom,spec,extent,xyz,nsuppfuncs,phi_on_grid,r_i end do grid_z_loop end do grid_y_loop end do grid_x_loop + !$omp end parallel do end if From ffc30254e73c0af2ad57772fb450e558aca880ee Mon Sep 17 00:00:00 2001 From: Connor Aird Date: Wed, 7 Feb 2024 11:05:18 +0000 Subject: [PATCH 3/5] Adding missing omp variables --- src/exx_evalpao.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/exx_evalpao.f90 b/src/exx_evalpao.f90 index 21b23d695..ccf7d6cd2 100644 --- a/src/exx_evalpao.f90 +++ b/src/exx_evalpao.f90 @@ -157,8 +157,8 @@ subroutine exx_phi_on_grid(inode,atom,spec,extent,xyz,nsuppfuncs,phi_on_grid,r_i !print*, xyz_offset = xyz + rst !$omp parallel do collapse(3) schedule(runtime) default(none) & - !$omp shared(mx,my,mz,px,py,pz,grid_spacing,xyz_offset,pao,spec,phi_on_grid,i_dummy,exx_cartesian) & - !$omp private(nx,ny,nz,x,y,z,count,l1,acz,m1,pao_val) + !$omp shared(mx,my,mz,px,py,pz,grid_spacing,xyz_offset,pao,spec,phi_on_grid,i_dummy,exx_cartesian,extent) & + !$omp private(nx,ny,nz,x,y,z,count1,l1,acz,m1,pao_val) grid_x_loop: do nx = mx, px grid_y_loop: do ny = my, py grid_z_loop: do nz = mz, pz From 3dfeabf8262434cc84e2195e9ac31074f4f1fff3 Mon Sep 17 00:00:00 2001 From: Connor Aird Date: Mon, 12 Feb 2024 09:44:38 +0000 Subject: [PATCH 4/5] Removing unnecessary zeroing of arrays --- src/exx_evalpao.f90 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/exx_evalpao.f90 b/src/exx_evalpao.f90 index ccf7d6cd2..f1f5ee24c 100644 --- a/src/exx_evalpao.f90 +++ b/src/exx_evalpao.f90 @@ -182,10 +182,7 @@ subroutine exx_phi_on_grid(inode,atom,spec,extent,xyz,nsuppfuncs,phi_on_grid,r_i zeta_loop: do acz = 1, pao(spec)%angmom(l1)%n_zeta_in_angmom magn_loop: do m1 = -l1, l1 - - pao_val = zero - !y_val = zero - + call evaluate_pao(i_dummy,spec,l1,acz,m1,x,y,z,pao_val,exx_cartesian) ! Put pao_val directly into phi_on_grid From be386f1caa172fa8b8af8a7e502768223e4d68ec Mon Sep 17 00:00:00 2001 From: Connor Aird Date: Mon, 12 Feb 2024 09:47:16 +0000 Subject: [PATCH 5/5] Only zeroing if needed --- src/ol_ang_coeff_subs.f90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ol_ang_coeff_subs.f90 b/src/ol_ang_coeff_subs.f90 index 57424d799..04dc44318 100644 --- a/src/ol_ang_coeff_subs.f90 +++ b/src/ol_ang_coeff_subs.f90 @@ -881,7 +881,6 @@ subroutine evaluate_pao(i_vector,sp,l,nz,m,x,y,z,pao_val,system) ! j = floor(r/del_r) + 1 ! - pao_val = zero if( j+1 <= npts ) then rr = real(j,double)*del_r a = (rr - r)/del_r @@ -893,6 +892,8 @@ subroutine evaluate_pao(i_vector,sp,l,nz,m,x,y,z,pao_val,system) r3 = pao(sp)%angmom(l)%zeta(nz)%table2(j) r4 = pao(sp)%angmom(l)%zeta(nz)%table2(j+1) pao_val = a*r1 + b*r2 + c*r3 + d*r4 + else + pao_val = zero end if ! if ( .not. cartesian ) then ! if want to work in Polar coordinates