diff --git a/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 index 70931f05..b9110aae 100644 --- a/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_c_soc1_map_bld.F90 @@ -478,7 +478,10 @@ subroutine amg_c_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in end do step3 ! Any leftovers? + !$omp parallel do schedule(static) shared(ilaggr,info)& + !$omp private(ii,i,j,k,nz,icol,val,ip) do i=1, nr + if (info /= 0) cycle if (ilaggr(i) < 0) then nz = (acsr%irp(i+1)-acsr%irp(i)) if (nz == 1) then @@ -489,9 +492,11 @@ subroutine amg_c_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! other processes. ilaggr(i) = -(nrglob+nr) else + !$omp atomic write info=psb_err_internal_error_ + !$omp end atomic call psb_errpush(info,name,a_err='Fatal error: non-singleton leftovers') - goto 9999 + cycle endif end if end do diff --git a/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 index bd40a2a4..2b01f3e5 100644 --- a/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_d_soc1_map_bld.F90 @@ -478,7 +478,10 @@ subroutine amg_d_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in end do step3 ! Any leftovers? + !$omp parallel do schedule(static) shared(ilaggr,info)& + !$omp private(ii,i,j,k,nz,icol,val,ip) do i=1, nr + if (info /= 0) cycle if (ilaggr(i) < 0) then nz = (acsr%irp(i+1)-acsr%irp(i)) if (nz == 1) then @@ -489,9 +492,11 @@ subroutine amg_d_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! other processes. ilaggr(i) = -(nrglob+nr) else + !$omp atomic write info=psb_err_internal_error_ + !$omp end atomic call psb_errpush(info,name,a_err='Fatal error: non-singleton leftovers') - goto 9999 + cycle endif end if end do diff --git a/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 index 109abc00..069c924e 100644 --- a/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_s_soc1_map_bld.F90 @@ -478,7 +478,10 @@ subroutine amg_s_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in end do step3 ! Any leftovers? + !$omp parallel do schedule(static) shared(ilaggr,info)& + !$omp private(ii,i,j,k,nz,icol,val,ip) do i=1, nr + if (info /= 0) cycle if (ilaggr(i) < 0) then nz = (acsr%irp(i+1)-acsr%irp(i)) if (nz == 1) then @@ -489,9 +492,11 @@ subroutine amg_s_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! other processes. ilaggr(i) = -(nrglob+nr) else + !$omp atomic write info=psb_err_internal_error_ + !$omp end atomic call psb_errpush(info,name,a_err='Fatal error: non-singleton leftovers') - goto 9999 + cycle endif end if end do diff --git a/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 b/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 index 3efee9e8..d618fe1c 100644 --- a/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 +++ b/amgprec/impl/aggregator/amg_z_soc1_map_bld.F90 @@ -478,7 +478,10 @@ subroutine amg_z_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in end do step3 ! Any leftovers? + !$omp parallel do schedule(static) shared(ilaggr,info)& + !$omp private(ii,i,j,k,nz,icol,val,ip) do i=1, nr + if (info /= 0) cycle if (ilaggr(i) < 0) then nz = (acsr%irp(i+1)-acsr%irp(i)) if (nz == 1) then @@ -489,9 +492,11 @@ subroutine amg_z_soc1_map_bld(iorder,theta,clean_zeros,a,desc_a,nlaggr,ilaggr,in ! other processes. ilaggr(i) = -(nrglob+nr) else + !$omp atomic write info=psb_err_internal_error_ + !$omp end atomic call psb_errpush(info,name,a_err='Fatal error: non-singleton leftovers') - goto 9999 + cycle endif end if end do