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