llvm-riscv => using llvm-vortex

This commit is contained in:
Blaise Tine 2023-02-15 00:50:26 -05:00
parent 4322c881a5
commit 8be7b6774c
8 changed files with 44 additions and 40 deletions

View file

@ -22,11 +22,11 @@ riscv()
llvm()
{
echo "prebuilt llvm-riscv2..."
tar -C $SRCDIR -cvjf llvm-riscv2.tar.bz2 llvm-riscv
split -b 50M llvm-riscv2.tar.bz2 "llvm-riscv2.tar.bz2.part"
mv llvm-riscv2.tar.bz2.part* $DESTDIR/llvm-riscv/$OS_DIR
rm llvm-riscv2.tar.bz2
echo "prebuilt llvm-vortex..."
tar -C $SRCDIR -cvjf llvm-vortex.tar.bz2 llvm-riscv
split -b 50M llvm-vortex.tar.bz2 "llvm-vortex.tar.bz2.part"
mv llvm-vortex.tar.bz2.part* $DESTDIR/llvm-vortex/$OS_DIR
rm llvm-vortex.tar.bz2
}
pocl()

View file

@ -48,16 +48,16 @@ llvm()
*) parts=$(eval echo {a..b}) ;;
esac
echo $parts
rm -f llvm-riscv2.tar.bz2.parta*
rm -f llvm-vortex.tar.bz2.parta*
for x in $parts
do
wget $REPOSITORY/llvm-riscv/$OS/llvm-riscv2.tar.bz2.parta$x
wget $REPOSITORY/llvm-vortex/$OS/llvm-vortex.tar.bz2.parta$x
done
cat llvm-riscv2.tar.bz2.parta* > llvm-riscv2.tar.bz2
tar -xvf llvm-riscv2.tar.bz2
rm -f llvm-riscv2.tar.bz2*
cp -r llvm-riscv $DESTDIR
rm -rf llvm-riscv
cat llvm-vortex.tar.bz2.parta* > llvm-vortex.tar.bz2
tar -xvf llvm-vortex.tar.bz2
rm -f llvm-vortex.tar.bz2*
cp -r llvm-vortex $DESTDIR
rm -rf llvm-vortex
}
pocl()

View file

@ -8,25 +8,25 @@ endif
RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf-
LLVM_PREFIX ?= /opt/llvm-riscv
LLVM_VORTEX ?= /opt/llvm-vortex
#LLVM_CFLAGS += --sysroot=$(RISCV_TOOLCHAIN_PATH)/riscv32-unknown-elf
#LLVM_CFLAGS += --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH)
#LLVM_CFLAGS += -Xclang -target-feature -Xclang +vortex
LLVM_CFLAGS += --sysroot=$(RISCV_TOOLCHAIN_PATH)/riscv32-unknown-elf
LLVM_CFLAGS += --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH)
LLVM_CFLAGS += -Xclang -target-feature -Xclang +vortex -mllvm -vortex-branch-divergence=0
#LLVM_CFLAGS += -I$(RISCV_TOOLCHAIN_PATH)/riscv32-unknown-elf/include/c++/9.2.0/riscv32-unknown-elf
#LLVM_CFLAGS += -I$(RISCV_TOOLCHAIN_PATH)/riscv32-unknown-elf/include/c++/9.2.0
#LLVM_CFLAGS += -Wl,-L$(RISCV_TOOLCHAIN_PATH)/lib/gcc/riscv32-unknown-elf/9.2.0
#LLVM_CFLAGS += --rtlib=libgcc
#CC = $(LLVM_PREFIX)/bin/clang $(LLVM_CFLAGS)
#CXX = $(LLVM_PREFIX)/bin/clang++ $(LLVM_CFLAGS)
#DP = $(LLVM_PREFIX)/bin/llvm-objdump
#CP = $(LLVM_PREFIX)/bin/llvm-objcopy
CC = $(LLVM_VORTEX)/bin/clang $(LLVM_CFLAGS)
CXX = $(LLVM_VORTEX)/bin/clang++ $(LLVM_CFLAGS)
DP = $(LLVM_VORTEX)/bin/llvm-objdump
CP = $(LLVM_VORTEX)/bin/llvm-objcopy
CC = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)gcc
AR = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)gcc-ar
DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)objdump
CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)objcopy
#CC = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)gcc
#AR = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)gcc-ar
#DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)objdump
#CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)objcopy
ifeq ($(XLEN),32)
CFLAGS += -march=rv32imf -mabi=ilp32f

View file

