我可以将 MKL 函数与用户分配的数据一起使用吗?

Can I use MKL functions with user allocated data?

将 MKL 与用户(非 64 位对齐)分配的数据一起使用是否存在问题?

我正在尝试使用 MKL 函数

vcMulByConj(...)

继续使用 OpenCV mat 对象分配内存。 (我相信它是使用 "new" c++ 操作实现的)

我经常收到访问冲突异常。

我知道 MKL 可以使用 64 位对齐分配

void* datta = MKL_malloc(n*n*sizeof(double),64);

我知道性能漏洞,但我可以使用我自己的未对齐内存来使用 MKL 函数吗?

我的内存模型有问题吗?

对于 IPP 功能,我会问同样的问题


更新:

MKL 和 IPP 都对齐到 64 位,我可以对 MKL 和 IPP 库调用使用相同的内存分配机制吗?

(假设对两个库都使用 ippiMalloc())

最佳

是的,你可以。

使用对齐内存是一个可以提高性能的建议,但这不是必需的。 MKL 函数通常可以在对齐和未对齐的数据上正常工作。

https://software.intel.com/en-us/node/528558

对于IPP,也是如此。看下面最后的问答link.

https://software.intel.com/en-us/articles/performance-tools-for-software-developers-memory-function-faq