Skip to content

A SYCL Implementation for CPU and SX-Aurora TSUBASA

License

Notifications You must be signed in to change notification settings

veos-sxarr-NEC/neoSYCL

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

neoSYCL

build

A SYCL Implementation for CPU and NEC SX-Aurora TSUBASA (SX-AT)

Requirements

  • CMake 3.10 or higher
  • A C++ compiler supporting C++17
  • Clang and LLVM 12 or higher (including development headers and shared libraries, required if using the CPU or VE device)
  • Python 3 (required if using the CPU or VE device)
  • NEC Software Development Kit for Vector Engine (required if using the VE device)

We regularly test on Rocky Linux 8 and Ubuntu 20.04 on our GitHub Actions pipeline. Use the following commands to install all required dependencies (except the VE SDK) on these distributions:

  • Rocky Linux 8: dnf install -y git gcc gcc-c++ cmake make clang-devel llvm-devel python3
  • Ubuntu 20.04: apt install -y git gcc g++ cmake make pkg-config clang-12 libclang-12-dev llvm-12-dev python3

Configuration and Installation

mkdir build && cd build
cmake ..
make
sudo make install

neoSYCL supports three types of devices:

  • Host: Kernels are executed on the host. This device is always available.
  • CPU: Kernels are compiled to a shared library and executed on the host CPU. To use this device, add the -DBUILD_KERNEL_OUTLINER=ON option when invoking CMake.
  • VE: Kernels are compiled to a shared library and executed on the Vector Engine using Vector Engine Offloading. To use this device, add the -DBUILD_KERNEL_OUTLINER=ON and -DBUILD_VE=ON options when invoking CMake.

If Clang, LLVM or VEOS are installed to non-standard locations, their paths should be given via the options -DCLang_DIR=, -DLLVM_DIR= and -DVEO_DIR= options, respectively.

Usage

When using the CPU or VE device, the SYCL source file needs to be compiled using the nsc++ compiler wrapper. The target device can be specified using the --device option. Accepted values are cpu or ve.

Citing

If you use neoSYCL in your work, please cite the following paper:

Yinan Ke, Mulya Agung, Hiroyuki Takizawa, "neoSYCL: a SYCL implementation for SX-Aurora TSUBASA," The International Conference on High Performance Computing in Asia-Pacific Region (HPC Asia 2021), pp. 50-57, Jan. 2021.

About

A SYCL Implementation for CPU and SX-Aurora TSUBASA

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 96.1%
  • Python 2.6%
  • Other 1.3%