向量化代码是个好主意吗?关于何时进行的良好做法是什么?下面会发生什么?

最佳答案

向量化意味着编译器检测到您的独立指令可以作为一个SIMD指令执行。通常的例子是,如果你做类似的事情

for(i=0; i<N; i++){
  a[i] = a[i] + b[i];
}

将被矢量化为(使用 vector 符号)
for (i=0; i<(N-N%VF); i+=VF){
  a[i:i+VF] = a[i:i+VF] + b[i:i+VF];
}

基本上,编译器会选择一个可以同时对数组的VF元素执行的操作,并执行N/VF次,而不是执行N次单个操作。

它提高了性能,但对体系结构提出了更多要求。

关于c++ - 向量化是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1516622/

10-11 02:06