Armadillo поэлементная скорость умножения

Является ли скорость поэлементного умножения (%) в броненосце зависит от того, установлен ли LAPACK / BLAS? В настоящее время я бегу броненосцем без их установки, и скорость ужасна.
Хорошо, вот самый простой код, который требует вечности для расчета

    #include <iostream>
#include "conio.h"

#include "armadillo"
using namespace arma;
using namespace std;

int main(int argc, char** argv)
{int n=250;
mat X=ones(n,n);

mat quan;for (int xi=1;xi<=256;xi++)
{
quan = exp(X)%exp(X);
}getch();return 0;
}

0

Решение

Убедитесь, что в настройках компилятора включены флаги оптимизации (например, в GCC или Clang, используйте -O2 или -O3). Армадилло использует метапрограммирование шаблона, и, как и в любой библиотеке шаблонов C ++, для полной эффективности требуется, чтобы в компиляторе была включена оптимизация. Например, это также относится к библиотекам шаблонов C ++, таким как Boost.

1

Другие решения

Почему вы рассчитываете exp(X) дважды? Вы не тестируете поэлементное умножение; вы, очевидно, тесты exp(), Кроме того, почему вы не используете expmat() или же expmat_sym()?

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector