Browse Source

Add checking CUDA_PATH first

Roman Shkarin 9 years ago
parent
commit
a4c0ec0b3e
1 changed files with 39 additions and 26 deletions
  1. 39 26
      Makefile

+ 39 - 26
Makefile

@@ -1,5 +1,3 @@
-include ./findcudalib.mk
-
 # Names of target, sources and object files
 BIN = benchmark
 SRC = $(wildcard *.c)
@@ -10,6 +8,9 @@ DEP_OCLFFT = .deps/oclfft/src/liboclfft.so
 DEP_CLFFT = .deps/clFFT/src/library/libclFFT.so
 DEPS = $(DEP_OCLFFT)
 
+# Libs titiles
+LIBS_MSG    :=
+
 # Common flags definition
 CPPFLAGS    :=
 CFLAGS      := -O3 -Wall -Werror -std=c99 -fmessage-length=0
@@ -18,17 +19,28 @@ LDFLAGS     := -lOpenCL -lm
 # Get bits of OS
 ARCH := $(shell getconf LONG_BIT 2> /dev/null)
 
-# Determine AMDAPPSDKROOT includes
-ifeq ($(AMDAPPSDKROOT),)
-	# Detect NVCC compiler
-	NVCC_RESULT := $(shell which nvcc 2> /dev/null)
-	NVCC_TEST := $(notdir $(NVCC_RESULT))
-	CUDA_PATH := $(subst /bin/$(NVCC_TEST),"",$(NVCC_RESULT))
+# Detect NVCC compiler
+CUDA_NVCC_PATH := $(shell which nvcc 2> /dev/null)
+NVCC_NAME := $(notdir $(CUDA_NVCC_PATH))
 
-	ifeq ($(NVCC_TEST),nvcc)
+# Detect CUDA_PATH compiler
+CUDA_PATH := $(subst /bin/$(NVCC_NAME),,$(CUDA_NVCC_PATH))
+CUDA_FFT := $(shell find $(CUDA_PATH)/ -maxdepth 2 -type f -name "libcufft.so*" 2> /dev/null)
+
+$(info $(CUDA_NVCC_PATH))
+$(info $(NVCC_NAME))
+$(info $(CUDA_PATH))
+$(info $(CUDA_FFT))
+
+# If true then try to use CUDA, otherwise AMD
+ifneq ($(CUDA_FFT),)
+	ifeq ($(NVCC_NAME),nvcc)
+$(info "WE USE CUDA")
 		CC := nvcc
 		override CPPFLAGS += -DHAVE_CUDA -DHAVE_CUDA_FFT
+
 		override CFLAGS += -I$(CUDA_PATH)/include
+
 		ifeq ($(ARCH),64)
 			override LDFLAGS += -L$(CUDA_PATH)/lib64
 		else
@@ -36,21 +48,23 @@ ifeq ($(AMDAPPSDKROOT),)
 		endif
 
 		override LDFLAGS += -lcufft -lcudart
-		LIBS_MSG += " +cuda"
+
+		override LIBS_MSG += " +cuda"
 	endif
 else
-	override CFLAGS += -I$(AMDAPPSDKROOT)/include
-
-	ifeq ($(ARCH),64)
-		override LDFLAGS += -L$(AMDAPPSDKROOT)/lib/x86_64
+	ifneq ($(AMDAPPSDKROOT),)
+		override CFLAGS += -I$(AMDAPPSDKROOT)/include
+
+		#ifeq ($(ARCH),64)
+		#	override LDFLAGS += -L$(AMDAPPSDKROOT)/lib/x86_64
+		#else
+		#	override LDFLAGS += -L$(AMDAPPSDKROOT)/lib/x86
+		#endif
 	else
-		override LDFLAGS += -L$(AMDAPPSDKROOT)/lib/x86
+$(error "SDKs paths cannot be found. Try setting CUDA_PATH for CUDA SDK or AMDAPPSDKROOT for AMD SDK.")
 	endif
 endif
 
-# Libs titiles
-LIBS_MSG = ""
-
 # AMD FFT library
 AMD_FFT_EXISTS = $(shell pkg-config --exists clFFT && echo "1" || echo "0")
 
@@ -58,19 +72,19 @@ ifeq ($(AMD_FFT_EXISTS),1)
 	override CPPFLAGS += -DHAVE_AMD_FFT
 	override CFLAGS += $(shell pkg-config --cflags clFFT)
 	override LDFLAGS += $(shell pkg-config --libs clFFT)
-	LIBS_MSG += " +amd"
+	override LIBS_MSG += " +amd"
 else
 	override DEPS += $(DEP_CLFFT)
 	override CFLAGS += -I.deps/clFFT/src/include -DHAVE_AMD_FFT
 	override LDFLAGS += -L.deps/clFFT/src/library -lclFFT
-	LIBS_MSG += " +amd"
+	override LIBS_MSG += " +amd"
 endif
 
 # Apple FFT library
 override CPPFLAGS += -DHAVE_APPLE_FFT
 override CFLAGS += -I.deps/
 override LDFLAGS += -L.deps/oclfft/src -loclfft
-LIBS_MSG += " +apple"
+override LIBS_MSG += " +apple"
 
 # FFTW library
 FFTW_EXISTS = $(shell pkg-config --exists fftw3 && echo "1" || echo "0")
@@ -79,16 +93,16 @@ ifeq ($(FFTW_EXISTS),1)
 	override CPPFLAGS += -DHAVE_FFTW
 	override CFLAGS += $(shell pkg-config --cflags fftw3)
 	override LDFLAGS += $(shell pkg-config --libs fftw3)
-	LIBS_MSG += " +fftw"
+	override LIBS_MSG += " +fftw"
 endif
 
 GENCODE_SM20     := -gencode arch=compute_20,code=sm_20
 GENCODE_SM30     := -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=\"sm_35,compute_35\"
 GENCODE_FLAGS    := $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30)
 
-ALL_CPPFLAGS :=
-ALL_CFLAGS :=
-ALL_LDFLAGS :=
+ALL_CPPFLAGS     :=
+ALL_CFLAGS       :=
+ALL_LDFLAGS      :=
 
 ifeq ($(CC),nvcc)
 	override ALL_CFLAGS  += $(addprefix -Xcompiler ,$(CFLAGS))
@@ -108,7 +122,6 @@ all: $(BIN)
 %.o: %.c Makefile $(DEPS)
 	@echo [CC] $@
 	@echo $(wildcard $(AMDAPPSDKROOT))
-	@echo $(NVCC_RESULT)
 	@echo $(CFLAGS)
 	@echo $(ALL_LDFLAGS)
 	@$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@