prefetchおよびnoprefetchディレクティブは、データ・プリフェッチがメモリ参照に生成されるか、されないかを指定します。これは、コンパイラが使用する手法に影響を与えます。このディレクティブの構文は次のとおりです。
#pragma noprefetch
#pragma prefetch
#pragma prefetch a,b
ループの前にprefetch aを置いて、ループ内で式a[j]を使用する場合、コンパイラはループ内のa[j+d]のプリフェッチを挿入します。dはコンパイラによって決定されます。 -O3オプションがオンのとき、このディレクティブはサポートされます。
prefetchディレクティブの例 |
---|
#pragma noprefetch b #pragma prefetch a
for(i=0; i<m; i++) { a[i]=b[i]+1; } |