给出一个示例函数(示例如下),可以使用OpenMP对for循环进行并行化处理,也可以使用向量化进行矢量化(假设编译器进行矢量化处理)。OpenMP和矢量化之间的比较
例
void function(float* a, float* b, float* c, int n)
{
for(int i = 0; i < n; i++)
{
c[i] = a[i] * b[i];
}
}
我想知道
- 是否会有OpenMP的 和矢量
- 之间的任何性能上的差异是否有任何优势,在使用一个以上的其他。
- 是否可以同时使用OpenMP和矢量化。
注:我没有给一个虽然有关不同SSE版本,(如线程数目的OpenMP可扩展至)处理器/核心的数量,等等。我的问题是一般。答案也可以更具体。