Boost logo

Ublas :

Subject: Re: [ublas] Matrix multiplication performance
From: Michael Lehn (michael.lehn_at_[hidden])
Date: 2016-01-24 11:21:10

On 24 Jan 2016, at 17:02, Peter Schmitteckert <Peter.Schmitteckert_at_[hidden]> wrote:

> Dear All,
> first of all I'm impressed by the recent results.
> > We need both native implementations and bindings.
> I completely agree.

I also agree. But that is no contradiction of specifying a unified low-level C++BLAS standard. One
possible and obvious implementation would be a binding to BLAS or CBLAS. Also there is no real
BLAS or CBLAS standard like in “ANSI” or “ISO”. Its just a de facto standard. So as long as it is
useful it will become a de facto standard. Even if it just is the nicest way to be a BLAS-binding it
should be attractive for other C++ libraries like MTL4 or BLAZE.

Its also amazing that libraries like ATLAS, OpenBLAS or BLIS are written in C and not in C++. I am
pretty familiar with their code and using C++ would make their implementation so much easier. And
I am not talking about OOP. Just using template functions and doing the rest in C-style. Basically
they use macros for generating functions like sgemm, dgemm, cgemm, zgemm from a single
implementation. Very unreadable, believe me. So even for a BLAS implementation that just has
to support a C and Fortran interface my choice would be C++ for the actual implementation. And
I am certainly not C++ fan boy. Really.