@ -4,6 +4,14 @@
#include <VX_config.h>
#include <VX_types.h>
#if defined(__clang__)
#define __UNIFORM__ __attribute__((annotate("vortex.uniform")))
#define __DIVERGENT__ __attribute__((annotate("vortex.divergent")))
#else
#define __UNIFORM__
#define __DIVERGENT__
#endif
#ifdef __cplusplus
extern "C" {
#endif
@ -337,8 +345,6 @@ inline void vx_fence() {
#define __endif vx_join();
#define __DIVERGENT__ __attribute__((annotate("divergent")))
#ifdef __cplusplus
}
#endif

View file

@ -13,8 +13,8 @@ ARG LLVM_HOME=/opt/llvm-10
ARG POCL_CC_PATH=/opt/pocl_cc
ARG POCL_RT_PATH=/opt/pocl_rt
ARG VORTEX_HOME=/home/vortex
ARG VORTEX_DRIVER_INC=$VORTEX_HOME/driver/sw/include
ARG VORTEX_DRIVER_LIB=$VORTEX_HOME/driver/sw/stub/libvortex.so
ARG VORTEX_RUNTIME_INC=$VORTEX_HOME/runtime/sw/include
ARG VORTEX_RUNTIME_LIB=$VORTEX_HOME/runtime/sw/stub/libvortex.so
ARG VORTEX_RUNTIME_PATH=$VORTEX_HOME/runtime
# system update
@ -65,13 +65,13 @@ RUN git clone https://$LOGIN@github.gatech.edu/casl/pocl.git /tmp/pocl
RUN cd /tmp/pocl; \
mkdir build_cc
RUN cd /tmp/pocl/build_cc; \
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_CC_PATH -DOCS_AVAILABLE=ON -DWITH_LLVM_CONFIG=$LLVM_HOME/bin/llvm-config -DENABLE_VORTEX=ON -DVORTEX_RUNTIME_PATH=$VORTEX_RUNTIME_PATH -DVORTEX_DRIVER_INC=$VORTEX_DRIVER_INC -DVORTEX_DRIVER_LIB=$VORTEX_DRIVER_LIB -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON ..
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_CC_PATH -DOCS_AVAILABLE=ON -DWITH_LLVM_CONFIG=$LLVM_HOME/bin/llvm-config -DENABLE_VORTEX=ON -DVORTEX_RUNTIME_PATH=$VORTEX_RUNTIME_PATH -DVORTEX_RUNTIME_INC=$VORTEX_RUNTIME_INC -DVORTEX_RUNTIME_LIB=$VORTEX_RUNTIME_LIB -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON ..
RUN cd /tmp/pocl/build_cc; \
cmake --build . --target install
RUN cd /tmp/pocl; \
mkdir build_rt
RUN cd /tmp/pocl/build_rt; \
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_RT_PATH -DOCS_AVAILABLE=OFF -DHOST_DEVICE_BUILD_HASH=riscv32-unknown-unknown-elf -DENABLE_VORTEX=ON -DVORTEX_RUNTIME_PATH=$VORTEX_RUNTIME_PATH -DVORTEX_DRIVER_INC=$VORTEX_DRIVER_INC -DVORTEX_DRIVER_LIB=$VORTEX_DRIVER_LIB -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON ..
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_RT_PATH -DOCS_AVAILABLE=OFF -DHOST_DEVICE_BUILD_HASH=riscv32-unknown-unknown-elf -DENABLE_VORTEX=ON -DVORTEX_RUNTIME_PATH=$VORTEX_RUNTIME_PATH -DVORTEX_RUNTIME_INC=$VORTEX_RUNTIME_INC -DVORTEX_RUNTIME_LIB=$VORTEX_RUNTIME_LIB -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON ..
RUN cd /tmp/pocl/build_rt; \
cmake --build . --target install
RUN rm -rf /tmp/pocl

View file

@ -21,7 +21,7 @@ draw3d(){
do
echo -e "\n**************************************\n" >> $LOG_FILE
echo -e "draw3d $trace benchmark\n" >> $LOG_FILE
CONFIGS="-DEXT_GFX_ENABLE" ./ci/blackbox.sh --driver=fpga --app=draw3d --args="-t$trace.cgltrace -w${WIDTH} -h${HEIGHT}" | grep 'Total elapsed time:' >> $LOG_FILE
CONFIGS="-DEXT_GFX_ENABLE" ./ci/blackbox.sh --driver=simx --app=draw3d --args="-t$trace.cgltrace -w${WIDTH} -h${HEIGHT}" | grep 'Total elapsed time:' >> $LOG_FILE
cp tests/regression/draw3d/output.png ${LOG_DIR}/perf_${TOKEN}_$trace.png
done
echo "draw3d tests done!"

View file

@ -6,7 +6,7 @@ PLATFORM ?= xilinx_u280_xdma_201920_3
XRT_SYN_DIR ?= ../../../hw/syn/xilinx/xrt
XRT_BUILD_DIR = $(XRT_SYN_DIR)/build_$(PLATFORM)_$(TARGET)/bin
LLVM_PREFIX ?= /opt/llvm-riscv
LLVM_VORTEX ?= /opt/llvm-vortex
RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain
SYSROOT ?= $(RISCV_TOOLCHAIN_PATH)/riscv32-unknown-elf
POCL_CC_PATH ?= /opt/pocl/compiler
@ -22,9 +22,7 @@ K_CFLAGS += -I$(VORTEX_KN_PATH)/include
K_LDFLAGS += -Wl,-Bstatic,-T$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld -Wl,--gc-sections $(VORTEX_KN_PATH)/libvortexrt.a -lm
CXXFLAGS += -std=c++11 -Wall -Wextra -Wfatal-errors
CXXFLAGS += -Wno-deprecated-declarations -Wno-unused-parameter -Wno-narrowing
CXXFLAGS += -I$(POCL_RT_PATH)/include
LDFLAGS += -L$(POCL_RT_PATH)/lib -L$(VORTEX_RT_PATH)/stub -lOpenCL -lvortex
@ -49,7 +47,7 @@ endif
all: $(PROJECT) kernel.pocl
kernel.pocl: kernel.cl
LLVM_PREFIX=$(LLVM_PREFIX) POCL_DEBUG=all LD_LIBRARY_PATH=$(LLVM_PREFIX)/lib:$(POCL_CC_PATH)/lib $(POCL_CC_PATH)/bin/poclcc -LLCFLAGS "$(K_LLCFLAGS)" -CFLAGS "$(K_CFLAGS)" -LDFLAGS "$(K_LDFLAGS)" -o kernel.pocl kernel.cl
LLVM_PREFIX=$(LLVM_VORTEX) POCL_DEBUG=all LD_LIBRARY_PATH=$(LLVM_VORTEX)/lib:$(POCL_CC_PATH)/lib $(POCL_CC_PATH)/bin/poclcc -LLCFLAGS "$(K_LLCFLAGS)" -CFLAGS "$(K_CFLAGS)" -LDFLAGS "$(K_LDFLAGS)" -o kernel.pocl kernel.cl
$(PROJECT): $(SRCS)
$(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@

View file

@ -11,7 +11,7 @@ RISCV_TOOLCHAIN_PATH ?= /opt/riscv-gnu-toolchain
VORTEX_RT_PATH ?= $(realpath ../../../runtime)
VORTEX_KN_PATH ?= $(realpath ../../../kernel)
LLVM_PREFIX ?= /opt/llvm-riscv
LLVM_VORTEX ?= /opt/llvm-vortex
LLVM_CFLAGS += --sysroot=$(RISCV_TOOLCHAIN_PATH)/riscv32-unknown-elf
LLVM_CFLAGS += --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH)
@ -21,10 +21,10 @@ LLVM_CFLAGS += -Xclang -target-feature -Xclang +vortex
#LLVM_CFLAGS += -Wl,-L$(RISCV_TOOLCHAIN_PATH)/lib/gcc/riscv32-unknown-elf/9.2.0
#LLVM_CFLAGS += --rtlib=libgcc
VX_CC = $(LLVM_PREFIX)/bin/clang $(LLVM_CFLAGS)
VX_CXX = $(LLVM_PREFIX)/bin/clang++ $(LLVM_CFLAGS)
VX_DP = $(LLVM_PREFIX)/bin/llvm-objdump -mattr=+m,+f,+vortex
VX_CP = $(LLVM_PREFIX)/bin/llvm-objcopy
VX_CC = $(LLVM_VORTEX)/bin/clang $(LLVM_CFLAGS)
VX_CXX = $(LLVM_VORTEX)/bin/clang++ $(LLVM_CFLAGS)
VX_DP = $(LLVM_VORTEX)/bin/llvm-objdump
VX_CP = $(LLVM_VORTEX)/bin/llvm-objcopy
#VX_CC = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-gcc
#VX_CXX = $(RISCV_TOOLCHAIN_PATH)/bin/riscv32-unknown-elf-g++