mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 17:41:41 +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 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
|
||||||
|
Loading…
Reference in New Issue
Block a user