Я использую MKL для умножения матриц в моем текущем проекте.
Иногда - просто в режиме RELEASE и без шаблона, ни для способа воспроизвести ошибку - мое приложение вылетает или возвращает мне сумасшедшие числа (полностью вне ожидаемого, согласно моим юнит-тестам).Опять же, это что-то вроде случайности, но я с подозрением отношусь к параллелизму MKL.
А вот странность - свойства Intel Performance Libraries установлены следующим образом (смотрите вложения):
Отладка - Использование Intel MKL - Параллельный Релиз - Использование Intel MKL - Последовательный
Этоникогда не зависал в режиме отладки.
В качестве следственного действия я заставил его во время выполнения быть последовательным, вызывая
mkl_set_num_threads(1);
каждый раз, когда нужно использовать мои подпрограммы MKL, как для DEBUG, так и для DEBUG.РЕЛИЗ.
Результаты?
Он больше не рухнул и не дал мне сумасшедших чисел в качестве вывода.
Это намного медленнее, хотя, очевидно.Я подозревал, что вышеприведенный флаг фактически не работает, потому что он не должен вести себя по-другому.
Вы когда-нибудь сталкивались с такой ситуацией, или я что-то не так сделал прямо здесь?
Я хочувернуться в многопоточный режим, но я не чувствую себя комфортно с этими случайными ошибками.
Большое спасибо.