mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 21:39:10 -04:00
using Vortex custom libc library
This commit is contained in:
parent
70717fb42b
commit
04314cefed
8 changed files with 83 additions and 18 deletions
|
@ -19,6 +19,8 @@ TOOLDIR ?= @TOOLDIR@
|
|||
|
||||
LLVM_VORTEX ?= $(TOOLDIR)/llvm-vortex
|
||||
|
||||
LIBC_VORTEX ?= $(TOOLDIR)/libc-vortex
|
||||
|
||||
ifeq ($(XLEN),64)
|
||||
RISCV_TOOLCHAIN_PATH ?= $(TOOLDIR)/riscv64-gnu-toolchain
|
||||
else
|
||||
|
|
|
@ -144,8 +144,14 @@ void vx_spawn_tasks(int num_tasks, vx_spawn_tasks_cb callback , void * arg) {
|
|||
int nw = MIN(TW, NW);
|
||||
vx_wspawn(nw, spawn_tasks_all_cb);
|
||||
|
||||
// execute callback on warp 0
|
||||
spawn_tasks_all_cb();
|
||||
// activate all threads
|
||||
vx_tmc(-1);
|
||||
|
||||
// call stub routine
|
||||
spawn_tasks_all_stub();
|
||||
|
||||
// back to single-threaded
|
||||
vx_tmc_one();
|
||||
}
|
||||
|
||||
if (rT != 0) {
|
||||
|
@ -307,8 +313,14 @@ void vx_spawn_pocl_kernel(pocl_kernel_context_t * ctx, pocl_kernel_cb callback,
|
|||
int nw = MIN(TW, NW);
|
||||
vx_wspawn(nw, spawn_pocl_kernel_all_cb);
|
||||
|
||||
// execute callback on warp 0
|
||||
spawn_pocl_kernel_all_cb();
|
||||
// activate all threads
|
||||
vx_tmc(-1);
|
||||
|
||||
// call stub routine
|
||||
spawn_pocl_kernel_all_stub();
|
||||
|
||||
// disable warp
|
||||
vx_tmc_zero();
|
||||
}
|
||||
|
||||
if (rT != 0) {
|
||||
|
|
|
@ -73,9 +73,9 @@ _start:
|
|||
.size _start, .-_start
|
||||
|
||||
.section .text
|
||||
.type _exit, @function
|
||||
.global _exit
|
||||
_exit:
|
||||
.type _Exit, @function
|
||||
.global _Exit
|
||||
_Exit:
|
||||
mv s0, a0
|
||||
call vx_perf_dump
|
||||
mv gp, s0
|
||||
|
|
43
miscs/vortex.cmake
Normal file
43
miscs/vortex.cmake
Normal file
|
@ -0,0 +1,43 @@
|
|||
# Vortex environment variables
|
||||
set(TOOLDIR $ENV{HOME}/tools)
|
||||
set(VORTEX_HOME $ENV{HOME}/dev/vortex)
|
||||
set(VORTEX_BUILD $ENV{HOME}/dev/vortex/build)
|
||||
set(STARTUP_ADDR 0x80000000)
|
||||
|
||||
# Set the system name to indicate cross-compiling
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR riscv32)
|
||||
|
||||
# Specify the binary utilities
|
||||
set(CMAKE_AR "${TOOLDIR}/llvm-vortex/bin/llvm-ar")
|
||||
set(CMAKE_ASM_COMPILER "${TOOLDIR}/llvm-vortex/bin/llvm-as")
|
||||
set(CMAKE_LINKER "${TOOLDIR}/llvm-vortex/bin/lld")
|
||||
set(CMAKE_NM "${TOOLDIR}/llvm-vortex/bin/llvm-nm")
|
||||
set(CMAKE_RANLIB "${TOOLDIR}/llvm-vortex/bin/llvm-ranlib")
|
||||
|
||||
# Specify the compilers
|
||||
set(CMAKE_C_COMPILER "${TOOLDIR}/llvm-vortex/bin/clang")
|
||||
set(CMAKE_CXX_COMPILER "${TOOLDIR}/llvm-vortex/bin/clang++")
|
||||
|
||||
# Compiler flags for C and C++
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -v --gcc-toolchain=${TOOLDIR}/riscv-gnu-toolchain -march=rv32imaf -mabi=ilp32f -Xclang -target-feature -Xclang +vortex -mcmodel=medany -fno-rtti -fno-exceptions -fdata-sections -ffunction-sections")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v --gcc-toolchain=${TOOLDIR}/riscv-gnu-toolchain -march=rv32imaf -mabi=ilp32f -Xclang -target-feature -Xclang +vortex -mcmodel=medany -fno-rtti -fno-exceptions -fdata-sections -ffunction-sections")
|
||||
|
||||
# Set the sysroot
|
||||
set(CMAKE_SYSROOT "${TOOLDIR}/riscv-gnu-toolchain/riscv32-unknown-elf")
|
||||
|
||||
# Linker flags
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld -nostartfiles -Wl,-Bstatic,--gc-sections,-T,${VORTEX_HOME}/kernel/linker/vx_link32.ld,--defsym=STARTUP_ADDR=${STARTUP_ADDR} ${VORTEX_BUILD}/kernel/libvortexrt.a")
|
||||
|
||||
# Don't run the linker on compiler check
|
||||
#set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
set(HAVE_CXX_ATOMICS64_WITHOUT_LIB True)
|
||||
set(HAVE_CXX_ATOMICS_WITHOUT_LIB True)
|
||||
|
||||
# search for programs in the build host directories
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
|
||||
# for libraries and headers in the target directories
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
@ -11,10 +11,12 @@ 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
|
||||
|
||||
CFLAGS += -O3 -mcmodel=medany -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections
|
||||
CFLAGS += -O3 -mcmodel=medany -fno-exceptions -nostartfiles -nostdlib -fdata-sections -ffunction-sections
|
||||
CFLAGS += -I$(VORTEX_KN_PATH)/include -I$(ROOT_DIR)/hw
|
||||
|
||||
LDFLAGS += -lm -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(ROOT_DIR)/kernel/libvortexrt.a
|
||||
LIBC_LIB += -L$(LIBC_VORTEX)/lib -lm -lc -lgcc
|
||||
|
||||
LDFLAGS += -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(ROOT_DIR)/kernel/libvortexrt.a $(LIBC_LIB)
|
||||
|
||||
all: $(PROJECT).elf $(PROJECT).bin $(PROJECT).dump
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ extern "C" void initBlackScholes(cl_context cxGPUContext, cl_command_queue cqPar
|
|||
}
|
||||
|
||||
//Save ptx code to separate file
|
||||
oclLogPtx(cpBlackScholes, oclGetFirstDev(cxGPUContext), "BlackScholes.ptx");
|
||||
//oclLogPtx(cpBlackScholes, oclGetFirstDev(cxGPUContext), "BlackScholes.ptx");
|
||||
|
||||
shrLog("...creating BlackScholes kernels\n");
|
||||
ckBlackScholes = clCreateKernel(cpBlackScholes, "BlackScholes", &ciErrNum);
|
||||
|
|
|
@ -20,10 +20,15 @@ POCL_RT_PATH ?= $(TOOLDIR)/pocl/runtime
|
|||
|
||||
LLVM_POCL ?= $(TOOLDIR)/llvm-vortex
|
||||
|
||||
LIBC_LIB += -L$(LIBC_VORTEX)/lib -lm -lc -lgcc
|
||||
|
||||
K_CFLAGS += -v -O3 --sysroot=$(RISCV_SYSROOT) --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH) -Xclang -target-feature -Xclang +vortex
|
||||
K_CFLAGS += -fno-rtti -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections
|
||||
K_CFLAGS += -fno-rtti -fno-exceptions -nostartfiles -nostdlib -fdata-sections -ffunction-sections
|
||||
#K_CFLAGS += -mllvm -vortex-branch-divergence=0
|
||||
#K_CFLAGS += -mllvm -print-after-all
|
||||
K_CFLAGS += -mllvm -disable-loop-idiom-all # disable memset/memcpy loop idiom
|
||||
K_CFLAGS += -I$(VORTEX_KN_PATH)/include -DNDEBUG
|
||||
K_LDFLAGS += -Wl,-Bstatic,--gc-sections,-T$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=$(STARTUP_ADDR) $(ROOT_DIR)/kernel/libvortexrt.a -lm
|
||||
K_LDFLAGS += -Wl,-Bstatic,--gc-sections,-T$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=$(STARTUP_ADDR) $(ROOT_DIR)/kernel/libvortexrt.a $(LIBC_LIB)
|
||||
|
||||
CXXFLAGS += -std=c++11 -Wall -Wextra -Wfatal-errors
|
||||
CXXFLAGS += -Wno-deprecated-declarations -Wno-unused-parameter -Wno-narrowing
|
||||
|
@ -58,7 +63,7 @@ kernel.cl: $(SRC_DIR)/kernel.cl
|
|||
cp $(SRC_DIR)/kernel.cl $@
|
||||
|
||||
kernel.pocl: $(SRC_DIR)/kernel.cl
|
||||
LD_LIBRARY_PATH=$(LLVM_POCL)/lib:$(POCL_CC_PATH)/lib:$(LLVM_VORTEX)/lib:$(LD_LIBRARY_PATH) LLVM_PREFIX=$(LLVM_VORTEX) POCL_DEBUG=all POCL_VORTEX_CFLAGS="$(K_CFLAGS)" POCL_VORTEX_LDFLAGS="$(K_LDFLAGS)" $(POCL_CC_PATH)/bin/poclcc -o kernel.pocl $^
|
||||
LD_LIBRARY_PATH=$(LLVM_POCL)/lib:$(POCL_CC_PATH)/lib:$(LLVM_VORTEX)/lib:$(LD_LIBRARY_PATH) LLVM_PREFIX=$(LLVM_VORTEX) POCL_DEBUG=all POCL_KERNEL_CACHE=0 POCL_VORTEX_CFLAGS="$(K_CFLAGS)" POCL_VORTEX_LDFLAGS="$(K_LDFLAGS)" $(POCL_CC_PATH)/bin/poclcc -o kernel.pocl $^
|
||||
|
||||
%.cc.o: $(SRC_DIR)/%.cc
|
||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
|
|
|
@ -16,7 +16,7 @@ endif
|
|||
LLVM_CFLAGS += --sysroot=$(RISCV_SYSROOT)
|
||||
LLVM_CFLAGS += --gcc-toolchain=$(RISCV_TOOLCHAIN_PATH)
|
||||
LLVM_CFLAGS += -Xclang -target-feature -Xclang +vortex
|
||||
#LLVM_CFLAGS += -mllvm -vortex-branch-divergence=2
|
||||
#LLVM_CFLAGS += -mllvm -vortex-branch-divergence=0
|
||||
#LLVM_CFLAGS += -mllvm -print-after-all
|
||||
#LLVM_CFLAGS += -I$(RISCV_SYSROOT)/include/c++/9.2.0/$(RISCV_PREFIX)
|
||||
#LLVM_CFLAGS += -I$(RISCV_SYSROOT)/include/c++/9.2.0
|
||||
|
@ -33,12 +33,13 @@ VX_CP = $(LLVM_VORTEX)/bin/llvm-objcopy
|
|||
#VX_DP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objdump
|
||||
#VX_CP = $(RISCV_TOOLCHAIN_PATH)/bin/$(RISCV_PREFIX)-objcopy
|
||||
|
||||
VX_CFLAGS += -v -O3 -std=c++11
|
||||
VX_CFLAGS += -mcmodel=medany -fno-rtti -fno-exceptions -nostartfiles -fdata-sections -ffunction-sections
|
||||
VX_CFLAGS += -v -O3 -std=c++11 -mcmodel=medany -fno-rtti -fno-exceptions -nostartfiles -nostdlib -fdata-sections -ffunction-sections
|
||||
VX_CFLAGS += -I$(VORTEX_KN_PATH)/include -I$(ROOT_DIR)/hw
|
||||
VX_CFLAGS += -DNDEBUG -DLLVM_VORTEX
|
||||
VX_CFLAGS += -DNDEBUG
|
||||
|
||||
VX_LDFLAGS += -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=$(STARTUP_ADDR) $(ROOT_DIR)/kernel/libvortexrt.a
|
||||
VX_LIBS += -L$(LIBC_VORTEX)/lib -lm -lc -lgcc
|
||||
|
||||
VX_LDFLAGS += -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/linker/vx_link$(XLEN).ld,--defsym=STARTUP_ADDR=$(STARTUP_ADDR) $(ROOT_DIR)/kernel/libvortexrt.a $(VX_LIBS)
|
||||
|
||||
CXXFLAGS += -std=c++11 -Wall -Wextra -pedantic -Wfatal-errors
|
||||
CXXFLAGS += -I$(VORTEX_RT_PATH)/include -I$(ROOT_DIR)/hw
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue