Skip to content

Commit

Permalink
Merge pull request #293 from OrderN/tk-fix-multiply-kernel-memory-leak
Browse files Browse the repository at this point in the history
Fix multiply kernel memory leak
  • Loading branch information
davidbowler authored Dec 21, 2023
2 parents 0dc004d + 1ced294 commit acc8cc2
Show file tree
Hide file tree
Showing 10 changed files with 100 additions and 96 deletions.
2 changes: 2 additions & 0 deletions src/matrix_module.f90
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,8 @@ subroutine allocate_halo(halo,mx_iprim,mx_icover,mx_pcover)
if(stat/=0) then
call cq_abort('alloc_halo: error allocating ndimi')
endif
halo%ndimi = 0
halo%ndimj = 0
call stop_timer(tmr_std_allocation)
return
end subroutine allocate_halo
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_default.f90
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -341,12 +341,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_gemm.f90
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -398,12 +398,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_ompDoii.f90
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -380,12 +380,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_ompDoik.f90
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -380,12 +380,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_ompDoji.f90
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -389,12 +389,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_ompDojk.f90
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -380,12 +380,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_ompGemm.f90
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -386,12 +386,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
24 changes: 12 additions & 12 deletions src/multiply_kernel_ompGemm_m.f90
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,12 @@ subroutine m_kern_max(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: c(lenc)
integer, optional :: debug
! Remote indices
integer(integ) :: ib_nd_acc(mx_part)
integer(integ) :: ibaddr(mx_part)
integer(integ) :: nbnab(mx_part)
integer(integ) :: ibpart(mx_part*mx_absb)
integer(integ) :: ibseq(mx_part*mx_absb)
integer(integ) :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb) ! Automatic array
integer :: nbkbeg, k, k_in_part, k_in_halo, j, jpart, jseq
Expand Down Expand Up @@ -391,12 +391,12 @@ subroutine m_kern_min(k_off, kpart, ib_nd_acc, ibaddr, nbnab, &
real(double) :: b(lenb)
real(double) :: c(lenc)
! dimension declarations
integer :: ibaddr(mx_part)
integer :: ib_nd_acc(mx_part)
integer :: nbnab(mx_part)
integer :: ibpart(mx_part*mx_absb)
integer :: ibseq(mx_part*mx_absb)
integer :: bndim2(mx_part*mx_absb)
integer(integ), intent(in) :: ib_nd_acc(:)
integer(integ), intent(in) :: ibaddr(:)
integer(integ), intent(in) :: nbnab(:)
integer(integ), intent(in) :: ibpart(:)
integer(integ), intent(in) :: ibseq(:)
integer(integ), intent(in) :: bndim2(:)
! Local variables
integer :: jbnab2ch(mx_absb)
integer :: k, k_in_part, k_in_halo, nbkbeg, j, jpart, jseq
Expand Down
2 changes: 2 additions & 0 deletions src/multiply_module.f90
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,8 @@ subroutine mat_mult(myid,a,lena,b,lenb,c,lenc,a_b_c,debug)
lenb_rem = a_b_c%comms%ilen3rec(ipart,nnode)
end if
allocate(b_rem(lenb_rem))
part_array = 0
b_rem = zero
call prefetch(kpart,a_b_c%ahalo,a_b_c%comms,a_b_c%bmat,icall,&
n_cont,part_array,a_b_c%bindex,b_rem,lenb_rem,b,myid,ilen2,&
mx_msg_per_part,a_b_c%parts,a_b_c%prim,a_b_c%gcs,(recv_part(nnode)-1)*2)
Expand Down

0 comments on commit acc8cc2

Please sign in to comment.