mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 21:39:10 -04:00
commit
b5f541b891
11 changed files with 42 additions and 166 deletions
139
.github/workflows/ci.yml
vendored
139
.github/workflows/ci.yml
vendored
|
@ -62,111 +62,7 @@ jobs:
|
|||
run: |
|
||||
make -C third_party > /dev/null
|
||||
|
||||
# build:
|
||||
# runs-on: ubuntu-20.04
|
||||
# needs: setup
|
||||
# strategy:
|
||||
# matrix:
|
||||
# xlen: [32, 64]
|
||||
|
||||
# steps:
|
||||
# - name: Checkout code
|
||||
# uses: actions/checkout@v2
|
||||
|
||||
# - name: Install Dependencies
|
||||
# run: |
|
||||
# sudo bash ./ci/system_updates.sh
|
||||
|
||||
# - name: Cache Toolchain Directory
|
||||
# id: cache-toolchain
|
||||
# uses: actions/cache@v2
|
||||
# with:
|
||||
# path: tools
|
||||
# key: ${{ runner.os }}-toolchain-v0.1
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-toolchain-
|
||||
|
||||
# - name: Cache Third Party Directory
|
||||
# id: cache-thirdparty
|
||||
# uses: actions/cache@v2
|
||||
# with:
|
||||
# path: third_party
|
||||
# key: ${{ runner.os }}-thirdparty-v0.1
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-thirdparty-
|
||||
|
||||
# - name: Run Build
|
||||
# run: |
|
||||
# TOOLDIR=$PWD/tools
|
||||
# mkdir -p build${{ matrix.xlen }}
|
||||
# cd build${{ matrix.xlen }}
|
||||
# ../configure --tooldir=$TOOLDIR --xlen=${{ matrix.xlen }}
|
||||
# source ci/toolchain_env.sh
|
||||
# make software -s > /dev/null
|
||||
# make tests -s > /dev/null
|
||||
|
||||
# - name: Upload Build Artifact
|
||||
# uses: actions/upload-artifact@v2
|
||||
# with:
|
||||
# name: build-${{ matrix.xlen }}
|
||||
# path: build${{ matrix.xlen }}
|
||||
|
||||
# tests:
|
||||
# runs-on: ubuntu-20.04
|
||||
# needs: build
|
||||
# strategy:
|
||||
# matrix:
|
||||
# name: [regression, opencl, config1, config2, debug, stress]
|
||||
# xlen: [32, 64]
|
||||
|
||||
# steps:
|
||||
# - name: Checkout code
|
||||
# uses: actions/checkout@v2
|
||||
|
||||
# - name: Install Dependencies
|
||||
# run: |
|
||||
# sudo bash ./ci/system_updates.sh
|
||||
|
||||
# - name: Cache Toolchain Directory
|
||||
# id: cache-toolchain
|
||||
# uses: actions/cache@v2
|
||||
# with:
|
||||
# path: tools
|
||||
# key: ${{ runner.os }}-toolchain-v0.1
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-toolchain-
|
||||
|
||||
# - name: Cache Third Party Directory
|
||||
# id: cache-thirdparty
|
||||
# uses: actions/cache@v2
|
||||
# with:
|
||||
# path: third_party
|
||||
# key: ${{ runner.os }}-thirdparty-v0.1
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-thirdparty-
|
||||
|
||||
# - name: Download Build Artifact
|
||||
# uses: actions/download-artifact@v2
|
||||
# with:
|
||||
# name: build-${{ matrix.xlen }}
|
||||
# path: build${{ matrix.xlen }}
|
||||
|
||||
# - name: Run tests
|
||||
# run: |
|
||||
# cd build${{ matrix.xlen }}
|
||||
# source ci/toolchain_env.sh
|
||||
# chmod -R +x . # Ensure all files have executable permissions
|
||||
# if [ "${{ matrix.name }}" == "regression" ]; then
|
||||
# ./ci/regression.sh --unittest
|
||||
# ./ci/regression.sh --isa
|
||||
# ./ci/regression.sh --kernel
|
||||
# ./ci/regression.sh --synthesis
|
||||
# ./ci/regression.sh --regression
|
||||
# else
|
||||
# ./ci/regression.sh --${{ matrix.name }}
|
||||
# fi
|
||||
|
||||
build_vm:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
needs: setup
|
||||
strategy:
|
||||
|
@ -202,9 +98,9 @@ jobs:
|
|||
- name: Run Build
|
||||
run: |
|
||||
TOOLDIR=$PWD/tools
|
||||
mkdir -p build${{ matrix.xlen }}-vm
|
||||
cd build${{ matrix.xlen }}-vm
|
||||
../configure --tooldir=$TOOLDIR --xlen=${{ matrix.xlen }} --vm_enable=1
|
||||
mkdir -p build${{ matrix.xlen }}
|
||||
cd build${{ matrix.xlen }}
|
||||
../configure --tooldir=$TOOLDIR --xlen=${{ matrix.xlen }}
|
||||
source ci/toolchain_env.sh
|
||||
make software -s > /dev/null
|
||||
make tests -s > /dev/null
|
||||
|
@ -212,12 +108,12 @@ jobs:
|
|||
- name: Upload Build Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build-${{ matrix.xlen }}-vm
|
||||
path: build${{ matrix.xlen }}-vm
|
||||
name: build-${{ matrix.xlen }}
|
||||
path: build${{ matrix.xlen }}
|
||||
|
||||
test_vm:
|
||||
test:
|
||||
runs-on: ubuntu-20.04
|
||||
needs: build_vm
|
||||
needs: build
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
@ -253,19 +149,26 @@ jobs:
|
|||
- name: Download Build Artifact
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: build-${{ matrix.xlen }}-vm
|
||||
path: build${{ matrix.xlen }}-vm
|
||||
|
||||
name: build-${{ matrix.xlen }}
|
||||
path: build${{ matrix.xlen }}
|
||||
- name: Run tests
|
||||
run: |
|
||||
cd build${{ matrix.xlen }}-vm
|
||||
cd build${{ matrix.xlen }}
|
||||
source ci/toolchain_env.sh
|
||||
chmod -R +x . # Ensure all files have executable permissions
|
||||
./ci/regression.sh --vm
|
||||
if [ "${{ matrix.name }}" == "regression" ]; then
|
||||
./ci/regression.sh --unittest
|
||||
./ci/regression.sh --isa
|
||||
./ci/regression.sh --kernel
|
||||
./ci/regression.sh --synthesis
|
||||
./ci/regression.sh --regression
|
||||
else
|
||||
./ci/regression.sh --${{ matrix.name }}
|
||||
fi
|
||||
|
||||
complete:
|
||||
runs-on: ubuntu-20.04
|
||||
needs: test_vm
|
||||
needs: test
|
||||
|
||||
steps:
|
||||
- name: Check Completion
|
||||
|
|
|
@ -2,14 +2,6 @@ include config.mk
|
|||
|
||||
.PHONY: build software tests
|
||||
|
||||
vm:
|
||||
$(MAKE) -C $(VORTEX_HOME)/third_party
|
||||
$(MAKE) -C hw
|
||||
$(MAKE) -C sim simx
|
||||
$(MAKE) -C kernel
|
||||
$(MAKE) -C runtime vm
|
||||
$(MAKE) -C tests
|
||||
|
||||
all:
|
||||
$(MAKE) -C $(VORTEX_HOME)/third_party
|
||||
$(MAKE) -C hw
|
||||
|
|
|
@ -129,23 +129,15 @@ opencl()
|
|||
vm(){
|
||||
echo "begin vm tests..."
|
||||
|
||||
make -C sim/simx
|
||||
make -C runtime/simx
|
||||
|
||||
make -C tests/kernel run-simx
|
||||
|
||||
# Regression tests
|
||||
make -C sim/simx clean && CONFIGS="-DVM_ENABLE" make -C sim/simx
|
||||
make -C runtime/simx clean && CONFIGS="-DVM_ENABLE" make -C runtime/simx
|
||||
make -C tests/opencl run-simx
|
||||
make -C tests/regression run-simx
|
||||
|
||||
# test global barrier
|
||||
CONFIGS="-DGBAR_ENABLE" ./ci/blackbox.sh --driver=simx --app=dogfood --args="-n1 -tgbar" --cores=2
|
||||
|
||||
# test local barrier
|
||||
./ci/blackbox.sh --driver=simx --app=dogfood --args="-n1 -tbar"
|
||||
|
||||
# OpenCL tests
|
||||
make -C sim/simx clean && CONFIGS="-DVM_ENABLE -DVM_ADDR_MODE=BARE" make -C sim/simx
|
||||
make -C runtime/simx clean && CONFIGS="-DVM_ENABLE -DVM_ADDR_MODE=BARE" make -C runtime/simx
|
||||
make -C tests/opencl run-simx
|
||||
./ci/blackbox.sh --driver=simx --app=lbm --warps=8
|
||||
make -C tests/regression run-simx
|
||||
|
||||
echo "vm tests done!"
|
||||
}
|
||||
|
@ -415,6 +407,7 @@ while [ "$1" != "" ]; do
|
|||
tests+=("regression")
|
||||
tests+=("opencl")
|
||||
tests+=("cache")
|
||||
tests+=("vm")
|
||||
tests+=("config1")
|
||||
tests+=("config2")
|
||||
tests+=("debug")
|
||||
|
|
|
@ -15,9 +15,7 @@
|
|||
# limitations under the License.
|
||||
|
||||
TOOLDIR=${TOOLDIR:=@TOOLDIR@}
|
||||
|
||||
# export VERILATOR_ROOT=$TOOLDIR/verilator
|
||||
# export PATH=$VERILATOR_ROOT/bin:$PATH
|
||||
export PATH=$TOOLDIR/verilator/bin:$PATH
|
||||
|
||||
export SV2V_PATH=$TOOLDIR/sv2v
|
||||
export PATH=$SV2V_PATH/bin:$PATH
|
||||
|
|
|
@ -35,5 +35,3 @@ VORTEX_RT_PATH ?= $(VORTEX_HOME)/runtime
|
|||
VORTEX_KN_PATH ?= $(VORTEX_HOME)/kernel
|
||||
|
||||
THIRD_PARTY_DIR ?= $(VORTEX_HOME)/third_party
|
||||
|
||||
VM_ENABLE ?= @VM_ENABLE@
|
7
configure
vendored
7
configure
vendored
|
@ -63,7 +63,7 @@ copy_files() {
|
|||
filename_no_ext="${filename%.in}"
|
||||
dest_file="$dest_dir/$filename_no_ext"
|
||||
mkdir -p "$dest_dir"
|
||||
sed "s|@VORTEX_HOME@|$SCRIPT_DIR|g; s|@XLEN@|$XLEN|g; s|@TOOLDIR@|$TOOLDIR|g; s|@OSVERSION@|$OSVERSION|g; s|@INSTALLDIR@|$PREFIX|g; s|@VM_ENABLE@|$VM_ENABLE|g" "$file" > "$dest_file"
|
||||
sed "s|@VORTEX_HOME@|$SCRIPT_DIR|g; s|@XLEN@|$XLEN|g; s|@TOOLDIR@|$TOOLDIR|g; s|@OSVERSION@|$OSVERSION|g; s|@INSTALLDIR@|$PREFIX|g" "$file" > "$dest_file"
|
||||
# apply permissions to bash scripts
|
||||
read -r firstline < "$dest_file"
|
||||
if [[ "$firstline" =~ ^#!.*bash ]]; then
|
||||
|
@ -114,7 +114,6 @@ default_xlen=32
|
|||
default_tooldir=$HOME/tools
|
||||
default_osversion=$(detect_osversion)
|
||||
default_prefix=$CURRENT_DIR
|
||||
default_vm=0
|
||||
|
||||
# load default configuration parameters from existing config.mk
|
||||
if [ -f "config.mk" ]; then
|
||||
|
@ -127,7 +126,6 @@ if [ -f "config.mk" ]; then
|
|||
TOOLDIR\ ?*) default_tooldir=${value//\?=/} ;;
|
||||
OSVERSION\ ?*) default_osversion=${value//\?=/} ;;
|
||||
PREFIX\ ?*) default_prefix=${value//\?=/} ;;
|
||||
VM_ENABLE\ ?*) default_vm=${value//\?=/} ;;
|
||||
esac
|
||||
done < config.mk
|
||||
fi
|
||||
|
@ -137,7 +135,6 @@ XLEN=${XLEN:=$default_xlen}
|
|||
TOOLDIR=${TOOLDIR:=$default_tooldir}
|
||||
OSVERSION=${OSVERSION:=$default_osversion}
|
||||
PREFIX=${PREFIX:=$default_prefix}
|
||||
VM_ENABLE=${VM_ENABLE:=$default_vm}
|
||||
|
||||
# parse command line arguments
|
||||
usage() {
|
||||
|
@ -146,7 +143,6 @@ usage() {
|
|||
echo " --tooldir=<path> Set the TOOLDIR path (default: $HOME/tools)"
|
||||
echo " --osversion=<version> Set the OS Version (default: $(detect_osversion))"
|
||||
echo " --prefix=<path> Set installation directory"
|
||||
echo " --vm_enable=<value> Enable Virtual Memory support (default: 0)"
|
||||
exit 1
|
||||
}
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
|
@ -155,7 +151,6 @@ while [[ "$#" -gt 0 ]]; do
|
|||
--tooldir=*) TOOLDIR="${1#*=}" ;;
|
||||
--osversion=*) OSVERSION="${1#*=}" ;;
|
||||
--prefix=*) PREFIX="${1#*=}" ;;
|
||||
--vm_enable=*) VM_ENABLE="${1#*=}" ;;
|
||||
-h|--help) usage ;;
|
||||
*) echo "Unknown parameter passed: $1"; usage ;;
|
||||
esac
|
||||
|
|
|
@ -32,10 +32,6 @@ CFLAGS += -O3 -mcmodel=medany -fno-exceptions -fdata-sections -ffunction-section
|
|||
CFLAGS += -I$(INC_DIR) -I$(ROOT_DIR)/hw
|
||||
CFLAGS += -DXLEN_$(XLEN)
|
||||
|
||||
ifeq ($(VM_ENABLE), 1)
|
||||
CFLAGS += -DVM_ENABLE
|
||||
endif
|
||||
|
||||
PROJECT := libvortex
|
||||
|
||||
SRCS = $(SRC_DIR)/vx_start.S $(SRC_DIR)/vx_syscalls.c $(SRC_DIR)/vx_print.S $(SRC_DIR)/tinyprintf.c $(SRC_DIR)/vx_print.c $(SRC_DIR)/vx_spawn.c $(SRC_DIR)/vx_serial.S $(SRC_DIR)/vx_perf.c
|
||||
|
|
|
@ -10,10 +10,6 @@ CXXFLAGS += -I$(INC_DIR) -I../common -I$(ROOT_DIR)/hw -I$(SIM_DIR)/simx -I$(COMM
|
|||
CXXFLAGS += $(CONFIGS)
|
||||
CXXFLAGS += -DXLEN_$(XLEN)
|
||||
|
||||
ifeq ($(VM_ENABLE), 1)
|
||||
CXXFLAGS += -DVM_ENABLE
|
||||
endif
|
||||
|
||||
LDFLAGS += -shared -pthread
|
||||
LDFLAGS += -L$(DESTDIR) -lsimx
|
||||
|
||||
|
@ -46,4 +42,4 @@ clean-runtime:
|
|||
|
||||
clean: clean-driver clean-runtime
|
||||
|
||||
.PHONY: all driver clean-driver clean-runtime clean
|
||||
.PHONY: all driver clean-driver clean-runtime clean
|
||||
|
|
|
@ -56,7 +56,8 @@ public:
|
|||
{
|
||||
// attach memory module
|
||||
processor_.attach_ram(&ram_);
|
||||
#ifdef VM_ENABLE
|
||||
#ifdef VM_ENABLE
|
||||
std::cout << "*** VM ENABLED!! ***"<< std::endl;
|
||||
CHECK_ERR(init_VM(), );
|
||||
#endif
|
||||
}
|
||||
|
@ -432,6 +433,12 @@ public:
|
|||
uint64_t pt_addr = 0;
|
||||
// Reserve space for PT
|
||||
DBGPRINT("[RT:init_VM] Initialize VM\n");
|
||||
DBGPRINT("* VM_ADDR_MODE=0x%lx", VM_ADDR_MODE);
|
||||
DBGPRINT("* PAGE_TABLE_BASE_ADDR=0x%lx", PAGE_TABLE_BASE_ADDR);
|
||||
DBGPRINT("* PT_LEVEL=0x%lx", PT_LEVEL);
|
||||
DBGPRINT("* PT_SIZE=0x%lx", PT_SIZE);
|
||||
DBGPRINT("* PTE_SIZE=0x%lx", PTE_SIZE);
|
||||
DBGPRINT("* TLB_SIZE=0x%lx", TLB_SIZE);
|
||||
CHECK_ERR(mem_reserve(PAGE_TABLE_BASE_ADDR, PT_SIZE_LIMIT, VX_MEM_READ_WRITE), {
|
||||
return err;
|
||||
});
|
||||
|
|
|
@ -14,10 +14,6 @@ CXXFLAGS += -I$(THIRD_PARTY_DIR)/ramulator/src
|
|||
CXXFLAGS += -DXLEN_$(XLEN)
|
||||
CXXFLAGS += $(CONFIGS)
|
||||
|
||||
ifeq ($(VM_ENABLE), 1)
|
||||
CXXFLAGS += -DVM_ENABLE
|
||||
endif
|
||||
|
||||
LDFLAGS += $(THIRD_PARTY_DIR)/softfloat/build/Linux-x86_64-GCC/softfloat.a
|
||||
LDFLAGS += -Wl,-rpath,$(THIRD_PARTY_DIR)/ramulator -L$(THIRD_PARTY_DIR)/ramulator -lramulator
|
||||
|
||||
|
|
|
@ -2,8 +2,10 @@ ROOT_DIR := $(realpath ../../..)
|
|||
|
||||
ifeq ($(XLEN),64)
|
||||
CFLAGS += -march=rv64imafd -mabi=lp64d
|
||||
STARTUP_ADDR ?= 0x180000000
|
||||
else
|
||||
CFLAGS += -march=rv32imaf -mabi=ilp32f
|
||||
STARTUP_ADDR ?= 0x80000000
|
||||
endif
|
||||
|
||||
LLVM_CFLAGS += --sysroot=$(RISCV_SYSROOT)
|
||||
|
@ -29,7 +31,7 @@ CFLAGS += -DXLEN_$(XLEN) -DNDEBUG
|
|||
LIBC_LIB += -L$(LIBC_VORTEX)/lib -lm -lc
|
||||
LIBC_LIB += $(LIBCRT_VORTEX)/lib/baremetal/libclang_rt.builtins-riscv$(XLEN).a
|
||||
|
||||
LDFLAGS += -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/scripts/link$(XLEN).ld,--defsym=STARTUP_ADDR=0x80000000 $(ROOT_DIR)/kernel/libvortex.a $(LIBC_LIB)
|
||||
LDFLAGS += -Wl,-Bstatic,--gc-sections,-T,$(VORTEX_KN_PATH)/scripts/link$(XLEN).ld,--defsym=STARTUP_ADDR=$(STARTUP_ADDR) $(ROOT_DIR)/kernel/libvortex.a $(LIBC_LIB)
|
||||
|
||||
all: $(PROJECT).elf $(PROJECT).bin $(PROJECT).dump
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue