File: Makefile.macos.cuda

package info (click to toggle)
boinc-app-eah-brp 0.20170426%2Bdfsg-10
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,940 kB
  • sloc: ansic: 5,508; cpp: 3,512; makefile: 206; sh: 157
file content (146 lines) | stat: -rw-r--r-- 7,776 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
###########################################################################
#   Copyright (C) 2009 by Oliver Bock                                     #
#   oliver.bock[AT]aei.mpg.de                                             #
#                                                                         #
#   This file is part of Einstein@Home (Radio Pulsar Edition).            #
#                                                                         #
#   Einstein@Home is free software: you can redistribute it and/or modify #
#   it under the terms of the GNU General Public License as published     #
#   by the Free Software Foundation, version 2 of the License.            #
#                                                                         #
#   Einstein@Home is distributed in the hope that it will be useful,      #
#   but WITHOUT ANY WARRANTY; without even the implied warranty of        #
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the          #
#   GNU General Public License for more details.                          #
#                                                                         #
#   You should have received a copy of the GNU General Public License     #
#   along with Einstein@Home. If not, see <http://www.gnu.org/licenses/>. #
#                                                                         #
###########################################################################

# path settings
EINSTEIN_RADIO_SRC?=$(PWD)
EINSTEIN_RADIO_INSTALL?=$(PWD)
PKG_CONFIG_PATH=$(EINSTEIN_RADIO_INSTALL)/lib/pkgconfig
CUDA_INSTALL_PATH?=/usr/local/cuda

# config values
CXX ?= g++

# variables
LIBS += -L$(EINSTEIN_RADIO_INSTALL)/lib
LIBS += $(shell $(EINSTEIN_RADIO_INSTALL)/bin/gsl-config --libs)
LIBS += $(shell export PKG_CONFIG_PATH="$(EINSTEIN_RADIO_INSTALL)/lib/pkgconfig" && pkg-config --libs fftw3f)
LIBS += $(shell $(EINSTEIN_RADIO_INSTALL)/bin/xml2-config --libs)
LIBS += -lboinc_api -lboinc
LIBS += $(EINSTEIN_RADIO_SRC)/cuda/redist/mac/5.5/lib/libcufft.5.5.dylib  # CUDA FFT
LIBS += $(EINSTEIN_RADIO_SRC)/cuda/redist/mac/5.5/lib/libcudart.5.5.dylib # CUDA runtime library
LIBS += -L$(CUDA_INSTALL_PATH)/lib
LIBS += -lcuda   # CUDA driver library
LIBS += -L/usr/lib
LIBS += -lpthread
LIBS += $(EINSTEIN_RADIO_INSTALL)/lib/libz.a

LDFLAGS += -static-libgcc

CXXFLAGS += -I$(EINSTEIN_RADIO_INSTALL)/include
CXXFLAGS += $(shell $(EINSTEIN_RADIO_INSTALL)/bin/gsl-config --cflags)
CXXFLAGS += $(shell export PKG_CONFIG_PATH="$(EINSTEIN_RADIO_INSTALL)/lib/pkgconfig" && pkg-config --cflags fftw3f)
CXXFLAGS += $(shell $(EINSTEIN_RADIO_INSTALL)/bin/xml2-config --cflags)
CXXFLAGS += -I$(EINSTEIN_RADIO_INSTALL)/include/boinc
CXXFLAGS += -I$(CUDA_INSTALL_PATH)/include
CXXFLAGS += -DHAVE_INLINE -DBOINCIFIED
CXXFLAGS += -DUSE_CUDA

DEPS = Makefile
OBJS = demod_binary.o demod_binary_cuda.cu.o demod_binary_hs_cuda.cu.o hs_common.o rngmed.o erp_boinc_ipc.o erp_getopt.o erp_getopt1.o erp_utilities.o cuda_utilities.o
EINSTEINBINARY_TARGET ?= einsteinbinary_macosx_cuda
TARGET = $(EINSTEINBINARY_TARGET)

# primary role based tagets
default: release
debug: $(TARGET)
#profile: clean $(TARGET)
release: clean $(TARGET)

# target specific options (generic)
debug: CXXFLAGS_BASE += -DLOGLEVEL=debug -pg -O0 -Wall
#profile: CXXFLAGS_BASE += -DNDEBUG -DLOGLEVEL=info -O3 -Wall
release: CXXFLAGS_BASE += -DNDEBUG -DLOGLEVEL=info -O3 -Wall

# target specific options (nvcc)
debug: CXXFLAGS_CUDA += $(CXXFLAGS) $(CXXFLAGS_BASE)
debug: NVCCFLAGS += -G
#profile: CXXFLAGS_CUDA += $(CXXFLAGS) $(CXXFLAGS_BASE)
#profile: NVCCFLAGS += -O3
release: CXXFLAGS_CUDA += $(CXXFLAGS) $(CXXFLAGS_BASE)
release: NVCCFLAGS += -O3

# target specific options (gcc)
debug: CXXFLAGS_GCC += $(CXXFLAGS) $(CXXFLAGS_BASE) -ggdb3
#profile: CXXFLAGS_GCC += $(CXXFLAGS) $(CXXFLAGS_BASE) -ggdb3 -fprofile-generate
#release: CXXFLAGS_GCC += $(CXXFLAGS) $(CXXFLAGS_BASE) -ggdb3 -fprofile-use
release: CXXFLAGS_GCC += $(CXXFLAGS) $(CXXFLAGS_BASE) -ggdb3

