提高 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
下载测试版
我有以下使用 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
下载测试版