インテル® Fortran コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
Intrinsic Subroutine (Generic): Prefetches data from the specified address on one memory cache line. Intrinsic subroutines cannot be passed as actual arguments.
CALL MM_PREFETCH (address[,hint] [,fault] [,exclusive])
address |
(Input) Is the name of a scalar or array; it can be of any type or rank. It specifies the address of the data on the cache line to prefetch. |
|||||||||||||||
hint |
(Input; optional) Is an optional default integer constant with one of the following values:
The preceding constants are defined in file fordef.for on Windows* systems and file fordef.f on Linux* and macOS* systems. If hint is omitted, 0 is assumed. |
|||||||||||||||
fault |
(Input; optional) Is an optional default logical constant. If .TRUE. is specified, page faults are allowed to occur, if necessary; if .FALSE. is specified, page faults are not allowed to occur. If fault is omitted, .FALSE. is assumed. This argument is currently ignored. |
|||||||||||||||
exclusive |
(Input; optional) Is an optional default logical constant. If.TRUE. is specified, you get exclusive ownership of the cache line because you intend to assign to it; if .FALSE. is specified, there is no exclusive ownership. If exclusive is omitted, .FALSE.is assumed. This argument is currently ignored. |
subroutine spread_lf (a, b)
PARAMETER (n = 1025)
real*8 a(n,n), b(n,n), c(n)
do j = 1,n
do i = 1,100
a(i, j) = b(i-1, j) + b(i+1, j)
call mm_prefetch (a(i+20, j), 1)
call mm_prefetch (b(i+21, j), 1)
enddo
enddo
print *, a(2, 567)
stop
end