# file based targets
#profile:
#	@echo "Removing previous profiling data..."
#	rm -f *_profile.*
#	rm -f *.gcda
#	@echo "Gathering profiling data (this takes roughly half a minute)..."
#	./$(TARGET) -t $(EINSTEIN_RADIO_SRC)/../test/templates_400Hz_2_short.bank -l $(EINSTEIN_RADIO_SRC)/data/zaplist_232.txt -A 0.04 -P 3.0 -W -z -i $(EINSTEIN_RADIO_SRC)/../test/J1907+0740_dm_482.binary -c status_profile.cpt -o resu
#	@echo "Finished gathering profiling data..."

$(TARGET): $(DEPS) $(EINSTEIN_RADIO_SRC)/erp_boinc_wrapper.cpp $(OBJS)
	$(CXX) -g $(CXXFLAGS_GCC) $(LDFLAGS) $(EINSTEIN_RADIO_SRC)/erp_boinc_wrapper.cpp -o $(TARGET) $(OBJS) $(LIBS)

demod_binary.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/demod_binary.c $(EINSTEIN_RADIO_SRC)/demod_binary.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/demod_binary.c

demod_binary_cuda.ptx: $(DEPS) $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_cuda.cu $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_cuda.cuh
	nvcc --ptx $(NVCCFLAGS) --compiler-options="$(CXXFLAGS_CUDA)" $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_cuda.cu
	mv demod_binary_cuda.ptx db.dev

demod_binary_cuda.cu.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_cuda.cu $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_cuda.h demod_binary_cuda.ptx
	nvcc --cuda -dir=$(TARGET).devcode -ext=all $(NVCCFLAGS) --compiler-options="$(CXXFLAGS_CUDA)" $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_cuda.cu
	$(CXX) -g $(CXXFLAGS_CUDA) -ggdb3 -c demod_binary_cuda.cu.cpp.ii -o demod_binary_cuda.cu.o

demod_binary_hs_cuda.ptx: $(DEPS) $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_hs_cuda.cu $(EINSTEIN_RADIO_SRC)/cuda/app/harmonic_summing_kernel.cuh
	nvcc --ptx $(NVCCFLAGS) --compiler-options="$(CXXFLAGS_CUDA)" $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_hs_cuda.cu
	mv demod_binary_hs_cuda.ptx dbhs.dev

demod_binary_hs_cuda.cu.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_hs_cuda.cu $(EINSTEIN_RADIO_SRC)/cuda/app/harmonic_summing_kernel.cuh demod_binary_hs_cuda.ptx
	nvcc --cuda -dir=$(TARGET).devcode -ext=all $(NVCCFLAGS) --compiler-options="$(CXXFLAGS_CUDA)" $(EINSTEIN_RADIO_SRC)/cuda/app/demod_binary_hs_cuda.cu
	$(CXX) -g $(CXXFLAGS_CUDA) -ggdb3 -c demod_binary_hs_cuda.cu.cpp.ii -o demod_binary_hs_cuda.cu.o

hs_common.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/hs_common.c $(EINSTEIN_RADIO_SRC)/hs_common.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/hs_common.c

rngmed.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/rngmed.c $(EINSTEIN_RADIO_SRC)/rngmed.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/rngmed.c

erp_boinc_ipc.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/erp_boinc_ipc.cpp $(EINSTEIN_RADIO_SRC)/erp_boinc_ipc.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/erp_boinc_ipc.cpp

erp_getopt.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/erp_getopt.c $(EINSTEIN_RADIO_SRC)/erp_getopt.h $(EINSTEIN_RADIO_SRC)/erp_getopt_int.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/erp_getopt.c

erp_getopt1.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/erp_getopt1.c $(EINSTEIN_RADIO_SRC)/erp_getopt.h $(EINSTEIN_RADIO_SRC)/erp_getopt_int.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/erp_getopt1.c

erp_utilities.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/erp_utilities.cpp $(EINSTEIN_RADIO_SRC)/erp_utilities.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/erp_utilities.cpp

cuda_utilities.o: $(DEPS) $(EINSTEIN_RADIO_SRC)/cuda/app/cuda_utilities.c $(EINSTEIN_RADIO_SRC)/cuda/app/cuda_utilities.h
	$(CXX) -g $(CXXFLAGS_GCC) -c $(EINSTEIN_RADIO_SRC)/cuda/app/cuda_utilities.c

install:
	mkdir -p $(EINSTEIN_RADIO_INSTALL)/../dist
	cp $(TARGET) $(EINSTEIN_RADIO_INSTALL)/../dist
	cp *.dev $(EINSTEIN_RADIO_INSTALL)/../dist
	cp db.dev $(EINSTEIN_RADIO_INSTALL)/../dist/$(TARGET)-db.dev
	cp dbhs.dev $(EINSTEIN_RADIO_INSTALL)/../dist/$(TARGET)-dbhs.dev

clean:
	rm -f $(OBJS) $(TARGET)
	rm -rf $(TARGET).devcode