collapse loop

oacc_loloum
tloloum 7 months ago
parent e6fa1d17a2
commit 55d1067ec2

@ -47,7 +47,7 @@ contains
row_counts(row) = row_counts(row) + 1 row_counts(row) = row_counts(row) + 1
else else
info = psb_err_invalid_mat_state_ info = psb_err_invalid_mat_state_
goto 9999 !goto 9999
end if end if
end do end do

@ -48,7 +48,7 @@ contains
row_counts(row) = row_counts(row) + 1 row_counts(row) = row_counts(row) + 1
else else
info = psb_err_invalid_mat_state_ info = psb_err_invalid_mat_state_
goto 9999 !goto 9999
end if end if
end do end do

@ -64,8 +64,11 @@ contains
do i = 1, m do i = 1, m
y(i) = beta * y(i) y(i) = beta * y(i)
end do end do
#if (__GNUC__ <= 13)
!$acc parallel loop present(a, x, y)
#else
!$acc parallel loop collapse(2) present(a, x, y) !$acc parallel loop collapse(2) present(a, x, y)
#endif
do i = 1, nhacks do i = 1, nhacks
do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 do j = a%hkoffs(i), a%hkoffs(i + 1) - 1
y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j)) y(a%irn(j)) = y(a%irn(j)) + alpha * a%val(j) * x(a%ja(j))

@ -23,7 +23,8 @@ contains
if (present(side)) then if (present(side)) then
if (side == 'L') then if (side == 'L') then
!$acc parallel loop collapse(2) present(a, d) ! $ a parallel loop collapse(2) present(a, d)
!$acc parallel loop present(a, d)
do i = 1, nhacks do i = 1, nhacks
do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 do j = a%hkoffs(i), a%hkoffs(i + 1) - 1
k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1 k = (j - a%hkoffs(i)) / nzt + (i - 1) * hksz + 1
@ -31,7 +32,8 @@ contains
end do end do
end do end do
else if (side == 'R') then else if (side == 'R') then
!$acc parallel loop collapse(2) present(a, d) ! $ a parallel loop collapse(2) present(a, d)
!$acc parallel loop present(a, d)
do i = 1, nhacks do i = 1, nhacks
do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 do j = a%hkoffs(i), a%hkoffs(i + 1) - 1
a%val(j) = a%val(j) * d(a%ja(j)) a%val(j) = a%val(j) * d(a%ja(j))
@ -39,7 +41,8 @@ contains
end do end do
end if end if
else else
!$acc parallel loop collapse(2) present(a, d) ! $ a parallel loop collapse(2) present(a, d)
!$acc parallel loop present(a, d)
do i = 1, nhacks do i = 1, nhacks
do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 do j = a%hkoffs(i), a%hkoffs(i + 1) - 1
a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1) a%val(j) = a%val(j) * d(j - a%hkoffs(i) + 1)

@ -20,7 +20,8 @@ contains
nhacks = (a%get_nrows() + hksz - 1) / hksz nhacks = (a%get_nrows() + hksz - 1) / hksz
nzt = a%nzt nzt = a%nzt
!$acc parallel loop collapse(2) present(a) ! $ a parallel loop collapse(2) present(a)
!$acc parallel loop present(a)
do i = 1, nhacks do i = 1, nhacks
do j = a%hkoffs(i), a%hkoffs(i + 1) - 1 do j = a%hkoffs(i), a%hkoffs(i + 1) - 1
a%val(j) = a%val(j) * d a%val(j) = a%val(j) * d

Loading…
Cancel
Save