Absence of easy-to-use AMD AOCL-BLAS/LAPACK support for Julia?

With the growing popularity of AMD CPUs over the recent years, I wonder whether there has been any news on an easy-to-use package that allows the use of AOCL-BLAS and AOCL-LAPACK? I am looking for something like MKL.jl that allows switching to AOCL from the built-in OpenBLAS simply by loading the package.

It seems that there is no such a thing at this moment? Any clue on what would be the substantial obstacle that has prevented this from happening?

Based on the results posted towards the end of this thread, switching to AOCL should be possible and help the performance?

Update: I am trying to build AOCL-BLAS here on Yggdrasil. But the build fails.

1 Like

This has been asked at various times, so seems there is interest
e.g. AOCL-BLAS · Issue #17 · JuliaLinearAlgebra/BLISBLAS.jl · GitHub

That package’s readme explains the process and a similar package is definitely doable.

1 Like

Thank you. It sounds like things are supposed to proceed easily once there is a recipe on Yggdrasil for building AOCL_jll? It seems that BLISBLAS.jl itself doesn’t contain much code and AOCL.jl would just be another package of similar fashion.

Yes, precisely.

Both AOCL_jll and AOCL.jl are now up on GitHub!

links:

2 Likes

Thank you for sharing the news! Things are moving forward.

Ideally, it would be nice if they can be registered with Julia General registry, so that people can install by just doing add AOCL.

2 Likes

I tried this expecting it to fail, since I do not have AMD, but it seemingly works on Intel too.

julia> [1 2.] * [1; 2.]
1-element Vector{Float64}:
 5.0

julia> BLAS.get_config()
LinearAlgebra.BLAS.LBTConfig
Libraries: 
├ [ILP64] libblis-mt.so
├ [ILP64] libflame.so
├ [ LP64] libblis-mt32.so
â”” [ LP64] libflame32.so

Going forward when AOCL.jl is registered for simple installation, don’t we will need a meta/mulii-package that installs it or MKL.jl or whatever depending on CPU type (Metal.jl for Apple, something also for general ARM?)? LinearAlgebra is going out of the sysimage (and I’m not sure [Open]BLAS with it), but still transparently working, I think OpenBLAS should now just go, since redundant with better.

AOCL.jl is a Julia package that allows users to use the AMD AOCL libraries for Julia’s underlying BLAS and LAPACK, instead of OpenBLAS (default).
..
julia> using Pkg; julia> Pkg.add(url=“GitHub - amd/AOCL_jll.jl”); julia> Pkg.add(url=“GitHub - amd/AOCL.jl”);

It is important to have AOCL_jll installed before installing AOCL.jl, as the latter depends on the former.

Note: The package is only available on Linux at the moment.