Different BLAS interface in uBLAS and ATLAS binding

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Different BLAS interface in uBLAS and ATLAS binding

Manuel González Castro
Hello,

I am developing an engineering application using uBlas. In the future I would like to use the ATLAS bindings to perform BLAS operations in my code, and I would like to do it without changing my code.

Since uBLAS defines a BLAS interface (blas.hpp) within the namespaces boost::numeric::blas_[1/2/3], I thought that I could do something like:

#ifdef USE_BLAS_FROM_UBLAS
   #include <boost/numeric/ublas/blas.hpp>
   #using namespace boost::numeric::ublas_1;
   #using namespace boost::numeric::ublas_2;
   #using namespace boost::numeric::ublas_3;
#endif
#ifdef USE_BLAS_FROM_ATLAS
   #include <boost/numeric/bindings/atlas/cblas.hpp>
   #using namespace boost::numeric::bindings::atlas;
#endif

But this solution is not valid because the BLAS function declarations (name and order or arguments) are different in uBLAS and the ATLAS binding. Example:

[y <- a A x + b y]   in uBLAS BLAS:     gmv (y,b,a,A,x)
[y <- a A x + b y]   in ATLAS binding:  gemv(a,A,x,b,y)

The only solution I see is to rewrite blas.hpp in uBlas to use the same interface as the ATLAS binding.

Is there any reason to define a BLAS interface in uBLAS that differs from the interface provided by the ATLAS binding (which I consider closer to the original BLAS specification)?

Thanks a lot,
Manuel


_______________________________________________
ublas mailing list
[hidden email]
http://lists.boost.org/mailman/listinfo.cgi/ublas