加速减少Xeon CPU,GPU和Xeon Phi操作的方法

时间:2014-07-22 16:21:00

标签: hpc intel-mkl intel-mic xeon-phi

我有一个应用程序,其中大型矩阵上的减少操作(如sum,max)是瓶颈。我需要尽快做到这一点。 mkl中有向量指令吗?

是否有特殊的硬件单元在xeon cpu,gpu或mic上处理它?

一般来说,如何在这些硬件中实施减少操作?

3 个答案:

答案 0 :(得分:1)

您可以使用KNC vpermd和vpermf32x4指令以及swizzle修饰符来实现您自己的简单缩减,以在向量单元内执行跨道操作。

这些C的内在函数等价物是 mm512 {mask} permute *和 mm512 {mask} swizzle * family。

但是,我建议您首先查看数组符号减少操作,它已经在MIC上实现了高性能。

查看可用的缩减操作here,并查看来自英特尔的泰勒基德的this视频,讨论从20分30秒开始对Xeon Phi的数组符号缩减。

编辑:我注意到你也在寻找基于CPU的解决方案。数组符号减少在Xeon上也能很好地工作。

答案 1 :(得分:0)

原来没有任何硬件内置减少运算电路。 我想象一个16位17位加法器连接到128位向量寄存器以进行降低和运算。也许这是因为没有人遇到减少操作的重大瓶颈。好吧,我发现的最佳解决方案是openmp中的#pragma omp parallel for reduction。我还没有测试它的性能。

答案 2 :(得分:0)

此操作将受带宽限制,因此矢量化几乎肯定无关紧要。您希望硬件具有最大的内存带宽。英特尔至强融核处理器具有比Xeon处理器更多的聚合带宽(但不是每核心带宽)。