Hope I'm asking the correct crowd...
Given the following:
const int N=128;
Array<2,complex<float> > u(N,N);
Iota<2>::Iota_t ij(iota(u.domain());
Iota<2>::Index_t I(ij.comp(0));
Iota<2>::Index_t J(ij.comp(1));
Array<1,complex<float> > cx(N), cy(N);
// Values for u, cx, cy are filled elsewhere.
// Then the following is called:
void compute(){
u *= cx(I)*cy(J); // runs 4X slower with icc than KCC
}
When I time this routine, I find that it runs about 4X slower when
compiled with Intel's icc (Version 7, -O3 -DNOPAssert -DNOCTASSERT) than
with KCC (version 4.0f, +K3 -DNOPAssert, -DNOCTAssert). As expected,
the KCC version runs as fast as hand-written loops.
Do others observe this same sluggish behavior with icc? Am I missing
some obvious compile flag?
thanks
Paul