我是否需要将mkl_malloc用于Intel_mkl程序?

时间:2014-06-15 15:25:58

标签: intel-mkl

我正在学习用Intel mkl编写程序,在示例代码'mkl_malloc'和'mkl_free'中使用,我试图用'malloc'和'free'替换它们,程序仍然有效。那么,我需要使用mkl的版本吗?

1 个答案:

答案 0 :(得分:3)

您没有严格需要来使用MKL记忆功能。如果您这样做,您的代码将无错运行。但是,为了获得最佳性能和可重现的结果,为MKL库提供64字节边界对齐的数据,并且MKL内存函数是一种方便的方法。

这是reference to performance

  

要提高调用英特尔MKL的应用程序的性能,请对齐   您的数组在64字节边界上并确保领先   数组的维数可以被64整除。

reference to reproducibility

  

英特尔MKL获得良好性能的方法之一是使用新的   连续几代英特尔®提供的说明   处理器。其中一些指令使计算更有效   通过对多个浮动执行相同的浮点运算   点数一下子。加载其中一些指令的方式   但是取决于数据在内存中的位置。如果在一次运行中   在程序中,数据恰好沿着16字节对齐   边界,然后数组中的前2个双精度数   如果数组是偏移的,则在下一次运行时将它们组合在一起   从那个内存边界,然后是第二和第三双精度   数字组合在一起。这种顺序的差异可能会导致   两次运行相同程序时的结果不同   连续所有设置保持不变。

与未对齐数据(如果有)的差异可能取决于您使用的特定CPU,我相信对于最近的处理器而言,影响并不像前几代那样大。即便如此,如果可能的话,最好还是调整数据。