Skip to content

Commit

Permalink
vortex runtime update
Browse files Browse the repository at this point in the history
  • Loading branch information
Blaise Tine committed Jul 24, 2022
1 parent be648b0 commit 778ef49
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
8 changes: 4 additions & 4 deletions README.vortex
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
- mkdir build
- cd build
- export LLVM_PREFIX=/opt/llvm-riscv
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DBUILD_SHARED_LIBS=True -DCMAKE_INSTALL_PREFIX=$LLVM_PREFIX -DLLVM_BUILD_TESTS=False -DDEFAULT_SYSROOT=$RISCV_TOOLCHAIN_PATH/riscv32-unknown-elf -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_TARGETS_TO_BUILD="RISCV" ../llvm
#- cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DBUILD_SHARED_LIBS=True -DCMAKE_INSTALL_PREFIX=$LLVM_PREFIX -DLLVM_BUILD_TESTS=False -DDEFAULT_SYSROOT=$RISCV_TOOLCHAIN_PATH/riscv32-unknown-elf -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_TARGETS_TO_BUILD="RISCV" ../llvm
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DBUILD_SHARED_LIBS=True -DCMAKE_INSTALL_PREFIX=$LLVM_PREFIX -DLLVM_BUILD_TESTS=False -DDEFAULT_SYSROOT=$RISCV_TOOLCHAIN_PATH/riscv32-unknown-elf -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_TARGETS_TO_BUILD="RISCV" ../llvm
#- cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" -DLLVM_ABI_BREAKING_CHECKS=FORCE_OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DBUILD_SHARED_LIBS=True -DCMAKE_INSTALL_PREFIX=$LLVM_PREFIX -DLLVM_BUILD_TESTS=False -DDEFAULT_SYSROOT=$RISCV_TOOLCHAIN_PATH/riscv32-unknown-elf -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_TARGETS_TO_BUILD="RISCV" ../llvm
- cmake --build . --target install

## Sanity test your new RISC-V LLVM
Expand Down Expand Up @@ -57,13 +57,13 @@
- mkdir build_vortex_cc
- cd build_vortex_cc
- export POCL_CC_PATH=/opt/pocl/compiler
- cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_CC_PATH -DCMAKE_BUILD_TYPE=Debug -DOCS_AVAILABLE=ON -DWITH_LLVM_CONFIG=$LLVM_PREFIX/bin/llvm-config -DENABLE_VORTEX=ON -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON -DDEFAULT_ENABLE_ICD=OFF ..
- cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_CC_PATH -DCMAKE_BUILD_TYPE=Debug -DOCS_AVAILABLE=ON -DWITH_LLVM_CONFIG=$LLVM_PREFIX/bin/llvm-config -DENABLE_VORTEX=ON -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON -DENABLE_ICD=OFF ..
- cmake --build . --target install

- mkdir build_vortex_rt
- cd build_vortex_rt
- export POCL_RT_PATH=/opt/pocl/runtime
- export VORTEX_DRIVER_INC=~/dev/vortex_live/driver/include
- export VORTEX_DRIVER_LIB=~/dev/vortex_live/driver/stub/libvortex.so
- cmake -G Ninja -DHOST_DEVICE_BUILD_HASH=riscv32-unknown-unknown-elf -DCMAKE_INSTALL_PREFIX=$POCL_RT_PATH -DCMAKE_BUILD_TYPE=Debug -DOCS_AVAILABLE=OFF -DVORTEX_DRIVER_INC=$VORTEX_DRIVER_INC -DVORTEX_DRIVER_LIB=$VORTEX_DRIVER_LIB -DENABLE_VORTEX=ON -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON -DDEFAULT_ENABLE_ICD=OFF ..
- cmake -G Ninja -DHOST_DEVICE_BUILD_HASH=riscv32-unknown-unknown-elf -DCMAKE_INSTALL_PREFIX=$POCL_RT_PATH -DCMAKE_BUILD_TYPE=Debug -DOCS_AVAILABLE=OFF -DVORTEX_DRIVER_INC=$VORTEX_DRIVER_INC -DVORTEX_DRIVER_LIB=$VORTEX_DRIVER_LIB -DENABLE_VORTEX=ON -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON -DENABLE_ICD=OFF ..
- cmake --build . --target install
30 changes: 17 additions & 13 deletions lib/CL/devices/vortex/vortex.cc
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@ extern char *build_llcflags;

