summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/WP/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/CUDA/WP/makefile')
-rw-r--r--benchmarks/CUDA/WP/makefile138
1 files changed, 138 insertions, 0 deletions
diff --git a/benchmarks/CUDA/WP/makefile b/benchmarks/CUDA/WP/makefile
new file mode 100644
index 0000000..835d0a1
--- /dev/null
+++ b/benchmarks/CUDA/WP/makefile
@@ -0,0 +1,138 @@
+#SHELL = csh
+##################### intel compiler #############
+#CC = icc
+#FC = ifort
+#CFLAGS = -w -O3 -ip -c
+#FCFLAGS = -align all -FR -convert big_endian -fno-alias -fno-fnalias
+#OPT = -O3
+#LD = $(FC)
+#LDOPT =
+# settings for GTX 280
+#XXX = 32
+#YYY = 8
+# settings for 5600 Quadro and GTX 8800
+XXX = 8
+YYY = 8
+##################### gcc/gfortran ###############
+CC = gcc
+FC = gfortran
+FCFLAGS = -fconvert=big-endian -frecord-marker=4 -ffree-form
+OPT = -O3
+LD = $(FC)
+LDOPT =
+##################################################
+# do not change this definition, change the one further down
+FLOAT = float
+RWORDSIZE = 4
+##################### cuda location ##############
+# eces-shell
+#CUDALIBPATH = ~/emu/cuda/lib
+# ncsa
+#CUDALIBPATH = /usr/local/cuda/lib
+#LIBCUBLAS = $(CUDALIBPATH)/libcublas.so
+#LIBCUBLASEMU = $(CUDALIBPATH)/libcublasemu.so
+
+
+######################## THIS SECTION YOU CAN CHANGE ##################
+#
+# Hard coded number of levels (35 for conus, 28 for jan00)
+MKX = 28
+
+# uncomment this to use FLOAT4 data type (optimization)
+#FLOAT4 = -DFLOAT_4=4
+
+# this must always be defined but they do not do anything unless
+# other settings are set
+DEBUG_I = 59
+DEBUG_J = 45
+DEBUG_K = 1
+DEBUGOUTPUT = -DDEBUG_I=$(DEBUG_I) -DDEBUG_J=$(DEBUG_J) -DDEBUG_K=$(DEBUG_K) $(FLOAT4)
+
+# uncomment to run on emulator instead of the device
+#DEVICEEMU = -DDEVICEEMU
+#DEVICEEMU_NVCC = -deviceemu $(DEVICEEMU)
+#LIBCUBLAS = $(LIBCUBLASEMU)
+
+# uncomment to output detailed debug data output
+# must have DEVICEEMU settings uncommented above
+#DEBUGOUTPUT = -DDEBUGOUTPUT -DDEBUG_I=$(DEBUG_I) -DDEBUG_J=$(DEBUG_J) -DDEBUG_K=$(DEBUG_K) $(FLOAT4)
+
+# uncomment to allow settings to force closer agreement
+#DEBUGDEBUG = -DDEBUGDEBUG
+
+# uncomment for to promote to 8 byte floats
+# note, if you do this without DEVICE EMU above, compiler will complain it does not have enough shared mem
+#PROMOTE = -DPROMOTE
+#FLOAT = double
+#FCFLAGS = -fconvert=big-endian -frecord-marker=4 -fdefault-real-8
+#RWORDSIZE = 8
+######################## END OF SECTION YOU CAN CHANGE ################
+
+#NVCC = nvcc -DCUDA
+NVCC = nvcc -DCUDA #--ptxas-options=-v
+PHASE = -cuda -arch sm_11 --compiler-options -fno-strict-aliasing
+NVOPT = $(DEVICEEMU_NVCC) $(PROMOTE) $(DEBUGDEBUG) $(DEBUGOUTPUT) \
+ -DXXX=$(XXX) -DYYY=$(YYY) -DMKX=$(MKX) --host-compilation 'C++' --use_fast_math
+
+ROOTBINDIR ?= bin
+BINDIR ?= $(ROOTBINDIR)
+ROOTOBJDIR ?= obj
+LIBDIR := $(NVIDIA_CUDA_SDK_LOCATION)/lib
+COMMONDIR := $(NVIDIA_CUDA_SDK_LOCATION)/common
+GPGPUSIM_ROOT ?= ../../..
+INTERMED_FILES := *.cpp*.i *.cpp*.ii *.cu.c *.cudafe*.* *.fatbin.c *.cubin *.hash
+
+GPGPUSIM_CL:=$(shell p4 changes -m 1 //...\#have | awk '{print $$2}')
+NVOPENCC_VER:=$(shell $$CUDAHOME/open64/bin/nvopencc --version 2>&1 | awk '/GPGPU-Sim/ {printf("_nvopencc_CL%d", $$3);}')
+GPGPULINK = -L$(GPGPUSIM_ROOT)/lib/ -lcudart -L$(NVIDIA_CUDA_SDK_LOCATION)/C/lib/ -lcutil -lm -lz -ldl -lGL $(NEWLIBDIR) $(LIB)
+# /usr/lib64/gcc/x86_64-pc-linux-gnu/4.1.2/libstdc++.so.6
+.SUFFIXES :
+
+all : vanilla chocolate compare_snaps
+
+wsm5.f.cu : wsm5.cu
+ m4 wsm5.cu | sed "s/float/$(FLOAT)/g" > wsm5.f.cu
+
+wsm5.cu.o : wsm5.f.cu
+ $(NVCC) $(PHASE) $(NVOPT) wsm5.f.cu
+ $(CC) $(CFLAGS) -o wsm5.cu.o -c wsm5.f.cu.cpp
+
+
+wsm5_gpu.f.cu : wsm5_gpu.cu spt.h
+ m4 wsm5_gpu.cu | ./spt.pl | sed "s/float/$(FLOAT)/g" > wsm5_gpu.f.cu
+
+wsm5_gpu.cu.o : wsm5_gpu.f.cu
+ $(NVCC) $(PHASE) $(NVOPT) wsm5_gpu.f.cu
+ $(CC) $(CFLAGS) -o wsm5_gpu.cu.o -c wsm5_gpu.f.cu.cpp
+
+
+libmassv.o : libmassv.F
+ $(FC) -E -C -P libmassv.F > libmassv.f90
+ $(FC) -c $(OPT) $(FCFLAGS) libmassv.f90
+
+microclock.o : microclock.c
+ $(CC) -c $(CFLAGS) -DMKX=$(MKX) microclock.c
+
+vanilla : module_mp_wsm5.F libmassv.o microclock.o
+ $(FC) -E -C -P $(DEBUGDEBUG) $(DEVICEEMU) $(DEBUGOUTPUT) -DRWORDSIZE=$(RWORDSIZE) module_mp_wsm5.F > module_mp_wsm5.f90
+ $(FC) -c $(OPT) $(FCFLAGS) module_mp_wsm5.f90
+ $(LD) -o wsm5_driver_vanilla $(LDOPT) module_mp_wsm5.o libmassv.o microclock.o $(LIBCUBLASEMU) $(GPGPULINK)
+
+chocolate : module_mp_wsm5.F wsm5.cu.o wsm5_gpu.cu.o libmassv.o microclock.o
+ $(FC) -E -C -P $(DEBUGDEBUG) $(DEVICEEMU) $(DEBUGOUTPUT) -DRUN_ON_GPU -DRWORDSIZE=$(RWORDSIZE) module_mp_wsm5.F > module_mp_wsm5.f90
+ $(FC) -c $(OPT) $(FCFLAGS) module_mp_wsm5.f90
+ $(LD) -o gpgpu_ptx_sim__wsm5_standalone $(LDOPT) module_mp_wsm5.o wsm5.cu.o wsm5_gpu.cu.o libmassv.o microclock.o $(LIBCUBLAS) $(GPGPULINK)
+
+compare_snaps : compare_snaps.F
+ cp compare_snaps.F compare_snaps.f90
+ $(FC) -o compare_snaps $(FCFLAGS) compare_snaps.f90
+ rm -f compare_snaps.f90
+
+clean :
+ rm -f *.o *.cu.cpp *.f.cu wsm5_driver_* *.mod *.f90 gpgpu_ptx_sim__wsm5_standalone* compare_snaps gpgpu_inst_stats.txt snap_gpu_010 gpgpu_inst_stats.txt *.log *.ptx
+ make clean_imm
+clean_imm :
+ rm -f $(INTERMED_FILES)
+
+tar:
+ tar cvf wsm5gpu_`date +"%Y%m%d"`.tar *.cu *.F *.h *.m4 *.pl makefile