Makefile 1.14 KB
Newer Older
incardon's avatar
incardon committed
1 2
include ../../example.mk

incardon's avatar
incardon committed
3 4 5 6 7 8 9 10 11 12 13 14 15
### This is a trick to avoid "Command not found if you no not have NVCC compiler". In practice the normal C++ compiler is used
### internally the example disable with the preprocessor its code if not compiled with nvcc 
CUDA_CC=
CUDA_CC_LINK=
ifeq (, $(shell which nvcc))
        CUDA_CC=mpic++ -x c++ $(INCLUDE_PATH)
        INCLUDE_PATH_NVCC=
        CUDA_CC_LINK=mpic++
else
        CUDA_CC=nvcc
        CUDA_CC_LINK=nvcc
endif

incardon's avatar
incardon committed
16
ifeq ($(PROFILE),ON)
incardon's avatar
incardon committed
17 18
        CUDA_CC=scorep --nocompiler  --cuda --mpp=mpi nvcc
        CUDA_CC_LINK=scorep --nocompiler  --cuda --mpp=mpi nvcc
incardon's avatar
incardon committed
19
else
incardon's avatar
incardon committed
20 21
        CUDA_CC=nvcc
        CUDA_CC_LINK=nvcc
incardon's avatar
incardon committed
22
endif
incardon's avatar
incardon committed
23 24 25 26 27 28 29 30 31 32 33

LDIR =
OPT=

OBJ = main.o

sph_dlb:
sph_dlb_test: OPT += -DTEST_RUN
sph_dlb_test: sph_dlb

%.o: %.cu
34
	$(CUDA_CC) -O0 -g $(OPT) -use_fast_math  -arch=sm_61 -lineinfo  -g -c -isystem=/home/i-bird/MPI/include --std=c++11 -o $@ $< $(INCLUDE_PATH_NVCC)
incardon's avatar
incardon committed
35 36

%.o: %.cpp
incardon's avatar
incardon committed
37
	$(CC) -O3 $(OPT) -g -c --std=c++11 -o $@ $< $(INCLUDE_PATH)
incardon's avatar
incardon committed
38 39

sph_dlb: $(OBJ)
incardon's avatar
incardon committed
40
	$(CUDA_CC_LINK) -o $@ $^ $(CFLAGS) $(LIBS_PATH) $(LIBS)
incardon's avatar
incardon committed
41 42 43 44 45 46 47 48 49 50 51

all: sph_dlb

run: sph_dlb_test
	mpirun -np 2 ./sph_dlb

.PHONY: clean all run

clean:
	rm -f *.o *~ core sph_dlb