Fix the error of Intel MKL when missing core libraries, or on AMD CPU
Closed this issue · 1 comments
eldronzhou commented
Intel MKL FATAL ERROR: Cannot load libmkl_core.so.
eldronzhou commented
It can be fixed by using OpenBLAS.
-
Download openblas and compile it.
wget https://github.com/xianyi/OpenBLAS/releases/download/v0.3.13/OpenBLAS-0.3.13.zip
unzip OpenBLAS-0.3.13.zip; cd OpenBLAS-0.3.13
make
-
After successful compilation, you should have a file named
libopenblas.a
. This is the static library we will use to replace Intel MKL. An example Makefile for compilation is given below.
CC = g++
CFLAGS = -g3 -O3 -DHAVE_INLINE -march=native -Igsl/include -std=c++11 -Wall -Wextra -pedantic
all: SDPR
SDPR: SDPR_io.o LD.o parse_gen.o mcmc.o function_pool.o main.o
${CC} ${CFLAGS} SDPR_io.o LD.o parse_gen.o mcmc.o function_pool.o main.o -Lgsl/lib/ -Wl,-rpath gsl/lib/ -lgsl -lpthread -lm your_path_to_openBLAS_dir/libopenblas.a -o SDPR
SDPR_io.o: SDPR_io.cpp SDPR_io.h
${CC} ${CFLAGS} -c SDPR_io.cpp
LD.o: LD.cpp LD.h SDPR_io.h
${CC} ${CFLAGS} -pthread -c LD.cpp
parse_gen.o: parse_gen.cpp parse_gen.h
${CC} ${CFLAGS} -c parse_gen.cpp
function_pool.o: function_pool.cpp function_pool.h
${CC} ${CFLAGS} -c function_pool.cpp
mcmc.o: mcmc.cpp mcmc.h parse_gen.h function_pool.h sse_mathfun.h
${CC} ${CFLAGS} -pthread -c mcmc.cpp
main.o: main.cpp parse_gen.h mcmc.h
${CC} ${CFLAGS} -c main.cpp
clean:
rm -f *.o