Fixing compilation errors with clang 13 and OpenMP and MPI, fixing issue #102

This commit is contained in:
Ralf Seidler 2022-02-07 11:12:46 +00:00
parent b312abaa07
commit ffbeb84dfa
3 changed files with 29 additions and 2 deletions

View File

@ -288,13 +288,24 @@ LIBRARIES :=
# Attempt to compile a minimal OpenMP application. If a.out exists, OpenMP is properly set up. # Attempt to compile a minimal OpenMP application. If a.out exists, OpenMP is properly set up.
ifneq (,$(filter $(TARGET_OS),linux android)) ifneq (,$(filter $(TARGET_OS),linux android))
# Special treatment for Clang to not use standard OMP Library and fix OMP 5 bug in Clang 13
ifneq (,$(findstring "clang",$(HOST_COMPILER)))
ifneq (,$(filter $(TARGET_OS), android)) ifneq (,$(filter $(TARGET_OS), android))
LIBRARIES += -lomp LIBRARIES += -lomp
else else
LIBRARIES += -lgomp LIBRARIES += -lgomp
endif endif
ALL_CCFLAGS += -Xcompiler -fopenmp ALL_CCFLAGS += -Xcompiler -fopenmp
else
ALL_CCFLAGS += -Xcompiler -fopenmp
ALL_LDFLAGS += -Xcompiler -fopenmp
COMPILER_VERSION= $(shell $(HOST_COMPILER) --version)
ifneq (,$(findstring 13.,$(COMPILER_VERSION)))
ALL_CCFLAGS += -Xcompiler -fopenmp -Xcompiler -fopenmp-version=45
ALL_LDFLAGS += -Xcompiler -fopenmp -Xcompiler -fopenmp-version=45
endif
endif
$(shell echo "#include <omp.h>" > test.c ; echo "int main() { omp_get_num_threads(); return 0; }" >> test.c ; $(HOST_COMPILER) -fopenmp test.c) $(shell echo "#include <omp.h>" > test.c ; echo "int main() { omp_get_num_threads(); return 0; }" >> test.c ; $(HOST_COMPILER) -fopenmp test.c)
OPENMP ?= $(shell find a.out 2>/dev/null) OPENMP ?= $(shell find a.out 2>/dev/null)

View File

@ -294,13 +294,25 @@ LIBRARIES :=
# Attempt to compile a minimal OpenMP application. If a.out exists, OpenMP is properly set up. # Attempt to compile a minimal OpenMP application. If a.out exists, OpenMP is properly set up.
ifneq (,$(filter $(TARGET_OS),linux android)) ifneq (,$(filter $(TARGET_OS),linux android))
# Special treatment for Clang to not use standard OMP Library and fix OMP 5 bug in Clang 13
ifneq (,$(findstring "clang",$(HOST_COMPILER)))
ifneq (,$(filter $(TARGET_OS), android)) ifneq (,$(filter $(TARGET_OS), android))
LIBRARIES += -lomp LIBRARIES += -lomp
else else
LIBRARIES += -lgomp LIBRARIES += -lgomp
endif endif
ALL_CCFLAGS += -Xcompiler -fopenmp ALL_CCFLAGS += -Xcompiler -fopenmp
else
ALL_CCFLAGS += -Xcompiler -fopenmp
ALL_LDFLAGS += -Xcompiler -fopenmp
COMPILER_VERSION= $(shell $(HOST_COMPILER) --version)
ifneq (,$(findstring 13.,$(COMPILER_VERSION)))
ALL_CCFLAGS += -Xcompiler -fopenmp -Xcompiler -fopenmp-version=45
ALL_LDFLAGS += -Xcompiler -fopenmp -Xcompiler -fopenmp-version=45
endif
endif
$(shell echo "#include <omp.h>" > test.c ; echo "int main() { omp_get_num_threads(); return 0; }" >> test.c ; $(HOST_COMPILER) -fopenmp test.c) $(shell echo "#include <omp.h>" > test.c ; echo "int main() { omp_get_num_threads(); return 0; }" >> test.c ; $(HOST_COMPILER) -fopenmp test.c)
OPENMP ?= $(shell find a.out 2>/dev/null) OPENMP ?= $(shell find a.out 2>/dev/null)

View File

@ -164,6 +164,10 @@ NVCCFLAGS := -m${TARGET_SIZE}
CCFLAGS := CCFLAGS :=
LDFLAGS := LDFLAGS :=
# Special treatment for Clang
ifneq (,$(findstring clang,$(HOST_COMPILER)))
CCFLAGS+= -fPIE
endif
# build flags # build flags
ifeq ($(TARGET_OS),darwin) ifeq ($(TARGET_OS),darwin)
LDFLAGS += -rpath $(CUDA_PATH)/lib LDFLAGS += -rpath $(CUDA_PATH)/lib