Pentium M 搭載のノートパソコンで、Visual Studio .NET 2003 と
Intel Compiler 9.0 を用いています。
---------- test.c ----------
int a[32];
int main(){
int i;
for(i = 1; i < 32; i ++) a[i] = i;
}
--------------------
のようなプログラムを Visual Studio で SIMD 化したいのですが
うまくいきません。
コマンドプロンプトから、
icl -QxB -Fa test.c
を実行すると、
test.c(5) : (col. 3) remark: LOOP WAS VECTORIZED.
のようなメッセージが表示され、test.asm に
$B1$2:
movdqa XMMWORD PTR _a[eax+4], xmm0 ;5.28
paddd xmm0, xmm1 ;5.22
add eax, 16 ;5.3
cmp eax, 124 ;5.3
jb $B1$2 ; Prob 96% ;5.3
と出力されることから SIMD 化されているのが分かります。
しかし、Visual Studio 上で同様のコードを記述し、
・ Convert to use Intel C++ Project System を実行
・ プロジェクトのプロパティから、最適化項目で /QxB、ファイル出力項目で /Fa を設定、
してビルドしても、SIMD 化されません。
LOOP WAS VECTORIZED のメッセージは出力されませんし、
test.asm の中身を見ても movdqa ... 相当の記述は見当たりません。
本人的には上記 2 つは同様のことを行っているつもりなのですが、
Visual Studio 上ではさらにプロパティの設定等が必要なのでしょうか ?
ご教示願います。
ツイート | ![]() |