Skip to content
Snippets Groups Projects
Commit 0b1aadb1 authored by bjschre2's avatar bjschre2
Browse files

Merge branch 'hpvm-reorg-9-temp' into 'hpvm-reorg-9'

Hpvm reorg 9 temp

See merge request llvm/hpvm!10
parents c2d51e4c 54c8ae99
No related branches found
No related tags found
No related merge requests found
Showing
with 10 additions and 2417 deletions
...@@ -22,9 +22,9 @@ TODO ...@@ -22,9 +22,9 @@ TODO
## Pipeline ## Pipeline
``` ```
make TARGET={seq, gpu} make TARGET={seq, gpu}
./pipeline-{seq, gpu} datasets/big/input/formula1_scaled.mp4 ./pipeline-{seq, gpu} datasets/formula1_scaled.mp4
``` ```
## Your own project ## Your own project
See `template/` for an example Makefile and config. See `template/` for an example Makefile and config.
Include `visc.h` to use HPVM intrinsics, found in the `test/include/visc.h`. Include `visc.h` to use HPVM C api functions, found in the `test/include/visc.h`.
# Current Benchmark Compatability
| Benchmark | Version | Supported on CPU | Supported on GPU |
| :-------- | :------ | :--------------: | :--------------: |
| sgemm | visc | ✔ | ✔ |
| stencil | visc | ✔ | ✔ |
| spmv | visc | ✔ | ✘ |
| lbm | visc | ✔ | ✘ |
OPENCL_PATH=/opt/ati/
OPENCL_LIB_PATH=/opt/ati/lib/x86_64
MCUDA_PATH=/usr/local/mcuda
CUDA_PATH=/usr/local/cuda
CUDA_LIB_PATH=/usr/local/cuda/lib64
OPENCL_PATH=/usr/local/cuda
OPENCL_LIB_PATH=/usr/lib
# (c) 2007 The Board of Trustees of the University of Illinois.
# Default language wide options
LANG_CFLAGS=-I$(PARBOIL_ROOT)/common/include -I/usr/local/cuda/include
LANG_CXXFLAGS=$(LANG_CFLAGS)
LANG_LDFLAGS=
CFLAGS=$(LANG_CFLAGS) $(PLATFORM_CFLAGS) $(APP_CFLAGS)
CXXFLAGS=$(LANG_CXXFLAGS) $(PLATFORM_CXXFLAGS) $(APP_CXXFLAGS)
LDFLAGS=$(LANG_LDFLAGS) $(PLATFORM_LDFLAGS) $(APP_LDFLAGS)
# Rules common to all makefiles
########################################
# Functions
########################################
# Add BUILDDIR as a prefix to each element of $1
INBUILDDIR=$(addprefix $(BUILDDIR)/,$(1))
# Add SRCDIR as a prefix to each element of $1
INSRCDIR=$(addprefix $(SRCDIR)/,$(1))
########################################
# Environment variable check
########################################
# The second-last directory in the $(BUILDDIR) path
# must have the name "build". This reduces the risk of terrible
# accidents if paths are not set up correctly.
ifeq ("$(notdir $(BUILDDIR))", "")
$(error $$BUILDDIR is not set correctly)
endif
ifneq ("$(notdir $(patsubst %/,%,$(dir $(BUILDDIR))))", "build")
$(error $$BUILDDIR is not set correctly)
endif
.PHONY: run
########################################
# Derived variables
########################################
ifeq ($(DEBUGGER),)
DEBUGGER=gdb
endif
OBJS = $(call INBUILDDIR,$(SRCDIR_OBJS))
########################################
# Rules
########################################
default: $(BUILDDIR) $(BIN)
run:
@$(BIN) $(ARGS)
debug:
@$(DEBUGGER) --args $(BIN) $(ARGS)
clean :
rm -f $(BUILDDIR)/*
if [ -d $(BUILDDIR) ]; then rmdir $(BUILDDIR); fi
$(BIN) : $(OBJS) $(BUILDDIR)/parboil.o
$(CXX) $^ -o $@ $(LDFLAGS)
$(BUILDDIR) :
mkdir -p $(BUILDDIR)
$(BUILDDIR)/%.o : $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/parboil.o: $(PARBOIL_ROOT)/common/src/parboil.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# (c) 2007 The Board of Trustees of the University of Illinois.
# Default language wide options
# CUDA specific
LANG_CFLAGS=-I$(PARBOIL_ROOT)/common/include -I$(CUDA_PATH)/include
LANG_CXXFLAGS=$(LANG_CFLAGS)
LANG_LDFLAGS=-L$(CUDA_LIB_PATH)
LANG_CUDACFLAGS=$(LANG_CFLAGS)
CFLAGS=$(APP_CFLAGS) $(LANG_CFLAGS) $(PLATFORM_CFLAGS)
CXXFLAGS=$(APP_CXXFLAGS) $(LANG_CXXFLAGS) $(PLATFORM_CXXFLAGS)
CUDACFLAGS=$(LANG_CUDACFLAGS) $(PLATFORM_CUDACFLAGS) $(APP_CUDACFLAGS)
CUDALDFLAGS=$(LANG_LDFLAGS) $(PLATFORM_CUDALDFLAGS) $(APP_CUDALDFLAGS)
# Rules common to all makefiles
########################################
# Functions
########################################
# Add BUILDDIR as a prefix to each element of $1
INBUILDDIR=$(addprefix $(BUILDDIR)/,$(1))
# Add SRCDIR as a prefix to each element of $1
INSRCDIR=$(addprefix $(SRCDIR)/,$(1))
########################################
# Environment variable check
########################################
# The second-last directory in the $(BUILDDIR) path
# must have the name "build". This reduces the risk of terrible
# accidents if paths are not set up correctly.
ifeq ("$(notdir $(BUILDDIR))", "")
$(error $$BUILDDIR is not set correctly)
endif
ifneq ("$(notdir $(patsubst %/,%,$(dir $(BUILDDIR))))", "build")
$(error $$BUILDDIR is not set correctly)
endif
.PHONY: run
ifeq ($(CUDA_PATH),)
FAILSAFE=no_cuda
else
FAILSAFE=
endif
########################################
# Derived variables
########################################
ifeq ($(DEBUGGER),)
DEBUGGER=gdb
endif
OBJS = $(call INBUILDDIR,$(SRCDIR_OBJS))
########################################
# Rules
########################################
default: $(FAILSAFE) $(BUILDDIR) $(BIN)
run:
@echo "Resolving CUDA runtime library..."
@$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(CUDA_LIB_PATH) ldd $(BIN) | grep cuda
$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(CUDA_LIB_PATH) ./$(BIN) $(ARGS)
debug:
@echo "Resolving CUDA runtime library..."
@$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(CUDA_LIB_PATH) ldd $(BIN) | grep cuda
@$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(CUDA_LIB_PATH) $(DEBUGGER) --args $(BIN) $(ARGS)
clean :
rm -rf $(BUILDDIR)/*
if [ -d $(BUILDDIR) ]; then rmdir $(BUILDDIR); fi
$(BIN) : $(OBJS) $(BUILDDIR)/parboil_cuda.o
$(CUDALINK) $^ -o $@ $(CUDALDFLAGS)
$(BUILDDIR) :
mkdir -p $(BUILDDIR)
$(BUILDDIR)/%.o : $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/parboil_cuda.o: $(PARBOIL_ROOT)/common/src/parboil_cuda.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cu
$(CUDACC) $< $(CUDACFLAGS) -c -o $@
no_cuda:
@echo "CUDA_PATH is not set. Open $(CUDA_ROOT)/common/Makefile.conf to set default value."
@echo "You may use $(PLATFORM_MK) if you want a platform specific configurations."
@exit 1
# (c) 2007 The Board of Trustees of the University of Illinois.
# Default language wide options
LANG_CFLAGS=-I$(PARBOIL_ROOT)/common/include -I$(OPENCL_PATH)/include
LANG_CXXFLAGS=$(LANG_CFLAGS)
LANG_LDFLAGS=-lOpenCL -L$(OPENCL_LIB_PATH) -lrt
CFLAGS=$(LANG_CFLAGS) $(PLATFORM_CFLAGS) $(APP_CFLAGS)
CXXFLAGS=$(LANG_CXXFLAGS) $(PLATFORM_CXXFLAGS) $(APP_CXXFLAGS)
LDFLAGS=$(LANG_LDFLAGS) $(PLATFORM_LDFLAGS) $(APP_LDFLAGS)
LLVM_INSTALL:=$(LLVM_SRC_ROOT)/../build
LIBCLC:=$(LLVM_SRC_ROOT)/../../libclc-install
LLVM_CC:=$(LLVM_INSTALL)/bin/clang
LLVM_LINK:=$(LLVM_INSTALL)/bin/llvm-link
# Rules common to all makefiles
########################################
# Functions
########################################
# Add BUILDDIR as a prefix to each element of $1
INBUILDDIR=$(addprefix $(BUILDDIR)/,$(1))
# Add SRCDIR as a prefix to each element of $1
INSRCDIR=$(addprefix $(SRCDIR)/,$(1))
########################################
# Environment variable check
########################################
# The second-last directory in the $(BUILDDIR) path
# must have the name "build". This reduces the risk of terrible
# accidents if paths are not set up correctly.
ifeq ("$(notdir $(BUILDDIR))", "")
$(error $$BUILDDIR is not set correctly)
endif
ifneq ("$(notdir $(patsubst %/,%,$(dir $(BUILDDIR))))", "build")
$(error $$BUILDDIR is not set correctly)
endif
.PHONY: run
.PRECIOUS: $(BUILDDIR)/%.ll
ifeq ($(OPENCL_PATH),)
FAILSAFE=no_opencl
else
FAILSAFE=
endif
########################################
# Derived variables
########################################
OBJS = $(call INBUILDDIR,$(SRCDIR_OBJS))
KERNEL = $(call INBUILDDIR,$(KERNEL_OBJS))
ifeq ($(DEBUGGER),)
DEBUGGER=gdb
endif
########################################
# Rules
########################################
default: $(FAILSAFE) $(BUILDDIR) $(BIN) $(KERNEL)
run : $(RUNDIR)
echo "Resolving OpenCL library..."
$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(OPENCL_LIB_PATH) ldd ./$(BIN) | grep OpenCL
$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(OPENCL_LIB_PATH) ./$(BIN) $(ARGS)
$(TOOL) $(OUTPUT) $(REF_OUTPUT)
debug:
@echo "Resolving OpenCL library..."
@$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(OPENCL_LIB_PATH) ldd $(BIN) | grep OpenCL
@$(shell echo $(RUNTIME_ENV)) LD_LIBRARY_PATH=$(OPENCL_LIB_PATH) $(DEBUGGER) --args $(BIN) $(ARGS)
clean :
rm -f $(BUILDDIR)/*
if [ -a $(BIN) ]; then rm $(BIN); fi
if [ -d $(BUILDDIR) ]; then rm -rf $(BUILDDIR); fi
if [ -d $(RUNDIR) ]; then rm -rf $(RUNDIR); fi
$(BIN) : $(OBJS) $(BUILDDIR)/parboil_opencl.o
$(CXX) $^ -o $@ $(LDFLAGS)
$(RUNDIR) :
mkdir -p $(RUNDIR)
$(BUILDDIR) :
mkdir -p $(BUILDDIR)
$(BUILDDIR)/%.o : $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/parboil_opencl.o : $(PARBOIL_ROOT)/common/src/parboil_opencl.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
$(BUILDDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
$(BUILDDIR)/%.nvptx.s : $(BUILDDIR)/%.linked.bc
$(LLVM_CC) -O3 -target nvptx64-nvidia-nvcl $< -S -o $@
$(BUILDDIR)/%.linked.bc : $(BUILDDIR)/%.ll
$(LLVM_LINK) $(LIBCLC)/lib/clc/nvptx64--nvidiacl.bc $< -o $@
$(BUILDDIR)/%.ll : $(SRCDIR)/%.cl
$(LLVM_CC) $(CFLAGS) -Dcl_clang_storage_class_specifiers -isystem $(LIBCLC)/include -include clc/clc.h -target nvptx64-nvidia-nvcl $< -O3 -emit-llvm -S -o $@
$(BUILDDIR)/%.ir : $(SRCDIR)/%.cl
cd $(SRCDIR); ioc64 -input=kernel.cl -ir=kernel.ir
cp $(SRCDIR)/kernel.ir $@
no_opencl:
@echo "OPENCL_PATH is not set. Open $(PARBOIL_ROOT)/common/Makefile.conf to set default value."
@echo "You may use $(PLATFORM_MK) if you want a platform specific configurations."
@exit 1
# (c) 2007 The Board of Trustees of the University of Illinois.
# Rules common to all makefiles
# Commands to build objects from source file using C compiler
# with gcc
# gcc (default)
CC = gcc
PLATFORM_CFLAGS =
CXX = g++
PLATFORM_CXXFLAGS =
LINKER = g++
PLATFORM_LDFLAGS = -lm -lpthread
# (c) 2007 The Board of Trustees of the University of Illinois.
# Rules common to all makefiles
# Commands to build objects from source file using C compiler
# with gcc
# gcc (default)
CC = gcc
PLATFORM_CFLAGS =
CXX = g++
PLATFORM_CXXFLAGS =
LINKER = g++
PLATFORM_LDFLAGS = -lm -lpthread
# (c) 2007 The Board of Trustees of the University of Illinois.
# Cuda-related definitions common to all benchmarks
########################################
# Variables
########################################
# c.default is the base along with CUDA configuration in this setting
include $(PARBOIL_ROOT)/common/platform/c.default.mk
# Paths
CUDAHOME=/usr/local/cuda
# Programs
CUDACC=$(CUDAHOME)/bin/nvcc
CUDALINK=$(CUDAHOME)/bin/nvcc
# Flags
PLATFORM_CUDACFLAGS=-code=sm_20
PLATFORM_CUDALDFLAGS=-lm -lpthread
# (c) 2007 The Board of Trustees of the University of Illinois.
# Cuda-related definitions common to all benchmarks
########################################
# Variables
########################################
# c.default is the base along with CUDA configuration in this setting
include $(PARBOIL_ROOT)/common/platform/c.default.mk
# Paths
CUDAHOME=/usr/local/cuda
# Programs
CUDACC=$(CUDAHOME)/bin/nvcc
CUDALINK=$(CUDAHOME)/bin/nvcc
# Flags
PLATFORM_CUDACFLAGS=-O3
PLATFORM_CUDALDFLAGS=-lm -lpthread
# (c) 2011 The Board of Trustees of the University of Illinois.
# Cuda-related definitions common to all benchmarks
########################################
# Variables
########################################
# c.default is the base along with CUDA configuration in this setting
include $(PARBOIL_ROOT)/common/platform/c.default.mk
# Paths
CUDA_PATH=$(MCUDA_PATH)/include
# Programs
CUDACC=$(MCUDA_PATH)/bin/mcc_xmm
CUDALINK=$(LINKER)
# Flags
PLATFORM_CUDACFLAGS=-O3
PLATFORM_CFLAGS=-O3 -I$(MCUDA_PATH)/include -D__MCUDA__
PLATFORM_CXXFLAGS=-O3 -I$(MCUDA_PATH)/include -D__MCUDA__
PLATFORM_CUDALDFLAGS=-lm -lpthread -L$(MCUDA_PATH)/lib -lmcuda
# (c) 2007 The Board of Trustees of the University of Illinois.
# Cuda-related definitions common to all benchmarks
########################################
# Variables
########################################
# c.default is the base along with CUDA configuration in this setting
include $(PARBOIL_ROOT)/common/platform/c.default.mk
# Paths
CUDAHOME=/usr/local/cuda
# Programs
CUDACC=$(CUDAHOME)/bin/nvcc
CUDALINK=$(CUDAHOME)/bin/nvcc
# Flags
PLATFORM_CUDACFLAGS=-O3
PLATFORM_CUDALDFLAGS=-lm -lpthread
# (c) 2007 The Board of Trustees of the University of Illinois.
# Rules common to all makefiles
# Commands to build objects from source file using C compiler
# with gcc
# Uncomment below two lines and configure if you want to use a platform
# other than global one
#OPENCL_PATH=/scr/hskim/ati-stream-sdk-v2.3-lnx64
#OPENCL_LIB_PATH=$(OPENCL_PATH)/lib/x86_64
# gcc (default)
CC = clang
PLATFORM_CFLAGS =
CXX = clang++
PLATFORM_CXXFLAGS =
LINKER = clang++
PLATFORM_LDFLAGS = -lm -lpthread
# (c) 2007 The Board of Trustees of the University of Illinois.
# Rules common to all makefiles
# Commands to build objects from source file using C compiler
# with gcc
# gcc (default)
CC = gcc
PLATFORM_CFLAGS =
CXX = g++
PLATFORM_CXXFLAGS =
LINKER = g++
PLATFORM_LDFLAGS = -lm -lpthread
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment