diff --git a/examples/aobench/Makefile b/examples/aobench/Makefile index 66fde5d3..126e8ed3 100644 --- a/examples/aobench/Makefile +++ b/examples/aobench/Makefile @@ -1,39 +1,7 @@ -ARCH = $(shell uname) +EXAMPLE=ao +CPP_SRC=ao.cpp ao_serial.cpp +ISPC_SRC=ao.ispc +ISPC_TARGETS=sse2,sse4,avx -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) - -CXX=g++ -CXXFLAGS=-Iobjs/ -O3 -Wall -m64 -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4,avx --arch=x86-64 - -ISPC_OBJS=objs/ao_ispc.o objs/ao_ispc_sse2.o objs/ao_ispc_sse4.o \ - objs/ao_ispc_avx.o -OBJS=objs/ao.o objs/ao_serial.o $(ISPC_OBJS) $(TASK_OBJ) - -default: ao - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ ao - -ao: dirs $(OBJS) $(TASK_OBJ) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm $(TASK_LIB) - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/ao.o: objs/ao_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/common.mk b/examples/common.mk new file mode 100644 index 00000000..5c5377c0 --- /dev/null +++ b/examples/common.mk @@ -0,0 +1,59 @@ + +TASK_CXX=../tasksys.cpp +TASK_LIB=-lpthread +TASK_OBJ=tasksys.o + +CXX=g++ +CXXFLAGS=-Iobjs/ -O2 -m64 +LIBS=-lm $(TASK_LIB) -lstdc++ +ISPC=ispc -O2 --arch=x86-64 $(ISPC_FLAGS) +ISPC_OBJS=$(addprefix objs/, $(ISPC_SRC:.ispc=)_ispc.o $(ISPC_SRC:.ispc=)_ispc_sse2.o \ + $(ISPC_SRC:.ispc=)_ispc_sse4.o $(ISPC_SRC:.ispc=)_ispc_avx.o) +ISPC_HEADER=objs/$(ISPC_SRC:.ispc=_ispc.h) +CPP_OBJS=$(addprefix objs/, $(CPP_SRC:.cpp=.o) $(TASK_OBJ)) + +default: $(EXAMPLE) + +all: $(EXAMPLE) $(EXAMPLE)-sse4 $(EXAMPLE)-generic16 + +.PHONY: dirs clean + +dirs: + /bin/mkdir -p objs/ + +objs/%.cpp objs/%.o objs/%.h: dirs + +clean: + /bin/rm -rf objs *~ $(EXAMPLE) $(EXAMPLE)-sse4 $(EXAMPLE)-generic16 + +$(EXAMPLE): $(CPP_OBJS) $(ISPC_OBJS) + $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) + +objs/%.o: %.cpp dirs $(ISPC_HEADER) + $(CXX) $< $(CXXFLAGS) -c -o $@ + +objs/%.o: ../%.cpp dirs + $(CXX) $< $(CXXFLAGS) -c -o $@ + +objs/$(EXAMPLE).o: objs/$(EXAMPLE)_ispc.h + +objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc + $(ISPC) --target=$(ISPC_TARGETS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h + +objs/$(ISPC_SRC:.ispc=)_sse4.cpp: $(ISPC_SRC) + $(ISPC) $< -o $@ --target=generic-4 --emit-c++ --c++-include-file=sse4.h + +objs/$(ISPC_SRC:.ispc=)_sse4.o: objs/$(ISPC_SRC:.ispc=)_sse4.cpp + $(CXX) -I../intrinsics -msse4.2 $< $(CXXFLAGS) -c -o $@ + +$(EXAMPLE)-sse4: $(CPP_OBJS) objs/$(ISPC_SRC:.ispc=)_sse4.o + $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) + +objs/$(ISPC_SRC:.ispc=)_generic16.cpp: $(ISPC_SRC) + $(ISPC) $< -o $@ --target=generic-16 --emit-c++ --c++-include-file=generic-16.h + +objs/$(ISPC_SRC:.ispc=)_generic16.o: objs/$(ISPC_SRC:.ispc=)_generic16.cpp + $(CXX) -I../intrinsics $< $(CXXFLAGS) -c -o $@ + +$(EXAMPLE)-generic16: $(CPP_OBJS) objs/$(ISPC_SRC:.ispc=)_generic16.o + $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) diff --git a/examples/deferred/Makefile b/examples/deferred/Makefile index a6bc5e53..d98b1c4e 100644 --- a/examples/deferred/Makefile +++ b/examples/deferred/Makefile @@ -1,38 +1,8 @@ -ARCH = $(shell uname) +EXAMPLE=deferred_shading +CPP_SRC=common.cpp main.cpp dynamic_c.cpp dynamic_cilk.cpp +ISPC_SRC=kernels.ispc +ISPC_TARGETS=sse2,sse4-x2,avx-x2 +ISPC_FLAGS=--opt=fast-math -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) - -CXX=g++ -CXXFLAGS=-Iobjs/ -O3 -Wall -m64 -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx-x2 --arch=x86-64 --math-lib=fast - -OBJS=objs/main.o objs/common.o objs/kernels_ispc.o objs/kernels_ispc_sse2.o \ - objs/kernels_ispc_sse4.o objs/kernels_ispc_avx.o \ - objs/dynamic_c.o objs/dynamic_cilk.o - -default: deferred_shading - -.PHONY: dirs clean -.PRECIOUS: objs/kernels_ispc.h - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ deferred_shading - -deferred_shading: dirs $(OBJS) $(TASK_OBJ) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) $(TASK_OBJ) -lm $(TASK_LIB) - -objs/%.o: %.cpp objs/kernels_ispc.h deferred.h - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/mandelbrot/Makefile b/examples/mandelbrot/Makefile index 256500c9..8cff944e 100644 --- a/examples/mandelbrot/Makefile +++ b/examples/mandelbrot/Makefile @@ -1,30 +1,7 @@ -CXX=g++ -m64 -CXXFLAGS=-Iobjs/ -O3 -Wall -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx-x2 --arch=x86-64 +EXAMPLE=mandelbrot +CPP_SRC=mandelbrot.cpp mandelbrot_serial.cpp +ISPC_SRC=mandelbrot.ispc +ISPC_TARGETS=sse2,sse4-x2,avx-x2 -default: mandelbrot - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ mandelbrot - -OBJS=objs/mandelbrot.o objs/mandelbrot_serial.o objs/mandelbrot_ispc_sse2.o \ - objs/mandelbrot_ispc_sse4.o objs/mandelbrot_ispc_avx.o \ - objs/mandelbrot_ispc.o - -mandelbrot: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/mandelbrot.o: objs/mandelbrot_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/mandelbrot_tasks/Makefile b/examples/mandelbrot_tasks/Makefile index 10e1e3d9..8cff944e 100644 --- a/examples/mandelbrot_tasks/Makefile +++ b/examples/mandelbrot_tasks/Makefile @@ -1,39 +1,7 @@ -ARCH = $(shell uname) +EXAMPLE=mandelbrot +CPP_SRC=mandelbrot.cpp mandelbrot_serial.cpp +ISPC_SRC=mandelbrot.ispc +ISPC_TARGETS=sse2,sse4-x2,avx-x2 -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) - -CXX=g++ -CXXFLAGS=-Iobjs/ -O3 -Wall -m64 -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx-x2 --arch=x86-64 - -OBJS=objs/mandelbrot.o objs/mandelbrot_serial.o $(TASK_OBJ) \ - objs/mandelbrot_ispc.o objs/mandelbrot_ispc_sse2.o \ - objs/mandelbrot_ispc_sse4.o objs/mandelbrot_ispc_avx.o - -default: mandelbrot - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ mandelbrot - -mandelbrot: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm $(TASK_LIB) - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/mandelbrot.o: objs/mandelbrot_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/noise/Makefile b/examples/noise/Makefile index f2158742..4bda4527 100644 --- a/examples/noise/Makefile +++ b/examples/noise/Makefile @@ -1,29 +1,7 @@ -CXX=g++ -m64 -CXXFLAGS=-Iobjs/ -O3 -Wall -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4,avx-x2 --arch=x86-64 +EXAMPLE=noise +CPP_SRC=$(EXAMPLE).cpp $(EXAMPLE)_serial.cpp +ISPC_SRC=noise.ispc +ISPC_TARGETS=sse2,sse4,avx-x2 -OBJS=objs/noise.o objs/noise_serial.o objs/noise_ispc.o objs/noise_ispc_sse2.o \ - objs/noise_ispc_sse4.o objs/noise_ispc_avx.o - -default: noise - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ noise - -noise: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/noise.o: objs/noise_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/options/Makefile b/examples/options/Makefile index c9574bc7..1a4f0a59 100644 --- a/examples/options/Makefile +++ b/examples/options/Makefile @@ -1,38 +1,7 @@ -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) +EXAMPLE=options +CPP_SRC=options.cpp options_serial.cpp +ISPC_SRC=options.ispc +ISPC_TARGETS=sse2,sse4-x2,avx-x2 - -CXX=g++ -m64 -CXXFLAGS=-Iobjs/ -O3 -Wall -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx-x2 --arch=x86-64 - -OBJS=objs/options.o objs/options_serial.o objs/options_ispc.o \ - objs/options_ispc_sse2.o objs/options_ispc_sse4.o \ - objs/options_ispc_avx.o $(TASK_OBJ) - -default: options - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ options - -options: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm $(TASK_LIB) - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/options.o: objs/options_ispc.h options_defs.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc options_defs.h - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/rt/Makefile b/examples/rt/Makefile index f5f2318f..1e1219e4 100644 --- a/examples/rt/Makefile +++ b/examples/rt/Makefile @@ -1,38 +1,7 @@ -ARCH = $(shell uname) +EXAMPLE=rt +CPP_SRC=rt.cpp rt_serial.cpp +ISPC_SRC=rt.ispc +ISPC_TARGETS=sse2,sse4-x2,avx -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) - -CXX=g++ -CXXFLAGS=-Iobjs/ -O3 -Wall -m64 -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx --arch=x86-64 - -OBJS=objs/rt.o objs/rt_serial.o $(TASK_OBJ) objs/rt_ispc.o objs/rt_ispc_sse2.o \ - objs/rt_ispc_sse4.o objs/rt_ispc_avx.o - -default: rt - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ rt - -rt: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm $(TASK_LIB) - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/rt.o: objs/rt_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/stencil/Makefile b/examples/stencil/Makefile index 2263d57a..7b58fe0b 100644 --- a/examples/stencil/Makefile +++ b/examples/stencil/Makefile @@ -1,39 +1,7 @@ -ARCH = $(shell uname) +EXAMPLE=stencil +CPP_SRC=stencil.cpp stencil_serial.cpp +ISPC_SRC=stencil.ispc +ISPC_TARGETS=sse2,sse4-x2,avx-x2 -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) - -CXX=g++ -CXXFLAGS=-Iobjs/ -O3 -Wall -m64 -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx-x2 --arch=x86-64 - -OBJS=objs/stencil.o objs/stencil_serial.o $(TASK_OBJ) objs/stencil_ispc.o \ - objs/stencil_ispc_sse2.o objs/stencil_ispc_sse4.o \ - objs/stencil_ispc_avx.o - -default: stencil - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ stencil - -stencil: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm $(TASK_LIB) - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/stencil.o: objs/stencil_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk diff --git a/examples/volume_rendering/Makefile b/examples/volume_rendering/Makefile index 2c7bcf2e..0ae93b58 100644 --- a/examples/volume_rendering/Makefile +++ b/examples/volume_rendering/Makefile @@ -1,38 +1,7 @@ -ARCH = $(shell uname) +EXAMPLE=volume +CPP_SRC=volume.cpp volume_serial.cpp +ISPC_SRC=volume.ispc +ISPC_TARGETS=sse2,sse4-x2,avx -TASK_CXX=../tasksys.cpp -TASK_LIB=-lpthread -TASK_OBJ=$(addprefix objs/, $(subst ../,, $(TASK_CXX:.cpp=.o))) - -CXX=g++ -CXXFLAGS=-Iobjs/ -O3 -Wall -m64 -ISPC=ispc -ISPCFLAGS=-O2 --target=sse2,sse4-x2,avx --arch=x86-64 - -OBJS=objs/volume.o objs/volume_serial.o $(TASK_OBJ) objs/volume_ispc.o \ - objs/volume_ispc_sse2.o objs/volume_ispc_sse4.o objs/volume_ispc_avx.o - -default: volume - -.PHONY: dirs clean - -dirs: - /bin/mkdir -p objs/ - -clean: - /bin/rm -rf objs *~ volume - -volume: dirs $(OBJS) - $(CXX) $(CXXFLAGS) -o $@ $(OBJS) -lm $(TASK_LIB) - -objs/%.o: %.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/%.o: ../%.cpp - $(CXX) $< $(CXXFLAGS) -c -o $@ - -objs/volume.o: objs/volume_ispc.h - -objs/%_ispc.h objs/%_ispc.o objs/%_ispc_sse2.o objs/%_ispc_sse4.o objs/%_ispc_avx.o: %.ispc - $(ISPC) $(ISPCFLAGS) $< -o objs/$*_ispc.o -h objs/$*_ispc.h +include ../common.mk