Как использовать Intel MKL в Armadillo для инвертирования неособой матрицы?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Intel MKL в Armadillo для инвертирования неособой матрицы?

Сообщение Anonymous »

Код броненосца:

Код: Выделить всё

    #define ARMA_DONT_USE_WRAPPER
#define ARMA_USE_BLAS
#define ARMA_USE_LAPACK

arma::mat A = { { 0.0013 , 0.1741 , 0.9885 , 0.1662 , 0.8760 } ,
{ 0.1933 , 0.7105 , 0.1191 , 0.4508 , 0.9559 } ,
{ 0.5850 , 0.3040 , 0.0089 , 0.0571 , 0.5393 } ,
{ 0.3503 , 0.0914 , 0.5317 , 0.7833 , 0.4621 } ,
{ 0.8228 , 0.1473 , 0.6018 , 0.5199 , 0.8622 } };
A.print("A: ");

arma::mat B = arma::inv(A);
B.print("inv(A): ");
arma::mat I = A*B;
I.print("I: ");
Цели MKL из CMAKE:

Код: Выделить всё

[cmake] -- MKL_VERSION: 2024.2.0
[cmake] -- MKL_ROOT: C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2
[cmake] -- MKL_ARCH: None, set to ` intel64` by default
[cmake] -- MKL_LINK: None, set to ` dynamic` by default
[cmake] -- MKL_INTERFACE_FULL: None, set to ` intel_ilp64` by default
[cmake] -- MKL_THREADING: None, set to ` intel_thread` by default
[cmake] -- MKL_MPI: None, set to ` intelmpi` by default
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/lib/mkl_scalapack_ilp64_dll.lib
[cmake] -- Found DLL: C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/bin/mkl_scalapack_ilp64.2.dll
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/lib/mkl_cdft_core_dll.lib
[cmake] -- Found DLL: C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/bin/mkl_cdft_core.2.dll
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/lib/mkl_intel_ilp64_dll.lib
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/lib/mkl_intel_thread_dll.lib
[cmake] -- Found DLL: C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/bin/mkl_intel_thread.2.dll
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/lib/mkl_core_dll.lib
[cmake] -- Found DLL: C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/bin/mkl_core.2.dll
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/lib/mkl_blacs_ilp64_dll.lib
[cmake] -- Found DLL: C:/Program Files (x86)/Intel/oneAPI/mkl/2024.2/bin/mkl_blacs_ilp64.2.dll
[cmake] -- Found C:/Program Files (x86)/Intel/oneAPI/compiler/latest/lib/libiomp5md.lib
[cmake] -- Imported oneMKL targets: MKL::mkl_scalapack_ilp64;MKL::mkl_cdft_core;MKL::mkl_intel_ilp64;MKL::mkl_intel_thread;MKL::mkl_core;MKL::mkl_blacs_ilp64;MKL::MKL
После запуска приложения происходит сбой и отображается следующее сообщение:
ОШИБКА Intel oneMKL: параметр 1 был неверным при входе в DGETRF.
Armadillo можно настроить, отредактировав файл include/armadillo_bits/config.hpp:
  • ARMA_DONT_USE_WRAPPER -> Отключить использование библиотеки-оболочки Armadillo во время выполнения (libarmadillo.so) при вызове функций LAPACK, BLAS, ARPACK и SuperLU. Вам потребуется напрямую подключиться к BLAS, LAPACK и т. д. (например, -lblas -llapack)
  • ARMA_USE_LAPACK -> Включите использование LAPACK или высокоскоростную замену LAPACK (например, OpenBLAS, Intel MKL или платформу Accelerate). Armadillo требует LAPACK для таких функций, как svd(), inv(), eig_sym(),solve() и т. д.
  • ARMA_DONT_USE_LAPACK -> Отключить использование LAPACK; переопределяет ARMA_USE_LAPACK
они были определены в коде, но ошибка сохраняется.
Я работаю в Qt Creator IDE 14, используя MSVC 2022 (64 бит) (Qt 6.8), Armadillo 14.0.3 и Intel OneAPI MKL 2024.2>

Подробнее здесь: https://stackoverflow.com/questions/791 ... lar-matrix
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»