Julia is a high-level, high-performance programming language for technical computing. It provides a wide range of functionalities and is known for its speed and efficiency. However, there are certain limitations and compatibility issues that users may encounter while working with Julia. One such issue is the lack of support for Intel Gen 11 processors in the current openblas versions as of January 2022.
Solution 1: Updating OpenBLAS
The first solution to address this issue is to update the OpenBLAS library to a version that supports Intel Gen 11 processors. Here’s how you can do it:
# Install OpenBLAS
using Pkg
Pkg.add("OpenBLAS")
# Update OpenBLAS
Pkg.update("OpenBLAS")
This code snippet installs the OpenBLAS package and updates it to the latest version available. By doing so, you ensure that you have the necessary support for Intel Gen 11 processors.
Solution 2: Using an Alternative BLAS Library
If updating OpenBLAS is not feasible or does not provide satisfactory performance, you can consider using an alternative BLAS library that supports Intel Gen 11 processors. One such library is Intel MKL (Math Kernel Library). Here’s how you can switch to Intel MKL:
# Install MKL.jl package
using Pkg
Pkg.add("MKL")
# Set the BLAS environment variable to MKL
ENV["BLAS"] = "MKL"
This code snippet installs the MKL.jl package, which provides support for Intel MKL. It then sets the BLAS environment variable to MKL, ensuring that Julia uses the Intel MKL library for linear algebra computations.
Solution 3: Custom Compilation
If neither updating OpenBLAS nor using Intel MKL is suitable for your requirements, you can opt for custom compilation of OpenBLAS with specific optimizations for Intel Gen 11 processors. Here’s how you can do it:
# Clone OpenBLAS repository
using Pkg
Pkg.add("Git")
run(`git clone https://github.com/xianyi/OpenBLAS.git`)
# Compile OpenBLAS with Gen 11 optimizations
run(`make -C OpenBLAS TARGET=GEN11 NO_AFFINITY=1`)
# Set the BLAS environment variable to the custom OpenBLAS build
ENV["BLAS"] = joinpath(pwd(), "OpenBLAS")
This code snippet clones the OpenBLAS repository, compiles it with Gen 11 optimizations, and sets the BLAS environment variable to the custom OpenBLAS build. By doing so, you can utilize the specific optimizations for Intel Gen 11 processors.
After considering these three solutions, the best option depends on your specific requirements and constraints. If possible, updating OpenBLAS to a version that supports Intel Gen 11 processors is the simplest and recommended solution. However, if that is not feasible or does not provide satisfactory performance, using an alternative BLAS library like Intel MKL can be a viable option. Lastly, custom compilation of OpenBLAS with Gen 11 optimizations offers the most flexibility but requires additional effort and expertise.