使用MKL和用户(非64位对齐)分配数据是否存在问题?
我试图使用MKL功能
vcMulByConj(...)
使用OpenCV mat对象分配的继续内存。 (我相信它是用"新的" c ++操作实现的)
我经常收到访问冲突异常。
我知道MKL可以使用64位对齐分配
void* datta = MKL_malloc(n*n*sizeof(double),64);
我知道性能漏洞,虽然我可以使用自己的未对齐内存来使用MKL功能吗?
我的记忆模型有问题吗?
我会就IPP功能提出同样的问题
更新
MKL和IPP都与64位对齐,我可以为MKL和IPP库调用使用相同的内存分配机制吗?
(假设两个库都使用ippiMalloc())
最佳
答案 0 :(得分:1)
是的,你可以。
使用对齐内存是一种可以提高性能的建议,但这不是必需的。 MKL函数通常可以在对齐和未对齐数据上正常工作。
https://software.intel.com/en-us/node/528558
对于IPP,情况也是如此。请参阅以下链接中的最后一个Q& A.