Как я могу включить собственную многопоточность при умножении матриц? - PullRequest
0 голосов
/ 20 марта 2019

Есть ли способ улучшить производительность умножения собственных матриц, используя OpenMP или любой другой подход для обеспечения многопоточности? В настоящее время включение OpenMP ничего не дает.

inline void multiply1(
    Eigen::MatrixXd &m,
    std::vector<double> &vector,
    std::vector<double> &result
) 
    {
        int size = (int)vector.size();
        result.resize(size);
        Eigen::Map<Eigen::VectorXd> Evector(vector.data(), size);

        Eigen::VectorXd a;
        a.noalias() = m * Evector;

        Eigen::VectorXd::Map(&result[0], a.size()) = a;
    }

Эта функция вызывается множество раз во время выполнения, поэтому она очень сильно влияет на общее время вычислений.

...