Как распараллелить броненосец в Visual Studio - PullRequest
0 голосов
/ 23 октября 2019

В моем проекте я использую броненосец с Intel MKL для своих матричных операций в C ++. Я активировал OpenMP в VS2017 , но моя проблема в том, что броненосец не работает параллельно. Когда я проверяю использование ядра, только одно ядро ​​выполняет вычисления. Должен ли я сделать некоторые другие конфигурации для броненосца?

Спасибо

1 Ответ

0 голосов
/ 25 октября 2019

Да, размер проблемы не слишком мал. В этом случае, если Intel MKL был вызван в многопоточный режим, вам может быть проще это проверить, установив подробное значение для MKL (export MKL_VERBOSE = 1 переменная среды) и проверьте выходные данные. В выводе вы можете увидеть что-то вроде следующего (я использовал пример процедуры SYEVD 2000x2000 из LAPACK): MKL_VERBOSE Intel (R) MKL 2019.0 Обновление 5 Сборка продукта 20190808 для Intel (R) 64 DSYEVD (V, U, 2000,0x2b2fb3f75010,2000), 0xf91f10,0x2b2fba13e080,8012001,0xfa7f80,10003,0) 466,55 мс CNR: OFF Dyn: 1 FastMM: 1 TID: 0 NThr: 20 NTHR == 20 указывает, что это многопоточный режим, и dsyevd использует20 потоков.

Вот ссылка , которая показывает более подробную информацию об этой функции.

...