[fortran/en] do concurrent (#4531)

This commit is contained in:
Ily 2024-05-15 03:18:59 +02:00 committed by GitHub
parent d6244e00c1
commit 7dce0227a7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -438,6 +438,35 @@ contains
end function complex_abs end function complex_abs
end module fruity end module fruity
! ISO Standard Fortran 2008 introduced the DO CONCURRENT construct to allow you
! to express loop-level parallelism
integer :: i
real :: array(100)
DO CONCURRENT (i = 1:size(array))
array(i) = sqrt(i**i)
END DO
! Only calls to pure functions are allowed inside the loop and we can declare
! multiple indices:
integer :: x, y
real :: array(8, 16)
do concurrent (x = 1:size(array, 1), y = 1:size(array, 2))
array(x, y) = real(x)
end do
! loop indices can also declared inside the contruct:
real :: array(8, 16)
do concurrent (integer :: x = 1:size(array, 1), y = 1:size(array, 2))
array(x, y) = real(x)
end do
``` ```
### More Resources ### More Resources