OpenMPで並列化することをやってみたのですが、
GCCの方がICCよりも圧倒的に速いのですが、こんなことはよくあるのですか?
ちなみにOptionは

GCC(4.3.2): -O3 -fopenmp -funroll-loops
ICC(11.0.0): -O3 -openmp -openmp -openmp-lib compat

コードはこんな感じのがいくつもあります。
GCCでうひょ早っ!と思ったので、ICCならもっとと思ったのですが、
そうならないのがびっくりです。何かいけないことはありそうでしょうか?
一応どちらも並列化はされており、CPU使用率はほぼ100%になっています。

void func(void){
7 int i,j,k;
8 unsigned char index_x;
9 #pragma omp parallel for private(i,j,k,index_x)
10 for(i=0;i<XS-1;i++){
11 for(j=1;j<YS-1;j++){
12 for(k=1;k<ZS-1;k++){
13
14 index_x = IDX[i][j][k];
15
16 AX[i][j][k] = CX[index_x]*AX[i][j][k]
17 + CLY[index_x]*(BZ[i][j][k]-BZ[i][j-1][k])
18 - CLZ[index_x]*(BY[i][j][k]-BY[i][j][k-1]);
19 }
20 }
21 }
22 }