Updated use of exscan in CSC

omp-threadsafe
sfilippone 2 years ago
parent 9c248a31e2
commit 05b684ddbb

@ -2228,16 +2228,14 @@ subroutine psb_c_mv_csc_from_coo(a,b,info)
#if defined(OPENMP) #if defined(OPENMP)
!$OMP PARALLEL default(none) & !$OMP PARALLEL default(shared)
!$OMP shared(nr,a,itemp,nza) &
!$OMP private(i,info)
!$OMP WORKSHARE !$OMP WORKSHARE
a%icp(:) = 0 a%icp(:) = 0
!$OMP END WORKSHARE !$OMP END WORKSHARE
!$OMP DO schedule(STATIC) & !$OMP DO schedule(STATIC) &
!$OMP private(k) !$OMP private(k,i)
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
!$OMP ATOMIC UPDATE !$OMP ATOMIC UPDATE
@ -2245,16 +2243,16 @@ subroutine psb_c_mv_csc_from_coo(a,b,info)
!$OMP END ATOMIC !$OMP END ATOMIC
end do end do
!$OMP END DO !$OMP END DO
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
!$OMP END PARALLEL !$OMP END PARALLEL
#else #else
a%icp(:) = 0 a%icp(:) = 0
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
a%icp(i) = a%icp(i) + 1 a%icp(i) = a%icp(i) + 1
end do end do
#endif
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione) call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
#endif
call a%set_host() call a%set_host()

@ -2228,16 +2228,14 @@ subroutine psb_d_mv_csc_from_coo(a,b,info)
#if defined(OPENMP) #if defined(OPENMP)
!$OMP PARALLEL default(none) & !$OMP PARALLEL default(shared)
!$OMP shared(nr,a,itemp,nza) &
!$OMP private(i,info)
!$OMP WORKSHARE !$OMP WORKSHARE
a%icp(:) = 0 a%icp(:) = 0
!$OMP END WORKSHARE !$OMP END WORKSHARE
!$OMP DO schedule(STATIC) & !$OMP DO schedule(STATIC) &
!$OMP private(k) !$OMP private(k,i)
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
!$OMP ATOMIC UPDATE !$OMP ATOMIC UPDATE
@ -2245,16 +2243,16 @@ subroutine psb_d_mv_csc_from_coo(a,b,info)
!$OMP END ATOMIC !$OMP END ATOMIC
end do end do
!$OMP END DO !$OMP END DO
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
!$OMP END PARALLEL !$OMP END PARALLEL
#else #else
a%icp(:) = 0 a%icp(:) = 0
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
a%icp(i) = a%icp(i) + 1 a%icp(i) = a%icp(i) + 1
end do end do
#endif
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione) call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
#endif
call a%set_host() call a%set_host()

@ -2228,16 +2228,14 @@ subroutine psb_s_mv_csc_from_coo(a,b,info)
#if defined(OPENMP) #if defined(OPENMP)
!$OMP PARALLEL default(none) & !$OMP PARALLEL default(shared)
!$OMP shared(nr,a,itemp,nza) &
!$OMP private(i,info)
!$OMP WORKSHARE !$OMP WORKSHARE
a%icp(:) = 0 a%icp(:) = 0
!$OMP END WORKSHARE !$OMP END WORKSHARE
!$OMP DO schedule(STATIC) & !$OMP DO schedule(STATIC) &
!$OMP private(k) !$OMP private(k,i)
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
!$OMP ATOMIC UPDATE !$OMP ATOMIC UPDATE
@ -2245,16 +2243,16 @@ subroutine psb_s_mv_csc_from_coo(a,b,info)
!$OMP END ATOMIC !$OMP END ATOMIC
end do end do
!$OMP END DO !$OMP END DO
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
!$OMP END PARALLEL !$OMP END PARALLEL
#else #else
a%icp(:) = 0 a%icp(:) = 0
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
a%icp(i) = a%icp(i) + 1 a%icp(i) = a%icp(i) + 1
end do end do
#endif
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione) call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
#endif
call a%set_host() call a%set_host()

@ -2228,16 +2228,14 @@ subroutine psb_z_mv_csc_from_coo(a,b,info)
#if defined(OPENMP) #if defined(OPENMP)
!$OMP PARALLEL default(none) & !$OMP PARALLEL default(shared)
!$OMP shared(nr,a,itemp,nza) &
!$OMP private(i,info)
!$OMP WORKSHARE !$OMP WORKSHARE
a%icp(:) = 0 a%icp(:) = 0
!$OMP END WORKSHARE !$OMP END WORKSHARE
!$OMP DO schedule(STATIC) & !$OMP DO schedule(STATIC) &
!$OMP private(k) !$OMP private(k,i)
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
!$OMP ATOMIC UPDATE !$OMP ATOMIC UPDATE
@ -2245,16 +2243,16 @@ subroutine psb_z_mv_csc_from_coo(a,b,info)
!$OMP END ATOMIC !$OMP END ATOMIC
end do end do
!$OMP END DO !$OMP END DO
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
!$OMP END PARALLEL !$OMP END PARALLEL
#else #else
a%icp(:) = 0 a%icp(:) = 0
do k=1,nza do k=1,nza
i = itemp(k) i = itemp(k)
a%icp(i) = a%icp(i) + 1 a%icp(i) = a%icp(i) + 1
end do end do
#endif
call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione) call psi_exscan(nc+1,a%icp,info,shift=ione,ibase=ione)
#endif
call a%set_host() call a%set_host()

Loading…
Cancel
Save