我可以期望某些STL函数实现可以自动向量化吗?

时间:2017-08-02 11:07:56

标签: c++ visual-c++ stl visual-studio-2017

当然这不适用于所有方法,但对于像std::min_element这样的std::vector<char>,我应该期望实现可以自动矢量化吗?

std::fill将是一个更直接的例子,但我怀疑它只是做memset或其他事情。

其次,如何检查STL调用何时最终使用Visual Studio 2017进行自动矢量化?我可以通过/qvec-report:2告诉我关于我自己的循环等等,但它没有说明STL函数。

1 个答案:

答案 0 :(得分:1)

从C ++ 17开始,存在许多标准库算法的并行版本。您可以使用std::execution::parstd::execution::par_unseq作为第一个参数调用并行版本。 std::execution::par_unseq允许(但不要求)矢量化。

#include <algorithm>
#include <execution>
#include <vector>

int main() {
    std::vector<int> vec = /* whatever */
    auto res = std::min_element(std::execution::par_unseq, vec.begin(), vec.end());
    return 0;
}