问题标签 [sycl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
621 浏览

opencl - Single source C++ programming model?

What is mean by single source c++ programming model.I have recently came to know about SYCL which people describes it as a Single source C++ programming model related to OPENCL. I would highly appreciate the answers which describes what SYCL is ? and how it works ? Thank you guys!

0 投票
1 回答
856 浏览

c++ - 对浮点数求和的最佳 OpenCL 2 内核是什么?

C++ 17 引入了许多新算法来支持并行执行,特别是std::reducestd::accumulate的并行版本,它允许操作non-deterministic行为non-commutative,例如浮点加法。我想使用 OpenCL 2 实现减少算法。

英特尔在这里有一个示例,它使用 OpenCL 2work group内核函数来实现std::exclusive_scan OpenCL 2 内核。以下是基于英特尔exclusive_scan示例的内核对浮点数求和:

上面的内核工作(或似乎!)。但是,exclusive_scan需要work_group_broadcast函数将 one 的最后一个值传递work group给下一个,而这个内核只需要将 work_group_reduce_add 的结果添加到sum_val,因此atomic add更合适。

OpenCL 2 提供了一个atomic_int支持atomic_fetch_add. 上面使用 atomic_int 的内核的整数版本是:

OpenCL 2 也提供了一个,atomic_float但它支持atomic_fetch_add.

实现 OpenCL2 内核对浮点数求和的最佳方法是什么?

0 投票
2 回答
510 浏览

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

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

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

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

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

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

0 投票
2 回答
1130 浏览

c++ - 如何创建一个 cl::sycl::buffers 数组?

我正在使用 Xilinx 的 triSYCL github 实现,https://github.com/triSYCL/triSYCL

我正在尝试创建一个具有 100 个生产者/消费者的设计,以从 100 个管道读取/写入。我不确定的是,如何创建一个数组cl::sycl::buffer并使用std::iota.

这是我的代码:

我收到以下错误: error: no matching function for call to ‘cl::sycl::buffer<float, 2>::buffer(<brace-enclosed initializer list>)’ cl::sycl::buffer<float, n_threads> a { T };

我是 C++ 编程的新手。所以我无法弄清楚执行此操作的确切方法。

0 投票
1 回答
233 浏览

c++ - 有没有办法可以创建一个 cl::sycl::pipe 数组?

我正在使用 Xilinx 的 triSYCL github 实现,https://github.com/triSYCL/triSYCL

我正在尝试创建一个带有 100 个的cl::sycl::pipes设计capacity= 6。我将通过 SYCL 代码中的单独线程访问每个管道。

这是我尝试过的:

该代码只是tests/pipe/pipe_producer_consumer.cppgithub 存储库中文件的副本。我刚刚for loop在它上面添加了一个并行实例化多个线程。

我在这方面遇到了多个错误:error: no matching function for call to ‘cl::sycl::pipe<cl::sycl::pipe<float> >::pipe(<brace-enclosed initializer list>)’ cl::sycl::pipe<cl::sycl::pipe<float>> p { n_threads, cl::sycl::pipe<float> { T } };

0 投票
0 回答
1028 浏览

opencl - /usr/local/cuda-8.0/lib64/libOpenCL.so.1:没有可用的版本信息

当我跑步时computecpp_info

并且在运行时clinfo

在这里,我试图找到这个问题的原因/usr/local/cuda-8.0/lib64/libOpenCL.so.1: no version information available并试图解决这个问题,但我没有得到任何富有成效的帮助。请通过解释或参考某些内容来帮助您弄清楚。

0 投票
3 回答
1038 浏览

c++ - 在抛出 'cl::sycl::detail::exception_implementation<(cl::sycl::detail::exception_types)9>' 的实例后调用终止

我是 SYCL/OpenCL/GPGPU 的新手。我正在尝试构建和运行常量添加程序的示例代码,

我正在使用构建此代码

$ g++ constantAdder_backup.cpp -g -std=c++11 -o constantAdder -I /usr/local/computecpp/include -I/usr/include/ -L /usr/local/computecpp/lib -lComputeCpp -L /usr /lib/x86_64-linux-gnu -lOpenCL

并得到错误

什么是

在抛出 'cl::sycl::detail::exception_implementation<(cl::sycl::detail::exception_types)9, cl::sycl::detail::exception_implementation<(cl::sycl: :detail::exception_types)6, cl::sycl::exception> >' Aborted (core dumped) 错误是什么意思?我怎样才能解决这个问题?请帮我。

PS 系统硬件是

PS 我已经更新了代码以了解我正在运行代码的设备。

修改片段是

现在我正在cpu::selector使用(不是 nvidia 硬件)并打印设备。它清楚地表明它正在运行Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz。的输出

couputecpp_info

节目

但是,它仍然显示与相同的错误

在抛出 'cl::sycl::detail::exception_implementation<(cl::sycl::detail::exception_types)9, cl::sycl::detail::exception_implementation<(cl::sycl: :detail::exception_types)6, cl::sycl::exception> >' 中止(核心转储)

0 投票
1 回答
698 浏览

c++ - 捕获到 SYCL 异常:错误:[ComputeCpp:RT0101] 无法创建内核((内核名称:SYCL_class_multiply))

我克隆了https://github.com/codeplaysoftware/computecpp-sdk.git并修改了 computecpp-sdk/samples/accessors/accessors.cpp文件。

我刚加了std::cout << "SYCL exception caught: " << e.get_cl_code() << '\n';

查看完全修改的代码

构建后,我执行了二进制文件并得到以下错误输出:

硬件配置如下:

请帮助理解错误并解决相同的问题。让我知道是否需要更多信息。我想在我的 NVidia GPU 上运行这个示例代码。

0 投票
1 回答
1009 浏览

opencl - SYCL 设备选择器中的 host_selector 是什么?

我是 SYCL、OpenCL 和 GPU 编程的新手。我在 SYCL 中阅读了有关设备选择器的信息,发现了以下四个:

  1. default_selector :系统启发式选择的设备。如果未找到 OpenCL 设备,则默认为 SYCL 主机设备。
  2. gpu_selector :根据设备类型 info::device::device_type::gpu 从所有可用的 OpenCL 设备中选择设备。如果未找到 OpenCL GPU 设备,则选择器失败。
  3. cpu_selector :根据设备类型 info::device::device_type::cpu 从所有可用设备和启发式中选择设备。如果没有找到 OpenCL CPU 设备,则选择器失败。
  4. host_selector :选择不需要 OpenCL 运行时的 SYCL 主机 CPU 设备。

我跑去computecpp_info找设备是:

因此,GeForce GTX 750 Ti设备Intel(R) HD Graphics是 GPU 设备,Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz也是 CPU 设备。这里是怎么host devices回事?

如果我选择host_selector,我SYCL code会在哪里运行?

0 投票
1 回答
1415 浏览

tensorflow - Ubuntu 16.04 上带有 Tensorflow 和 OpenCL 的多个 AMD GPU

经过一番挣扎:

  1. 在带有amdgpu 17.50的全新Ubuntu 16.04上使用 OpenCL 成功构建了 Tensorflow 。

  2. 安装了 5 个相同的 GPU (rx580),所有这些 GPU 都按预期由 clinfo 和 computecpp_info 报告。

  3. 运行 MNIST convnet 示例,TF 可以工作,但只使用 GPU0 而没有看到其他 GPU

dmesg中没有报关于卡的错误,他们似乎都在最底层准备好了,不知道为什么SYCL似乎忽略了一些卡

这是computecpp_info输出:

这是来自tensorflow的列表:

编辑:重启后

我真的不知道这些警告是否相关,因为它们在第一次运行后就消失了。

编辑:dmesg 详细信息

编辑:它与任何特定的卡无关,只是总线顺序中的第一个可用。

我尝试断开一些卡的连接,在所有测试之后,似乎很清楚 SYCL 总是只列出第一个 GPU,不管是哪一个,总是最小的可用总线号。

这也证实了卡之间没有差异,并且所有卡都可以使用(至少单独使用),所以我认为操作系统很好,我猜问题出在 SYCL 中。

请帮忙!