[Rd] configure output with flexiblas [was Re: About FlexiBLAS in the R-admin docs]

Tomas Kalibera tom@@@k@||ber@ @end|ng |rom gm@||@com
Wed Nov 1 19:47:23 CET 2023


On 11/1/23 13:29, Iñaki Ucar wrote:
> On Wed, 1 Nov 2023 at 12:57, Tomas Kalibera <tomas.kalibera using gmail.com> wrote:
>>
>> On 10/31/23 10:45, Iñaki Ucar wrote:
>>> On Tue, 24 Oct 2023 at 12:53, Tomas Kalibera <tomas.kalibera using gmail.com> wrote:
>>>> The output of session info is based on that flexiblas is used and on
>>>> what flexiblas tells R is the backend it uses. R does not attempt to
>>>> check that optimized LAPACK functions from the backend really end up
>>>> called via flexiblas, and I don't think it could be realistically checked.
>>>>
>>>> But I've checked one case manually in Fedora 38 using Linux perf tool.
>>>> The following code:
>>>>
>>>> S <- toeplitz((10:1)/10)
>>>> repeat { R <- rWishart(10, 20, S) }
>>>>
>>>> uses dpotrf from LAPACK, which is optimized in OpenBLAS and ATLAS and
>>>> the corresponding optimized implementations really appeared on the
>>>> sampling profile for me from the backend libraries.
>>>>
>>>> The comment from R Admin has been removed now and if anyone runs into
>>>> the problem (that an optimized LAPACK function is not called from a
>>>> backend that provides it), it would be best to report it with sufficient
>>>> detail to flexiblas.
>>> Thanks, Tomas. Yes, if an expected redirection to an optimized
>>> function does not happen, that would be a bug in FlexiBLAS and should
>>> be reported upstream.
>>>
>>> Related to this, a small detail... I noticed that the R configure
>>> script reports "BLAS(FlexiBlas)" correctly as an external library, but
>>> then "LAPACK(generic)". This should be FlexiBLAS too instead of
>>> "generic". It doesn't make any difference, since the LAPACK symbols in
>>> FlexiBLAS are called anyway, but it's misleading.
>> This depends on how you configure R. On Fedora 38,
>>
>> ../trunk/configure --with-blas=flexiblas --with-lapack
>>
>> reports "BLAS(FlexiBlas), LAPACK(in blas)" and from my reading of
>> R-admin, this is the recommended way of configuring with flexiblas.
>>
>> Configuring via (is this what you had in mind?):
>>
>> ../trunk/configure --with-blas=flexiblas --with-lapack=flexiblas
>>
>> reports "BLAS(FlexiBlas), LAPACK(generic)". The build would actually do
>> "-lflexiblas -lflexiblas", the former for LAPACK (from --with-lapack
>> value) and the latter for BLAS (from --with-blas value). The "generic"
>> here means not from BLAS, but from an extra standalone library. Compare
>> with the first (recommended) use when the build would only link
>> "-lflexiblas" once.
> I see. I didn't understand that part then. I thought that a library
> should be specified.

I read this from R-Admin re --with-lapack:

"In practice its main uses are without a value,

- with an `enhanced' BLAS such as ATLAS, FlexiBLAS, MKL or OpenBLAS which
contains a full LAPACK (to avoid possible conflicts), or

- on Debian/Ubuntu systems to select the system liblapack which can
be switched by the `alternatives' mechanism.
"

I've updated configure in R-devel to detect when the same library is 
specified explicitly for blas and lapack, so that now even that is 
handled and reported as LAPACK in Blas libs.

Best
Tomas

>



More information about the R-devel mailing list