问题标签 [dpc++]
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.
profiling - sycl::info::event_profiling 中的 command_submit 提交整个代码还是仅提交并行?
我尝试分析我的功能在设备上的执行时间。我读了这个链接: https : //docs.oneapi.com/versions/latest/dpcpp/iface/event.html 但我没有在文档中找到任何关于 sycl::info::event_profiling 的信息,这让我理解它们完全对应的是什么。我的意思是,command_start、command_end、command_submit。例如:这是我的代码的一部分,内核,
我想了解 cl::sycl::info::event_profiling::command_submit,提交整个代码还是只提交并行?
sycl - sycl/dpc++ 使用全局指针访问全局变量
我正在尝试从 sycl 内核内部访问一个全局变量。使用此模式的代码及其输出如下。
它的输出如下。
即使 g_var 更改为 27,它也会在内核内部以 22 的初始值打印。这是预期的行为吗?
通常 lambdas 不会创建全局变量的副本。dpc++ 编译器是在设备内部创建全局变量的副本,还是在编译期间传播常量值以便在运行时不访问全局内存?
sycl - 读取缓冲区拥有的访问内存
根据 SYCL参考
缓冲区可以由主机数据指针初始化。虽然缓冲区存在,但它拥有主机数据,并且在此期间对主机数据指针的直接访问是未定义的。
这对于输出缓冲区是可以理解的。但是只读缓冲区呢?在以下代码片段中,在内核完成之前访问只读缓冲区是未定义的行为吗?
sycl - 使用 dpc++ 从 sycl 程序创建静态或共享库
我正在尝试从 sycl 程序创建一个静态或共享库,并从使用 gcc/g++/clang++ 的主应用程序构建中使用它。如果我使用 dpcpp 构建我的主应用程序,一切都很好,但我需要使用 g++。
例如,我的示例 sycl_lib.cpp 和主程序如下。
要创建一个静态库并使用它:
这工作正常。但我想使用 g++ 构建 main.cpp,它会导致运行时错误。
这给出了以下错误
使用 g++ 创建的可执行文件是否可以使用使用 dpc++ 创建的 sycl 库?
谢谢
c++ - 错误:内核参数具有非平凡复制的可构造类/结构类型+sycl+tbb
我尝试提供一种“映射”骨架,它通过一些指定目标类型(CPU 或 GPU/加速器)的参数来包装 OneAPI 调用隐藏硬件目标问题。我的地图骨架传递函数及其与牛顿方法的初始点的导数。但我有一个错误是:
我的代码是:
另外,如果我们不考虑错误,我认为我的代码中的某些内容似乎不正确,但我无法理解它是什么。
c++ - Sycl 部分+ DPCPP 中的互相关和错误
我尝试编写互相关函数。在我的程序中,我编写了一个 Map 框架,它包装 OneAPI 调用,通过一些指定目标类型(CPU 或 GPU/加速器)的参数隐藏硬件定位问题。问题是,在 Sycl 部分,程序出现了一些错误,我无法解决它们。我的代码:
错误是:
'sycl::buffer 的初始化没有匹配的构造函数
==================================================== ====
===============================================
==================================================== =
c++ - 错误没有匹配函数调用'slice_matrix'的互相关函数+ Sycl
我尝试在 Sycl 和 OneAPI 中编写 2D 互相关。这个想法是编写一种 Map 骨架,它包装 OneAPI 调用,通过一些指定目标类型(CPU 或 GPU/加速器)的参数隐藏硬件目标问题。
这是我的地图类:
这是我的 slice_matrix:
问题是,在 Sycl 部分里面的 parallel-for
该程序向我显示了一个错误,即:
我试图将我的 slice_matrix 放在 Map 类中,但没有任何改变。我还考虑了 Sycl 关于“本规范定义的 SYCL 设备代码不支持虚函数调用”的限制,所以我定义了 slice_matrix 的本地副本,但我又遇到了错误。
我无法理解如何解决此错误。
c++ - DPCPP:像 SYCL+ OneAPI 中的 2D 矢量一样处理 1D 矢量
我尝试在 GPU 上执行我的 slice_matrix 函数。实际功能是:
我的代码的 SYCL 部分是:
我知道 vector<vector> 不会创建连续的内存块。所以我使用了向量,并尝试将其解释为二维数据块。我定义的:
但我不知道该怎么办?!我应该像 2D 一样传递我的访问器,还是应该更改 slice_matrix 并表现得像 2D 矩阵。我应该指出 slice_matrix 函数可能被其他函数调用,在这种情况下它在 CPU 上执行。我的意思是这个函数不仅用于在 GPU 上执行,它还用于在 CPU 上执行,即:
c++ - 使用 DPC++ 图像数组时的维度和读取问题
这个问题真的让我很困惑。我想使用 DPC++ 读取一组图像,所以使用了 sycl::image,下面是我的代码。
内核代码如下,我使用带有 image_array 标签的访问器来读取数据:
除了读取问题,我发现范围是{128,4,4},为什么第三维是4?不是L(2)的值吗?
而且似乎第三维度只取决于第二维度,不管 L 是什么。有人可以回答我吗?