triSYCL is a research project to experiment with the specification of the SYCL standard and to give feedback to the Khronos Group SYCL_committee and also to the ISO C++ committee.
Because of lack of resources this SYCL implementation is very incomplete and should not be used by a normal end-user. Fortunately there are now several strong implementations of SYCL available, such as ComputeCpp, DPC++ or hipSYCL that can be used on various targets.
This implementation is mainly based on C++17 with increasing C++20 features backed with OpenMP or TBB for parallel execution on the CPU, with Boost.Compute for the non single-source OpenCL interoperability layer and with an experimental (but now obsolete 2017-2018) LLVM/Clang version for the device compiler providing full single-source SYCL experience, typically targeting a SPIR device. Since in SYCL there is a host fall-back, this CPU implementation can be seen as an implementation of this fall-back too.
Since around 2018 Intel put a lot of effort in their own DPC++ project to up-stream SYCL into LLVM/Clang, there is another project about merging the Intel SYCL implementation with triSYCL at https://github.com/triSYCL/sycl to give a greater user experience for Xilinx FPGA instead of using our experimental clunky device compiler. But this is still very experimental because the Xilinx tool-chain is based on old incompatible versions of LLVM/Clang.
Most of our efforts are focused on extensions, such as supporting Xilinx FPGA and Versal ACAP CGRA https://gitenterprise.xilinx.com/rkeryell/acappp, which is not open-source yet since it would expose too much architectural details for now.
triSYCL has been used to experiment and provide feedback for SYCL 1.2, 1.2.1, 2.2, 2020 and even the OpenCL C++ 1.0 kernel language from OpenCL 2.2.
This is provided as is, without any warranty, with the same license as LLVM/Clang.
Technical lead: Ronan at keryell point FR. Developments started first at AMD and are now mainly funded by Xilinx.
It is possible to have a paid internship around triSYCL, if you have some skills related to this project. Contact the technical lead about this. Xilinx is also hiring in this area... :-)
SYCL is a single-source modern C++-based DSEL (Domain Specific Embedded Language) aimed at facilitating the programming of heterogeneous accelerators by leveraging the OpenCL language and concepts.
A typical kernel with its launch looks like this pure modern C++ code:
queue {}.submit([&](handler &h) {
auto accA = bufA.get_access<access::mode::read>(h);
auto accB = bufB.get_access<access::mode::write>(h);
h.parallel_for<class myKernel>(myRange, [=](item i) {
accA[i] = accB[i] + 1;
});
});
Look for example at https://github.com/triSYCL/triSYCL/blob/master/tests/examples/demo_parallel_matrix_add.cpp for a complete example.
Note that even if the concepts behind SYCL are inspired by OpenCL concepts, the SYCL programming model is a very general asynchronous task graph model for heterogeneous computing with no relation with OpenCL itself, except when using the OpenCL API interoperability mode.
SYCL is developed inside the Khronos SYCL committee and thus, for more information on SYCL, look at http://www.khronos.org/sycl
For the SYCL ecosystem, look at http://sycl.tech
Please see about SYCL to have some context, a list of presentations, some related projects.
SYCL is a template library, so no real installation is required.
There are some examples you can build however.
See Testing.
Architecture of triSYCL runtime and compiler describes the code base with some high-level diagrams but also how to compile and use the device compiler on some Xilinx FPGA for example.
Some details about CMake configuration and organization can be found in CMake.
Yes, there are some macros used in triSYCL! Look at Pre-processor macros used in triSYCL to discover some of them.
See Environment variables with triSYCL.
See Possible futures.
The documentation of the triSYCL implementation itself can be found in http://trisycl.github.io/triSYCL/Doxygen/triSYCL/html and http://trisycl.github.io/triSYCL/Doxygen/triSYCL/triSYCL-implementation-refman.pdf
ctest
and works on Windows 10 with
Visual Studio 2017. It works also with Ubuntu WSL on Windows. :-)
More info
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。