1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-08-01 04:20:39 +02:00

[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

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