I am using a laptop with AMD Renoir CPU, the operating system is Manjaro under WSL2. Under a simple performance test there appears to be a major performance problem:
julia> versioninfo()
Julia Version 1.4.2
Commit 44fa15b150* (2020-05-23 18:35 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: AMD Ryzen 5 4600HS with Radeon Graphics
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-8.0.1 (ORCJIT, znver1)
julia> using LinearAlgebra
julia> LinearAlgebra.versioninfo()
BLAS: libopenblas (OpenBLAS 0.3.10 NO_LAPACK NO_LAPACKE DYNAMIC_ARCH NO_AFFINITY USE_OPENMP Prescott MAX_THREADS=64)
LAPACK: liblapack
I assume that it is recognized as a Prescott CPU and the performance does not surprise me:
julia> peakflops(10_000)
7.764909084542572e10
For a 6c12t processor it should not be right as my 7200U laptop has about 5e10 on battery. To add it gives basically same result in the Windows version of Julia.
I tried also to download from GitHub and compile it myself. With a naive compilation it gives:
julia> versioninfo()
Julia Version 1.6.0-DEV.531
Commit 3dc49ca18d (2020-07-24 05:37 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: AMD Ryzen 5 4600HS with Radeon Graphics
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, btver1)
julia> using LinearAlgebra
julia> LinearAlgebra.versioninfo()
BLAS: libopenblas (OpenBLAS 0.3.9 USE64BITINT DYNAMIC_ARCH NO_AFFINITY Prescott MAX_THREADS=32)
LAPACK: libopenblas64_
julia> peakflops(10_000)
5.056306894529036e10
To make things worse now the LLVM is even Bristol Ridge arch. I may be able to solve the part of OpenBLAS but the LLVM is confusing. Since I am pretty much a starter and using Julia as a learning tool instead of coping with compilation first, how should I fix the performance problem and have the hardware recognized correctly? BTW, I would expect step-to-step procedures since I suppose it is not only me but many other users new to Julia.
To add: This thread reported a similar Prescott problem. However, I suppose MKL to be a not acceptable solution for Zen CPUs and the “Prescott” should have an easy debug mode to override.
Update: I reinstalled and reconfigured the libopenblas from AUR, now the system Julia has:
julia> LinearAlgebra.versioninfo()
BLAS: libopenblas (OpenBLAS 0.3.10 NO_AFFINITY USE_OPENMP ZEN MAX_THREADS=12)
LAPACK: liblapack
julia> peakflops(10_000)
1.9276897177522015e11
It now saves me from the annoyance and enables me to focus on actual coding and real problems. However, I still suggest there being problems since I tried editing Make.user
too and it didn’t work at all.