mirror of
https://github.com/NVIDIA/cuda-samples.git
synced 2024-11-24 16:19:15 +08:00
Fixing compilation errors with clang 13 and OpenMP and MPI, fixing issue #102
This commit is contained in:
parent
b312abaa07
commit
ffbeb84dfa
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user