LOOP COUNT (n) ディレクティブはループカウントが n になるように指定します。n は整数定数です。
LOOP COUNT の値はソフトウェアのパイプライン化、ベクトル化およびループ変換に使用されるヒューリスティックに影響を与えます。
!DEC$ LOOP COUNT (10000)
do i =1,m
b(i) = a(i) +1 !This is likely to enable
!the loop to get software-
!pipelined
enddo
ディレクティブの詳細は、『Intel® Fortran Language Reference』(英語) の「General Directives」にある「Directive Enhanced Compilation」を参照してください。
DISTRIBUTE POINT ディレクティブはループ分配の実行優先度を示します。
ループ分配は、大きなループを小さなループに分配することがあります。これは、より多くのループにおいてソフトウェアのパイプライン化を有効にします。ディレクティブをループの内側に置く場合、分配はディレクティブの後で行われ、あらゆるループキャリーの依存性が無視されます。ディレクティブをループの前に置く場合、コンパイラは分配する場所を決定し、データ依存性を監視します。現在、ループの内側に置かれた場合、1 つの distribute ディレクティブのみがサポートされます。
!DEC$ DISTRIBUTE POINT
do i =1, m
b(i) = a(i) +1
....
c(i) = a(i) + b(i) !Compiler will decide where
!to distribute.
!Data dependency is observed
....
d(i) = c(i) + 1
enddo
do i =1, m
b(i) = a(i) +1
....
!DEC$ DISTRIBUTE POINT
call sub(a, n) !Distribution will start here,
!ignoring all loop-carried
!dependency
c(i) = a(i) + b(i)
....
d(i) = c(i) + 1
enddo
ディレクティブの詳細は、『Intel® Fortran Language Reference』(英語) の「General Directives」にある「Directive Enhanced Compilation」を参照してください。