mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
[fortran/en] do concurrent (#4531)
This commit is contained in:
parent
d6244e00c1
commit
7dce0227a7
@ -438,6 +438,35 @@ contains
|
||||
end function complex_abs
|
||||
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user