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