Re: [eigen] Use Eigen as BLAS

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Dear Mathieu and Gael,



Am 19.02.2017 um 11:32 schrieb Gael Guennebaud:
Yes and no. There is one BLAS API in eigen/blas, but its goal is to compile a BLAS compatible library. Converting it to a header-only lib would be a bad idea because BLAS functions are not templated, so you would end up compiling
the entire blas every time... Then if you are looking for something like:

MatrixXd A, B, C;
gemm(A,B,alpha,C,1);

I'm afraid it's a little bit more complicated, as one has to deal with the leading dimension parameter.
In addition the interface should be given by e.g.

void dgemm( const char*, const char*, const int&, const int&, const int&, const double&,
            const double*, const int&, const double*, const int&, const double&,  double*, const int&);


I'm not sure to see the point.

In case one is the author/coauthor of a code using BLAS calls I see several good reasons
in wanting a header only BLAS version.

(1) A good starting point for switching to Eigen, e.g. benchmarking the own application, before performing a switch

(2) Using the same code but for new types, e.g. multiprecision.

(3) Easier packaging / deployment of an application.

(4) Improved debugging. I havn't used valgrind for quiet some time, but in older days MKL, ACML, and Atlas gave me hard
    times in using valgrind. In addition Eigen would allow for range checking.

(5) Sometimes compute cluster have an inconsistent installation.

All the best,
Peter




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/