gpt4 book ai didi

c++ - 如何从 SYCL 内核中提取控制流?

转载 作者:行者123 更新时间:2023-11-30 02:21:23 25 4
gpt4 key购买 nike

使用 SYCL 在任何 OpenCL 设备上运行代码不需要自定义编译器,因为一切都在库中完成(充满模板魔法),标准的 GCC/Clang 就可以了。它是否正确? (特别是在我使用的 triSYCL 的情况下......)

如果是这样...我知道可以通过在自定义“句柄”或“包装器”类上重载一堆运算符来提取简单的表达式树,但控制流不是这种情况。我错了吗?

this paper 的第 3.1 节讨论了将 EDSL 添加到 C++ 的几种不同方法的优缺点,但我更感兴趣的是 SYCL 使用的方法的实际技术实现。

我试图查看一些与 SYCL 相关的项目(Eigen、TensorFlow、triSYCL、ComputeCpp 等)的源代码,但到目前为止我无法在其中找到答案。

那么:SYCL 库(?)如何在不需要自定义/扩展编译器的情况下发现内核的完整控制流图(作为普通 C++ lambda 给出)?

最佳答案

我认为你是对的。

如果您为 CPU 编译 SYCL,因为 SYCL 是一个纯 C++ 可执行 DSEL,您可以拥有一个只使用普通 C++ 编译器的实现。例如,这就是 triSYCL 的工作方式。 https://github.com/triSYCL/triSYCL

我不知道有关 ComputeCpp 的详细信息。在 https://github.com/triSYCL/triSYCL/blob/master/doc/about-sycl.rst有一个关于一个非常有趣但很旧的演示文稿的链接:

Implementing the OpenCL SYCL Shared Source C++ Programming Model using Clang/LLVM, Gordon Brown. November 17, 2014, Workshop on the LLVM Compiler Infrastructure in HPC, SuperComputing 2014 http://www.codeplay.com/public/uploaded/publications/SC2014_LLVM_HPC.pdf

在 triSYCL 以设备为目标的情况下,还有一个设备编译器。我必须推一个设计文档的新版本......同时,你可以看看https://github.com/triSYCL/triSYCL/tree/device https://github.com/triSYCL/llvm https://github.com/triSYCL/clang

sycl-gtx 正在使用一些基于宏的 SYCL 语法扩展来拥有内核中控制流的元表示,如以下示例所示:https://github.com/ProGTX/sycl-gtx/blob/master/tests/regression/work_efficient_prefix_sum.cpp

关于c++ - 如何从 SYCL 内核中提取控制流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48399665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com