使用 SYCL 在任何 OpenCL 设备上运行代码不需要自定义编译器,因为一切都在库中完成(充满了模板魔法),标准 GCC/Clang 就可以了。这个对吗?(特别是在我正在使用的 triSYCL 的情况下......)
如果是这样...我知道可以通过在自定义“句柄”或“包装器”类上重载一堆运算符来提取简单的表达式树,但控制流并非如此。我错了吗?
本文的第 3.1 节讨论了向 C++ 添加 EDSL 的几种不同方法的优缺点,但我对 SYCL 使用的方法的实际技术实现更感兴趣。
我试图查看一些与 SYCL 相关的项目(Eigen、TensorFlow、triSYCL、ComputeCpp 等)的源代码,但到目前为止我无法在其中找到答案。
那么:SYCL 库(?)如何在不需要自定义/扩展编译器的情况下发现内核的完整控制流图,以普通 C++ lambda 形式给出?