Xeon Phi:无法实现完美的内存合并并充分利用SMID单元?

时间:2016-12-28 18:07:17

标签: simd intel-mic coalescing

我有一个处理立方体的GPU / CUDA代码(3D图像,精确的光谱立方体)。将立方体视为一系列图像/切片,或者可选地,将一组光谱视为具有不同空间位置(在正方形上)。图像的每个像素具有不同的x,y值和相同的z。频谱上的每个像素具有相同的x,y但是z变化。多维数据集的内存以某种方式对齐,以便两个连续的内存地址对应于x和x + 1。

在我的CUDA代码中,我配置了每个CUDA线程来处理不同的频谱。这样我就可以实现全局内存合并。然后我将此代码移植到Intel Phi(#pragma offload + OpenMP)。就像在GPU情况下一样,我有每个Phi核心来处理不同的频谱。结果,在此也实现了存储器合并。但是,表现不好。

  • 我认为问题是虽然我已经与全局内存合并,但是每个频谱上的像素不在连续的内存地址上,因此,Phi的矢量化不会提供任何性能提升。 (请记住,每个核心在相关频谱上进行某种缩减;更准确地说,它计算第1,第2和第3矩)。这个想法有意义吗?
  • 如果我没有弄错,为了从SIMD获得性能,你的内存地址必须是连续的,对吗?
  • 因此,似乎在Xeon phi上无法实现完美的内存合并全局内存并同时充分利用SIMD。这有意义还是我完全错了?

PS:我正在使用英特尔至强Phi 7120

0 个答案:

没有答案