英特尔平行工作室2011年 - 并行总结

时间:2011-07-20 18:07:31

标签: intel-parallel-studio

我有一个类似的序列代码:

sum = a;
sum += b;
sum += c;
sum += d;

我想将它与这样的东西并行化:

temp1 = a + b     and in the same time     temp2 = c + d
sum = temp1 + temp2

如何使用英特尔Parallel studio工具进行操作?

感谢!!!

1 个答案:

答案 0 :(得分:1)

假设所有变量都是整数或浮点类型,那么完全没有意义并行化这个代码(在不同的线程/核心执行的意义上),因为开销将远远超过任何好处。它。该示例中的适用并行性是在单个CPU上的多个计算单元和/或向量化的级别。如今,优化编译器非常复杂,可以自动利用它,而无需更改代码;但是,如果您希望您可以明确使用临时变量,请参阅问题的第二部分。

如果您只是出于好奇而提出要求:英特尔Parallel Studio提供了几种并行化代码的方法。例如,让我们将Cilk关键字与C ++ 11 lambda函数一起使用:

#include <cilk/cilk.h>
...
temp = cilk_spawn [=]{ return a+b; }();
sum = c+d;
cilk_sync;
sum += temp;

不要期望从中获得性能(参见上文),除非您使用计算量过大的类operator+

相关问题