Makefile 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # tile size. Should be changed in mult.jl as well
  2. STRIDE=72
  3. # ICC compiler
  4. #CC =icc
  5. #CFLAGS=-restrict -unroll4 -ipo -falign-loops=256 -O3 -DSTRIDE=${STRIDE} -march=native $(shell pkg-config --cflags starpu-1.3)
  6. # GCC compiler
  7. CC=gcc
  8. NVCC=nvcc
  9. ENABLE_CUDA=no
  10. LD=$(CC)
  11. ifeq ($(ENABLE_CUDA),yes)
  12. LD := ${NVCC}
  13. endif
  14. CFLAGS = -O3 -g -DSTRIDE=${STRIDE} $(shell pkg-config --cflags starpu-1.3)
  15. CPU_CFLAGS = ${CFLAGS} -Wall -mavx -fomit-frame-pointer -march=native -ffast-math
  16. CUDA_CFLAGS = ${CFLAGS}
  17. LDFLAGS +=$(shell pkg-config --libs starpu-1.3)
  18. EXTERNLIB=extern_tasks.so
  19. GENERATEDLIB=generated_tasks.so
  20. C_OBJECTS=$(patsubst %.c,%.o,$(wildcard gen*.c))
  21. CUDA_OBJECTS=$(patsubst %.cu,%.o,$(wildcard gen*.cu))
  22. ifneq ($(ENABLE_CUDA),yes)
  23. CUDA_OBJECTS:=
  24. endif
  25. LIBPATH=${PWD}/../StarPU.jl/lib
  26. all: ${EXTERNLIB}
  27. mult: mult.c cpu_mult.o #gpu_mult.o
  28. $(CC) $(CPU_CFLAGS) $^ -o $@ $(LDFLAGS)
  29. %.o: %.c
  30. $(CC) -c -fPIC $(CPU_CFLAGS) $^ -o $@
  31. %.o: %.cu
  32. $(NVCC) -dc $(CUDA_CFLAGS) $^ --shared --compiler-options '-fPIC' -o $@ $(LDFLAGS)
  33. ${EXTERNLIB}: cpu_mult.c
  34. $(CC) $(CFLAGS) -shared -fPIC $(LDFLAGS) $^ -o $@
  35. ${GENERATEDLIB}: $(C_OBJECTS) $(CUDA_OBJECTS)
  36. $(LD) -shared $(LDFLAGS) $^ -o $@
  37. .PHONY: clean
  38. clean:
  39. rm -f mult *.so *.o genc_*.c gencuda_*.cu *.dat
  40. # Performance Tests
  41. cstarpu.dat: mult
  42. STARPU_NOPENCL=0 STARPU_SCHED=dmda STARPU_CALIBRATE=1 ./mult > $@
  43. julia_generatedc.dat:
  44. LD_LIBRARY_PATH+=${LIBPATH} STARPU_NOPENCL=0 STARPU_SCHED=dmda STARPU_CALIBRATE=1 julia mult.jl $@
  45. julia_native.dat:
  46. LD_LIBRARY_PATH+=${LIBPATH} STARPU_NOPENCL=0 STARPU_SCHED=dmda STARPU_CALIBRATE=1 julia mult_native.jl $@
  47. julia_calllib.dat: ${EXTERNLIB}
  48. LD_LIBRARY_PATH+=${LIBPATH} JULIA_TASK_LIB="${EXTERNLIB}" STARPU_NOPENCL=0 STARPU_SCHED=dmda STARPU_CALIBRATE=1 julia mult.jl julia_calllib.dat
  49. test: cstarpu.dat julia_generatedc.dat julia_native.dat julia_calllib.dat