Могу ли я использовать функции MKL с данными, выделенными пользователем?

Есть ли проблема с использованием MKL с выделенными пользователем (не 64-битными) данными?

Я пытаюсь использовать функцию MKL

vcMulByConj(...)

с продолжающейся памятью, выделенной с использованием матового объекта OpenCV. (я считаю, что это реализовано с использованием «новой» операции С++)

Я часто получаю исключение нарушения прав доступа.

Я знаю, что MKL будет работать с 64-битным выравниванием.

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

Мне известно об уязвимости производительности, но могу ли я использовать собственную невыровненную память для использования функций MKL?

Есть ли проблемы с моей моделью памяти?

Я бы задал тот же вопрос для функций IPP


Обновлять:

И MKL, и IPP выровнены до 64 бит. Могу ли я использовать один и тот же механизм распределения памяти для вызовов библиотек MKL и IPP?

(Допустим, используя ippiMalloc() для обеих библиотек)

Лучший


person TripleS    schedule 01.08.2016    source источник


Ответы (1)


Да, ты можешь.

Использование выровненной памяти является рекомендацией, которая может повысить производительность, но не является обязательным требованием. Функции MKL обычно корректно работают как с выровненными, так и с невыровненными данными.

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

Для ИП это тоже верно. См. последние вопросы и ответы по следующей ссылке.

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

person kangshiyin    schedule 01.08.2016
comment
Спасибо, и MKL, и IPP выровнены до 64-битной версии. Могу ли я использовать один и тот же механизм выделения памяти для MKL и IPP (используя ippiMalloc() для обеих библиотек)? я обновил свой вопрос - person TripleS; 01.08.2016