- Introduction
- Releases
- Build from source code
- Run SYCLomatic
- Known Issues and Limitations
- Useful Links
- License
- Contributing
SYCLomatic is a project to assist developers in migrating their existing code written in different programming languages to the SYCL* C++ heterogeneous programming model. Final code editing and verification is a manual process done by the developer.
Use c2s command to make it as easy as possible to migrate existing CUDA codebases to SYCL, which is an industry standard. Once code is migrated to SYCL, it can be compiled and executed by any compiler that implements the SYCL specification as shown here: https://www.khronos.org/sycl/
The SYCLomatic development branch is the SYCLomatic branch.
Daily builds of the SYCLomatic branch on Linux and Windows* are available at releases. A few times a year, we publish Release Notes to highlight all important changes made in the project: features implemented and issues addressed. The corresponding builds can be found using search in daily releases. None of the branches in the project are stable or rigorously tested for production quality control, so the quality of these releases is expected to be similar to the daily releases.
git
- Downloadcmake
version 3.14 or later - Downloadpython 3
- Downloadninja
- Download- C++ compiler
Throughout this document SYCLOMATIC_HOME
denotes the path to the local directory
created as SYCLomatic workspace. It might be useful to
create an environment variable with the same name.
Linux:
export SYCLOMATIC_HOME=~/workspace
export PATH_TO_C2S_INSTALL_FOLDER=~/workspace/c2s_install
mkdir $SYCLOMATIC_HOME
cd $SYCLOMATIC_HOME
git clone https://github.com/oneapi-src/SYCLomatic.git
Windows (64-bit):
Open a developer command prompt using one of two methods:
- Click start menu and search for "x64 Native Tools Command Prompt for VS XXXX", where XXXX is a version of installed Visual Studio.
- Ctrl-R, write "cmd", click enter, then run
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
set SYCLOMATIC_HOME=%USERPROFILE%\workspace
set PATH_TO_C2S_INSTALL_FOLDER=%USERPROFILE%\workspace\c2s_install
mkdir %SYCLOMATIC_HOME%
cd %SYCLOMATIC_HOME%
git clone https://github.com/oneapi-src/SYCLomatic.git
Linux:
cd $SYCLOMATIC_HOME
mkdir build
cd build
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$PATH_TO_C2S_INSTALL_FOLDER -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="X86;NVPTX" ../SYCLomatic/llvm
ninja install-c2s
Windows (64-bit):
cd %SYCLOMATIC_HOME%
mkdir build
cd build
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=%PATH_TO_C2S_INSTALL_FOLDER% -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="X86;NVPTX" ..\SYCLomatic\llvm
ninja install-c2s
Linux:
export PATH=$PATH_TO_C2S_INSTALL_FOLDER/bin:$PATH
export CPATH=$PATH_TO_C2S_INSTALL_FOLDER/include:$CPATH
Windows (64-bit):
SET PATH=%PATH_TO_C2S_INSTALL_FOLDER%\bin;%PATH%
SET INCLUDE=%PATH_TO_C2S_INSTALL_FOLDER%\include;%INCLUDE%
SET CPATH=%PATH_TO_C2S_INSTALL_FOLDER%\include;%CPATH%
Note: Certain CUDA header files may need to be accessible to the tool. After build the SYCLomatic, you can run the list test by:
ninja check-clang-c2s
Follow instructions from the link below to build and run tests: README
Get c2s help information by running "c2s --help". dpct is an alias command for c2s.
- SYCL* 2020 support work is in progress.
- 32-bit host/target is not supported.
- More information about how to use SYCLomatic can be found in Intel(R) DPC++ Compatibility Tool documentation, which is the Intel product version of SYCLomatic:
- oneAPI DPC++ Compiler documentation
- Book: Mastering Programming of Heterogeneous Systems using C++ & SYCL
- Essentials of SYCL training
- oneAPI specification: https://spec.oneapi.io/versions/latest/index.html
- SYCL* 2020 specification: https://www.khronos.org/registry/SYCL/
- More information on oneAPI and DPC++ is available at https://www.oneapi.com/
See LICENSE for details.
See CONTRIBUTING.md for details.
Intel, the Intel logo, and other Intel marks are trademarks of Intel Corporation or its subsidiaries.
*Other names and brands may be claimed as the property of others. SYCL is a trademark of the Khronos Group Inc.