From adc3d37a11b51bc5779a1c883808dacd8938ddcf Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 9 Jul 2019 13:17:44 +0100 Subject: [PATCH] Memory allocation fixes for CSR/CSC. --- base/serial/impl/psb_c_csc_impl.f90 | 5 ++--- base/serial/impl/psb_c_csr_impl.f90 | 9 ++++----- base/serial/impl/psb_d_csc_impl.f90 | 5 ++--- base/serial/impl/psb_d_csr_impl.f90 | 9 ++++----- base/serial/impl/psb_s_csc_impl.f90 | 5 ++--- base/serial/impl/psb_s_csr_impl.f90 | 9 ++++----- base/serial/impl/psb_z_csc_impl.f90 | 5 ++--- base/serial/impl/psb_z_csr_impl.f90 | 9 ++++----- 8 files changed, 24 insertions(+), 32 deletions(-) diff --git a/base/serial/impl/psb_c_csc_impl.f90 b/base/serial/impl/psb_c_csc_impl.f90 index 23e8f4a8..6491636e 100644 --- a/base/serial/impl/psb_c_csc_impl.f90 +++ b/base/serial/impl/psb_c_csc_impl.f90 @@ -2298,7 +2298,7 @@ subroutine psb_c_mv_csc_from_coo(a,b,info) call move_alloc(b%ja,itemp) call move_alloc(b%ia,a%ia) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%icp,info) + call psb_realloc(nc+1,a%icp,info) call b%free() a%icp(:) = 0 @@ -2570,8 +2570,7 @@ subroutine psb_c_csc_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ia,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(max(nz,a%get_nrows()+1,& - & a%get_ncols()+1), a%icp,info) + if (info == psb_success_) call psb_realloc(a%get_ncols()+1, a%icp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 diff --git a/base/serial/impl/psb_c_csr_impl.f90 b/base/serial/impl/psb_c_csr_impl.f90 index e248c5e1..9ad735d5 100644 --- a/base/serial/impl/psb_c_csr_impl.f90 +++ b/base/serial/impl/psb_c_csr_impl.f90 @@ -1712,8 +1712,7 @@ subroutine psb_c_csr_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ja,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(& - & max(nz,a%get_nrows()+1,a%get_ncols()+1),a%irp,info) + if (info == psb_success_) call psb_realloc(a%get_nrows()+1,a%irp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 @@ -2962,7 +2961,7 @@ subroutine psb_c_cp_csr_from_coo(a,b,info) call move_alloc(tmp%ia,itemp) call move_alloc(tmp%ja,a%ja) call move_alloc(tmp%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call tmp%free() else @@ -2980,7 +2979,7 @@ subroutine psb_c_cp_csr_from_coo(a,b,info) call psb_safe_ab_cpy(b%ia,itemp,info) if (info == psb_success_) call psb_safe_ab_cpy(b%ja,a%ja,info) if (info == psb_success_) call psb_safe_ab_cpy(b%val,a%val,info) - if (info == psb_success_) call psb_realloc(max(nr+1,nc+1),a%irp,info) + if (info == psb_success_) call psb_realloc(nr+1,a%irp,info) endif @@ -3131,7 +3130,7 @@ subroutine psb_c_mv_csr_from_coo(a,b,info) call move_alloc(b%ia,itemp) call move_alloc(b%ja,a%ja) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call b%free() diff --git a/base/serial/impl/psb_d_csc_impl.f90 b/base/serial/impl/psb_d_csc_impl.f90 index ef68164d..39fb8ff5 100644 --- a/base/serial/impl/psb_d_csc_impl.f90 +++ b/base/serial/impl/psb_d_csc_impl.f90 @@ -2298,7 +2298,7 @@ subroutine psb_d_mv_csc_from_coo(a,b,info) call move_alloc(b%ja,itemp) call move_alloc(b%ia,a%ia) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%icp,info) + call psb_realloc(nc+1,a%icp,info) call b%free() a%icp(:) = 0 @@ -2570,8 +2570,7 @@ subroutine psb_d_csc_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ia,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(max(nz,a%get_nrows()+1,& - & a%get_ncols()+1), a%icp,info) + if (info == psb_success_) call psb_realloc(a%get_ncols()+1, a%icp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 diff --git a/base/serial/impl/psb_d_csr_impl.f90 b/base/serial/impl/psb_d_csr_impl.f90 index a6fb0b18..47c4de8e 100644 --- a/base/serial/impl/psb_d_csr_impl.f90 +++ b/base/serial/impl/psb_d_csr_impl.f90 @@ -1712,8 +1712,7 @@ subroutine psb_d_csr_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ja,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(& - & max(nz,a%get_nrows()+1,a%get_ncols()+1),a%irp,info) + if (info == psb_success_) call psb_realloc(a%get_nrows()+1,a%irp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 @@ -2962,7 +2961,7 @@ subroutine psb_d_cp_csr_from_coo(a,b,info) call move_alloc(tmp%ia,itemp) call move_alloc(tmp%ja,a%ja) call move_alloc(tmp%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call tmp%free() else @@ -2980,7 +2979,7 @@ subroutine psb_d_cp_csr_from_coo(a,b,info) call psb_safe_ab_cpy(b%ia,itemp,info) if (info == psb_success_) call psb_safe_ab_cpy(b%ja,a%ja,info) if (info == psb_success_) call psb_safe_ab_cpy(b%val,a%val,info) - if (info == psb_success_) call psb_realloc(max(nr+1,nc+1),a%irp,info) + if (info == psb_success_) call psb_realloc(nr+1,a%irp,info) endif @@ -3131,7 +3130,7 @@ subroutine psb_d_mv_csr_from_coo(a,b,info) call move_alloc(b%ia,itemp) call move_alloc(b%ja,a%ja) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call b%free() diff --git a/base/serial/impl/psb_s_csc_impl.f90 b/base/serial/impl/psb_s_csc_impl.f90 index 6318db9d..a28f3f76 100644 --- a/base/serial/impl/psb_s_csc_impl.f90 +++ b/base/serial/impl/psb_s_csc_impl.f90 @@ -2298,7 +2298,7 @@ subroutine psb_s_mv_csc_from_coo(a,b,info) call move_alloc(b%ja,itemp) call move_alloc(b%ia,a%ia) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%icp,info) + call psb_realloc(nc+1,a%icp,info) call b%free() a%icp(:) = 0 @@ -2570,8 +2570,7 @@ subroutine psb_s_csc_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ia,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(max(nz,a%get_nrows()+1,& - & a%get_ncols()+1), a%icp,info) + if (info == psb_success_) call psb_realloc(a%get_ncols()+1, a%icp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 diff --git a/base/serial/impl/psb_s_csr_impl.f90 b/base/serial/impl/psb_s_csr_impl.f90 index a5bca393..424d54e0 100644 --- a/base/serial/impl/psb_s_csr_impl.f90 +++ b/base/serial/impl/psb_s_csr_impl.f90 @@ -1712,8 +1712,7 @@ subroutine psb_s_csr_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ja,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(& - & max(nz,a%get_nrows()+1,a%get_ncols()+1),a%irp,info) + if (info == psb_success_) call psb_realloc(a%get_nrows()+1,a%irp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 @@ -2962,7 +2961,7 @@ subroutine psb_s_cp_csr_from_coo(a,b,info) call move_alloc(tmp%ia,itemp) call move_alloc(tmp%ja,a%ja) call move_alloc(tmp%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call tmp%free() else @@ -2980,7 +2979,7 @@ subroutine psb_s_cp_csr_from_coo(a,b,info) call psb_safe_ab_cpy(b%ia,itemp,info) if (info == psb_success_) call psb_safe_ab_cpy(b%ja,a%ja,info) if (info == psb_success_) call psb_safe_ab_cpy(b%val,a%val,info) - if (info == psb_success_) call psb_realloc(max(nr+1,nc+1),a%irp,info) + if (info == psb_success_) call psb_realloc(nr+1,a%irp,info) endif @@ -3131,7 +3130,7 @@ subroutine psb_s_mv_csr_from_coo(a,b,info) call move_alloc(b%ia,itemp) call move_alloc(b%ja,a%ja) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call b%free() diff --git a/base/serial/impl/psb_z_csc_impl.f90 b/base/serial/impl/psb_z_csc_impl.f90 index bd14f8a3..149d3f54 100644 --- a/base/serial/impl/psb_z_csc_impl.f90 +++ b/base/serial/impl/psb_z_csc_impl.f90 @@ -2298,7 +2298,7 @@ subroutine psb_z_mv_csc_from_coo(a,b,info) call move_alloc(b%ja,itemp) call move_alloc(b%ia,a%ia) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%icp,info) + call psb_realloc(nc+1,a%icp,info) call b%free() a%icp(:) = 0 @@ -2570,8 +2570,7 @@ subroutine psb_z_csc_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ia,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(max(nz,a%get_nrows()+1,& - & a%get_ncols()+1), a%icp,info) + if (info == psb_success_) call psb_realloc(a%get_ncols()+1, a%icp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 diff --git a/base/serial/impl/psb_z_csr_impl.f90 b/base/serial/impl/psb_z_csr_impl.f90 index b258eaac..92eef6a8 100644 --- a/base/serial/impl/psb_z_csr_impl.f90 +++ b/base/serial/impl/psb_z_csr_impl.f90 @@ -1712,8 +1712,7 @@ subroutine psb_z_csr_reallocate_nz(nz,a) call psb_realloc(max(nz,ione),a%ja,info) if (info == psb_success_) call psb_realloc(max(nz,ione),a%val,info) - if (info == psb_success_) call psb_realloc(& - & max(nz,a%get_nrows()+1,a%get_ncols()+1),a%irp,info) + if (info == psb_success_) call psb_realloc(a%get_nrows()+1,a%irp,info) if (info /= psb_success_) then call psb_errpush(psb_err_alloc_dealloc_,name) goto 9999 @@ -2962,7 +2961,7 @@ subroutine psb_z_cp_csr_from_coo(a,b,info) call move_alloc(tmp%ia,itemp) call move_alloc(tmp%ja,a%ja) call move_alloc(tmp%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call tmp%free() else @@ -2980,7 +2979,7 @@ subroutine psb_z_cp_csr_from_coo(a,b,info) call psb_safe_ab_cpy(b%ia,itemp,info) if (info == psb_success_) call psb_safe_ab_cpy(b%ja,a%ja,info) if (info == psb_success_) call psb_safe_ab_cpy(b%val,a%val,info) - if (info == psb_success_) call psb_realloc(max(nr+1,nc+1),a%irp,info) + if (info == psb_success_) call psb_realloc(nr+1,a%irp,info) endif @@ -3131,7 +3130,7 @@ subroutine psb_z_mv_csr_from_coo(a,b,info) call move_alloc(b%ia,itemp) call move_alloc(b%ja,a%ja) call move_alloc(b%val,a%val) - call psb_realloc(max(nr+1,nc+1),a%irp,info) + call psb_realloc(nr+1,a%irp,info) call b%free()