gcc是否有内存对齐编译指示,类似#pragma vector aligned
英特尔编译器中? 我想告诉编译器使用对齐的加载/存储指令来优化特定的循环。为了避免可能的混淆,这不是关于结构打包。gcc内存对齐编译指示
e.g:
#if defined (__INTEL_COMPILER)
#pragma vector aligned
#endif
for (int a = 0; a < int(N); ++a) {
q10 += Ix(a,0,0)*Iy(a,1,1)*Iz(a,0,0);
q11 += Ix(a,0,0)*Iy(a,0,1)*Iz(a,1,0);
q12 += Ix(a,0,0)*Iy(a,0,0)*Iz(a,0,1);
q13 += Ix(a,1,0)*Iy(a,0,0)*Iz(a,0,1);
q14 += Ix(a,0,0)*Iy(a,1,0)*Iz(a,0,1);
q15 += Ix(a,0,0)*Iy(a,0,0)*Iz(a,1,1);
}
感谢
既不。我有数组,该编译器无法确定对齐方式。 我必须具体说明使用对齐的加载和存储。它不会是编译器选项,它必须是编译指示,对每个单独的循环进行矢量化。 – Anycorn 2010-04-21 23:46:46
为什么你不能在数组上使用可变属性? – 2010-04-21 23:47:18
数组是malloced的,加上数组的结构相当复杂。 具体来说,它是一个四维张量 – Anycorn 2010-04-21 23:48:51