我为 3 维 FFT(MKL 接口)开发了 C 代码,以便在英特尔 MIC 平台上本地运行。
对于复数到复数的转换,数据元素是双精度复数。我使用填充的前导维度,mkl_malloc() 64 字节对齐,并为数组使用 radix-2 维度我最终得到的性能约为 50 Gflop/s。
对于类似类型的转换,我无法在任何地方执行列表。谁能告诉我这对 Xeon Phi 是否合理(满意)?
你的结果看起来不错。
英特尔提供的带有二维浮点数据的FFT 调优指南显示了 100Gflops 的峰值性能。所以双数据上的 50Gflops 应该是合理的。
除了您的问题中提到的因素外,其他因素包括前导尺寸、填充、线程数和亲和力也对性能有很大影响。
您可以参考这些英特尔文档以获取更多信息。
Xeon phi 上 MKL 的文档列表
http://software.intel.com/en-us/articles/intel-mkl-on-the-intel-xeon-phi-coprocessors
在至强 phi 上使用 MKL 的性能提示
在 xeon phi 上调整 dft 函数