问题标签 [intel-oneapi]

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 投票
2 回答
227 浏览

ccl - CCL 代码示例中的缓冲区以及 oneapi 工具包

我正在浏览 CCL 代码示例以及 oneapi 工具包。在下面的 DPC++(SYCL) 代码中,最初 sendbuf 在 cpu 端创建了一个缓冲区,但未初始化,在卸载到目标设备的部分中,dev_acc_sbuf[id] 变量是内核范围内的一个变量被修改. 因此,该变量(dev_acc_sbuf)没有在程序中使用,也没有将其值复制回 sendbuf。然后在下一行中,sendbuf 变量用于 allreduce。我无法理解更改 dev_acc_sbuf 如何更改 sendbuf。

0 投票
2 回答
962 浏览

sycl - 如何在 SYCL parallel_for(内核)中打印?

我正在研究与 oneAPI basekit 一起提供的 vectorAdd 示例应用程序。当我尝试在内核中打印总和时,出现以下错误。

编译时请查找随附的源代码和错误。

在编译期间,我收到以下错误。

0 投票
1 回答
137 浏览

parallel-processing - 运行 SYCL 代码时结果不正确。在尝试使循环并行化时

我是这个并行编程领域的新手。我正在尝试在 SYCL 中并行化以下串行代码。但是当我尝试运行代码时,我得到了不正确的结果。

请在下面找到序列号、SYCL 代码和输出屏幕截图。请帮我解决一下这个。

提前致谢。

并行代码的输出

0 投票
1 回答
288 浏览

c++ - 为自定义对象 oneAPI 创建数据缓冲区时遇到问题

我是 oneAPI 和类似框架的新手,所以我在使用 SYCL 数据缓冲区进行数据管理时遇到了麻烦。

我的任务是使用 Aho-Corasick 算法在给定字符串中查找子字符串。

我的想法是构建一个 trie,然后提交一个内核,该内核将在 trie 中并行查找子字符串。因此,为此我创建了一个 SYCL 队列,为字符串(用于在其中查找子字符串)、向量(用于存储搜索结果)和我的 Aho-Corasick 对象创建了缓冲区,该对象包含先前构建的树的根. 但是,关于最后一个我不确定,因为我正在为主机内存中的一个对象创建一个缓冲区,该缓冲区包含指向其他对象的指针(例如节点,它包含指向其他节点的指针)。

Node对象的结构:

这是搜索方法:

缓冲器:

并排队求和:

我发现程序在尝试访问子地图的项目后失败了。因此,我认为问题在于存储在 map 中的指针是指向主机内存的指针,设备无权访问。

0 投票
1 回答
444 浏览

sycl - sycl/dpc++ 访问器与内核函数对象中的 global_ptr

以下玩具代码使用 Intel OneAPI beta6。

问题:为什么 Increment_pointer 版本“错误”?没有编译/运行时错误。你只是没有在最后得到递增的 hbuffer。(我玩过一些类似的版本,其中 operator() 中的 ptr 最终为 0x0)。

我仍在学习用“SYCL”进行思考,因此欢迎详细解释。

0 投票
1 回答
161 浏览

sycl - 将访问器转换为内核代码中的 C++ 指针(尤其是(int (*)[Nelem])

环境:Ubuntu 18.04,OneAPI beta 6

完整的代码如下,但这是令人讨厌的错误:

有点解释,以防你想知道为什么......

在开发数据并行代码时,我经常开发英特尔曾经称之为“基本函数”的东西。这些被编写用于对应用程序的单个元素(SYCL 将其称为工作项)进行操作。我一直发现使用基本的软件开发环境更容易做到这一点,易于测试,并且更普遍地可重用(标量、SIMD、CUDA 等)。

在对单个元素进行测试之后,通过扩展调用代码而无需重写/重新测试函数,移动到数据并行非常容易:

变成

在 SYCL 内核中, fn1(x[item.get_linear_id()], NELEM); 将是我所需要的,而不必重写函数来理解 id 和/或访问器。

上述代码的 SYCL 问题是,在内核 C++ 中,我似乎无法将访问器指针重铸为 2D 指针。这在应用程序 C++ 中是允许的(参见上面的代码)。

也许这是一种纠正代码的坏方法,但它使开发/测试适用于标量和数据并行代码的代码变得容易,并使库在某种程度上具有可移植性。它还提供了一种绕过缓冲区/访问器的 SYCL 3 维限制的方法。

无论如何,我很好奇真正的 SYCL 程序员会怎么想。

玩具示例的完整代码:

编辑1:

根据 illuhad 的评论,我试图充实一些替代方案。

首先,这两行评论似乎应该按照他的建议做:

但实际上它会产生这个错误:

在 get_pointer 的末尾添加一个“get()”会产生相同的结果。

奇怪的是,解决错误的“初始化”部分:

产生有趣的错误:

所以如果/当有人有时间时,我仍然很好奇......

0 投票
1 回答
161 浏览

c++ - 如何在 DPC++ 编译器选项中指定 C++ 标准版本?

我偶然发现了英特尔 oneAPI 工具包形式的免费东西,一切都很好,示例编译得很好,但我不知道如何在编译器选项中指定 C++ 标准。据我了解,DPC++ 是建立在 Clang 之上的,所以我应该能够选择它编译的 C++ 版本,但我不知道如何。

如何让我的 C++17 代码工作?

0 投票
0 回答
112 浏览

sycl - SYCL 规范 1.2.1(第 7 版)第 4.8.9.3 节错误?

根据 SYCL 1.2.1 规范(修订版 7)第 4.8.9.3 节中的代码,我编写了以下代码:

使用 OneAPI beta07 编译时会出现许多错误。

规范中的示例似乎存在许多问题。一,OneAPI 和规范本身似乎都没有“build_from_name”方法。二,示例同时使用“MyProgram”和“myProgram”(次要但让我相信这不是来自经过验证的代码)。最后,我无法识别具有与示例匹配的签名的 parallel_for。

只是好奇怎么回事。

0 投票
1 回答
56 浏览

intel - Intel Advisor beta 卸载分析:没有执行计数

我正在尝试使用 Intel oneAPI advisor beta 进行 GPU 卸载分析(通过analyze.pycollect.py)。我有所有非卸载区域都显示的问题Cannot be modelled: No Execution Count

此外,我收到警告

我已经尝试过此处此处描述的故障排除。此外,我尝试使用运行时间更大的程序。

我用编译器标志编译(根据this)(注意调试信息已打开):

我正在将Intel(R) Advisor 2021.1 beta07 (build 606302)Intel(R) C Intel(R) 64 Compiler 用于在 Intel(R) 64, Version 2021.1 Beta Build 202006 上运行的应用程序。该程序使用 OpenMP。

我能做些什么来解决这个问题?

0 投票
1 回答
227 浏览

c++ - 编译时未启用 intel-oneApi CUDA 支持

我是新手intel-oneapi,我按照英特尔的说明在 Ubuntu 20.04 上安装了 oneApi。

我成功编译了vector-add示例。不幸的是,在运行时我得到以下异常:

我需要特殊标志才能在 nvidia GPU 上运行它吗?当我切换sycl::default_selectorsycl::cpu_selectorthen 代码将毫无例外地执行。