Skip to content

Commit 83c6bfe

Browse files
committed
Change blas and lapack to work with threading
1 parent 59abd84 commit 83c6bfe

1 file changed

Lines changed: 15 additions & 30 deletions

File tree

Makefile

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,43 +9,31 @@ SRC_DIR := ./src
99
BUILD_DIR := ./obj
1010
BIN_DIR := ./bin
1111

12-
# Compiler
12+
# Compiler (gfortran with OpenMP for threading)
1313
FC := gfortran
1414

1515
# Core count
1616
NCORES := $(shell nproc)
1717

18-
# MKL
19-
MKLROOT ?= /opt/intel/oneapi/mkl/latest
20-
MKL_LIB_DIR := $(MKLROOT)/lib/intel64
21-
MKL_INCLUDE := $(MKLROOT)/include
22-
MKL_FLAGS := -L$(MKL_LIB_DIR) -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl
23-
24-
# PETSc (manual fallback if petsc-config missing)
25-
PETSC_PREFIX := /usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real
26-
PETSC_FINCLUDE := /usr/share/petsc/3.15/include
27-
PETSC_AINCLUDE := $(PETSC_PREFIX)/include
28-
PETSC_LIBDIR := $(PETSC_PREFIX)/lib
29-
30-
PETSC_CONFIG := $(shell command -v petsc-config 2>/dev/null)
31-
ifeq ($(PETSC_CONFIG),)
32-
PETSC_INC := -I$(PETSC_FINCLUDE) -I$(PETSC_AINCLUDE)
33-
PETSC_LIB := -L$(PETSC_LIBDIR) -lpetsc
34-
PETSC_NOTE := (PETSc manual paths)
35-
else
36-
PETSC_INC := $(shell petsc-config --cflags)
37-
PETSC_LIB := $(shell petsc-config --libs)
38-
PETSC_NOTE := (petsc-config)
39-
endif
18+
# Detect conda environment for BLAS/LAPACK (fallback if no system libs)
19+
CONDA_PREFIX ?= $(shell conda info --base 2>/dev/null || echo /home/hm556/miniforge3)
20+
21+
# PETSc (system installation)
22+
PETSC_INC := -I/usr/share/petsc/3.15/include -I/usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real/include
23+
PETSC_LIB := -L/usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real/lib -lpetsc -Wl,-rpath,/usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real/lib
24+
PETSC_NOTE := (system PETSc 3.15)
25+
26+
# Use OpenBLAS for multi-threaded BLAS/LAPACK (better than reference BLAS/ATLAS)
27+
BLAS_FLAGS := -lopenblas -lgomp -lpthread -lm
4028

4129
# Flags
4230
OPTFLAGS := -O3
4331
OMPFLAGS := -fopenmp
4432
WARNFLAGS := -Wall
4533
MODDIR_FLAG := -J$(BUILD_DIR)
4634

47-
FFLAGS := -cpp $(OPTFLAGS) $(OMPFLAGS) $(WARNFLAGS) -I$(MKL_INCLUDE) $(PETSC_INC) $(MODDIR_FLAG)
48-
DEBUGFLAGS := -cpp -O0 -g -fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow -fbounds-check -I$(MKL_INCLUDE) $(PETSC_INC) $(MODDIR_FLAG)
35+
FFLAGS := -cpp $(OPTFLAGS) $(OMPFLAGS) $(WARNFLAGS) $(PETSC_INC) $(MODDIR_FLAG)
36+
DEBUGFLAGS := -cpp -O0 -g -fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow -fbounds-check $(PETSC_INC) $(MODDIR_FLAG)
4937

5038
# Program
5139
NAME := ThermalFlow.x
@@ -62,8 +50,6 @@ SRCS := \
6250
heatflow/mod_material.f90 \
6351
heatflow/mod_hmatrix.f90 \
6452
heatflow/mod_init_evolve.f90 \
65-
heatflow/mkl_pardiso.f90 \
66-
heatflow/mod_sparse_solver.f90 \
6753
heatflow/mod_petsc_solver.f90 \
6854
heatflow/mod_boundary.f90 \
6955
heatflow/mod_heating.f90 \
@@ -96,15 +82,14 @@ $(BUILD_DIR)/heatflow.o: $(SRC_DIR)/heatflow.f90 | $(BUILD_DIR)
9682

9783
# Link (single definition)
9884
$(TARGET): $(BIN_DIR) $(OBJS)
99-
$(FC) $(OPTFLAGS) $(OMPFLAGS) $(OBJS) -o $@ $(MKL_FLAGS) $(PETSC_LIB) -Wl,-rpath,$(PETSC_LIBDIR)
85+
$(FC) $(OPTFLAGS) $(OMPFLAGS) $(OBJS) -o $@ $(BLAS_FLAGS) $(PETSC_LIB)
10086

10187
debug: FFLAGS = $(DEBUGFLAGS)
10288
debug: clean show $(TARGET)
10389

10490
run: $(TARGET)
10591
OMP_NUM_THREADS=$(NCORES) \
106-
MKL_NUM_THREADS=$(NCORES) \
107-
MKL_DYNAMIC=FALSE \
92+
OPENBLAS_NUM_THREADS=$(NCORES) \
10893
OMP_PROC_BIND=spread \
10994
OMP_PLACES=cores \
11095
$< $(RUN_ARGS)

0 commit comments

Comments
 (0)