【发布时间】:2015-09-07 10:59:16
【问题描述】:
我了解矢量化的基本思想。我正在考虑将我的一个程序转换为矢量化版本。但这似乎很复杂。
有一个表(二维数组)table[M][N],以及两个向量X[1..4] 和Y[1..4]。我可以进行如下操作吗?有什么想法吗?
X[1..4] = table[X[1..4]][Y[1..4]]
(连续版本:X[i] = table[X[i]][Y[i]])
换句话说,下面的循环可以向量化吗?
for(k=0; k<4; k++) {
tmp1 = X[k];
tmp2 = Y[k];
X[k] = table[tmp1][tmp2];
}
注意:X[] 始终包含不同的值。
目前是用C语言实现的。
【问题讨论】:
-
可能不会,但这取决于 X 的类型以及 M 和 N 的值(它可能只适用于较小的 M、N 值)。跨度>
-
我不太明白同时遍历 x 和 y 维度有何意义,但也许您正在解决一些人为的数学问题。
-
哪个向量指令集?
-
@harold 我正在使用 GCC(试用版本 4.8、4.9、5)
标签: arrays gcc vector vectorization simd