struct vx_device_data_t {
#if !defined(OCS_AVAILABLE)
vx_device_h vx_device;size_t vx_print_buf_d;
vx_device_h vx_device;
size_t vx_print_buf_d;
vx_buffer_h vx_print_buf_h;
uint32_t printf_buffer;
uint32_t printf_buffer_position;
Expand All @@ -102,6 +103,7 @@ struct vx_device_data_t {

struct vx_buffer_data_t {
#if !defined(OCS_AVAILABLE)
vx_device_h vx_device;
vx_buffer_h staging_buf;
#endif
size_t dev_mem_addr;
Expand Down Expand Up @@ -276,15 +278,15 @@ cl_int pocl_vortex_init(unsigned j, cl_device_id device,
uint32_t print_buf_dev_size = PRINT_BUFFER_SIZE + sizeof(uint32_t);

size_t vx_print_buf_d;
err = vx_alloc_dev_mem(vx_device, print_buf_dev_size, &vx_print_buf_d);
err = vx_mem_alloc(vx_device, print_buf_dev_size, &vx_print_buf_d);
if (err != 0) {
vx_dev_close(vx_device);
free(d);
return CL_INVALID_DEVICE;
}

vx_buffer_h vx_print_buf_h;
err = vx_alloc_shared_mem(vx_device, print_buf_dev_size, &vx_print_buf_h);
err = vx_buf_alloc(vx_device, print_buf_dev_size, &vx_print_buf_h);
if (err != 0) {
vx_dev_close(vx_device);
free(d);
Expand All @@ -296,7 +298,7 @@ cl_int pocl_vortex_init(unsigned j, cl_device_id device,
memset(staging_ptr + PRINT_BUFFER_SIZE, 0, sizeof(uint32_t));
err = vx_copy_to_dev(vx_print_buf_h, vx_print_buf_d + PRINT_BUFFER_SIZE, sizeof(uint32_t), PRINT_BUFFER_SIZE);
if (err != 0) {
vx_buf_release(vx_print_buf_h);
vx_buf_free(vx_print_buf_h);
vx_dev_close(vx_device);
free(d);
return CL_OUT_OF_HOST_MEMORY;
Expand Down Expand Up @@ -324,7 +326,7 @@ cl_int pocl_vortex_uninit(unsigned j, cl_device_id device) {
return CL_SUCCESS;

#if !defined(OCS_AVAILABLE)
vx_buf_release(d->vx_print_buf_h);
vx_buf_free(d->vx_print_buf_h);
vx_dev_close(d->vx_device);
#endif

Expand All @@ -350,14 +352,14 @@ pocl_vortex_malloc(cl_device_id device, cl_mem_flags flags, size_t size,
}

vx_buffer_h staging_buf;
err = vx_alloc_shared_mem(d->vx_device, size, &staging_buf);
err = vx_buf_alloc(d->vx_device, size, &staging_buf);
if (err != 0)
return nullptr;

size_t dev_mem_addr;
err = vx_alloc_dev_mem(d->vx_device, size, &dev_mem_addr);
err = vx_mem_alloc(d->vx_device, size, &dev_mem_addr);
if (err != 0) {
vx_buf_release(staging_buf);
vx_buf_free(staging_buf);
return nullptr;
}

Expand All @@ -366,13 +368,14 @@ pocl_vortex_malloc(cl_device_id device, cl_mem_flags flags, size_t size,
memcpy((void*)buf_ptr, host_ptr, size);
err = vx_copy_to_dev(staging_buf, dev_mem_addr, size, 0);
if (err != 0) {
vx_buf_release(staging_buf);
vx_buf_free(staging_buf);
return nullptr;
}
}

auto buf_data = new vx_buffer_data_t();
buf_data->staging_buf = staging_buf;
buf_data->vx_device = d->vx_device;
buf_data->staging_buf = staging_buf;
buf_data->dev_mem_addr = dev_mem_addr;

return buf_data;
Expand Down Expand Up @@ -424,7 +427,8 @@ void pocl_vortex_free(cl_device_id device, cl_mem memobj) {
|| memobj->shared_mem_allocation_owner != device) {
std::abort(); //TODO
} else {
vx_buf_release(buf_data->staging_buf);
vx_buf_free(buf_data->staging_buf);
vx_mem_free(buf_data->vx_device, buf_data->dev_mem_addr);
}
if (memobj->flags | CL_MEM_ALLOC_HOST_PTR)
memobj->mem_host_ptr = NULL;
Expand Down Expand Up @@ -586,7 +590,7 @@ void pocl_vortex_run(void *data, _cl_command_node *cmd) {

// allocate kernel arguments buffer
vx_buffer_h staging_buf;
err = vx_alloc_shared_mem(d->vx_device, abuf_size, &staging_buf);
err = vx_buf_alloc(d->vx_device, abuf_size, &staging_buf);
assert(0 == err);

// update kernel arguments buffer
Expand Down Expand Up @@ -664,7 +668,7 @@ void pocl_vortex_run(void *data, _cl_command_node *cmd) {
assert(0 == err);

// release staging buffer
err = vx_buf_release(staging_buf);
err = vx_buf_free(staging_buf);
assert(0 == err);

// upload kernel to device
Expand Down

0 comments on commit 778ef49

Please sign in to comment.