提高 Eigen 性能 - 最佳实践

Improve Eigen performance - best practices

我有以下使用 Eigen 矩阵的代码:

template<class T>
T lfactorial(T x)
{
    return static_cast<T>(std::lgamma(x + 1));
};

void eigen1(const MatrixXd& m, const MatrixXd& a)
{
    MatrixXd W = a.unaryExpr(ptr_fun(lfactorial<double>));
    const auto sum = m.unaryExpr(ptr_fun(lfactorial<double>)).sum();
}

有没有更快的方法来计算矩阵 W 以及 sum

在我的程序中,我必须通过将一元表达式应用于同一输入矩阵来计算大量矩阵。最好的方法是什么?

lgamma 函数最近 added to the Eigen API,因此将在下一版本的 Eigen 中原生支持。

下个版本即将发布,同时您可以在http://bitbucket.org/eigen/eigen/get/3.3-beta1.tar.bz2

下载测试版