问题标签 [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 投票
1 回答
82 浏览

c++ - tbb::concurrent_bounded_queue 中使用的内部容器是什么?

我知道 std::queue 默认使用 std::deque 作为其内部容器。我找不到 TBB 的相同信息。

我有一个遗留的多线程应用程序,它当前使用围绕 std::queue<void*, std::list<void*>> 的线程安全包装器来存储相对较大的对象(58 个字节)。我目前正在寻找更好的替代方案来提高性能。

一种选择是摆脱链表并使用默认的 std::deque 作为内部容器,并从指针到对象切换到按值存储对象。分块分配的 std::deque 将在内存方面更好地扩展,因为没有。的元素增加。从缓存的角度来看,也有一些连续的元素会有所帮助。

另一种选择是使用 TBB 的 concurrent_bounded_queue。但是我没有足够的信息来知道将我的对象存储为值是否是一个可行的选择。

也欢迎任何替代建议。

0 投票
1 回答
99 浏览

c++ - C++ 编译和链接问题

我正在尝试编译一个包含 C 和 C++ 文件的项目。我在 Ubuntu 上使用 icc 编译器(英特尔 OneAPI 工具包)。我还使用 Makefiles 来编译和链接程序/库。但是,我收到以下三个错误。

我的制作文件:

我没有使用 CMake,所以 -D_GLIBCXX_USE_CXX11_ABI=0 对我不起作用。任何提示或解决方案将不胜感激。

更新:上面的makefile是一个make文件,它调用其他makefile(比如下面的)并编译它们。

0 投票
1 回答
70 浏览

c++ - Sycl 部分+ DPCPP 中的互相关和错误

我尝试编写互相关函数。在我的程序中,我编写了一个 Map 框架,它包装 OneAPI 调用,通过一些指定目标类型(CPU 或 GPU/加速器)的参数隐藏硬件定位问题。问题是,在 Sycl 部分,程序出现了一些错误,我无法解决它们。我的代码:

错误是:

'sycl::buffer 的初始化没有匹配的构造函数

==================================================== ====

===============================================

==================================================== =

0 投票
1 回答
125 浏览

c++ - 错误没有匹配函数调用'slice_matrix'的互相关函数+ Sycl

我尝试在 Sycl 和 OneAPI 中编写 2D 互相关。这个想法是编写一种 Map 骨架,它包装 OneAPI 调用,通过一些指定目标类型(CPU 或 GPU/加速器)的参数隐藏硬件目标问题。

这是我的地图类:

这是我的 slice_matrix:

问题是,在 Sycl 部分里面的 parallel-for

该程序向我显示了一个错误,即:

我试图将我的 slice_matrix 放在 Map 类中,但没有任何改变。我还考虑了 Sycl 关于“本规范定义的 SYCL 设备代码不支持虚函数调用”的限制,所以我定义了 slice_matrix 的本地副本,但我又遇到了错误。

我无法理解如何解决此错误。

0 投票
1 回答
81 浏览

c++ - DPCPP:像 SYCL+ OneAPI 中的 2D 矢量一样处理 1D 矢量

我尝试在 GPU 上执行我的 slice_matrix 函数。实际功能是:

我的代码的 SYCL 部分是:

我知道 vector<vector> 不会创建连续的内存块。所以我使用了向量,并尝试将其解释为二维数据块。我定义的:

但我不知道该怎么办?!我应该像 2D 一样传递我的访问器,还是应该更改 slice_matrix 并表现得像 2D 矩阵。我应该指出 slice_matrix 函数可能被其他函数调用,在这种情况下它在 CPU 上执行。我的意思是这个函数不仅用于在 GPU 上执行,它还用于在 CPU 上执行,即:

0 投票
2 回答
119 浏览

visual-studio-2017 - 子程序可以包含在 Fortran 的子程序(而不是程序)中吗?

我必须处理一个用 Fortran 编写的旧软件(主要是在 70 年代编写的,并且在 3 年前维护得很差)。

我正在尝试使用 VS2017 和英特尔 oneAPI 编译器(Fortran Compiler Classic 2021.3.0)为 64 位架构编译它。

在更新其中一个模块的过程中,我说服自己编译器不支持我所学到的被称为子例程之间的“主机关联”(通过 CONTAINS 语句)。包含子例程中定义的符号似乎在包含的子例程中都不可见(如果我在包含的子例程中使用 IMPLICIT NONE ,编译器会告诉我我需要声明所有这些符号,而如果我不这样做,编译器会得到声明非常错误并且与包含子程序中的声明不匹配。打印了许多误导性错误消息)。

你们中的某个人能否确认是这种情况或提供编译器选项以启用过去某些编译器明确允许的此功能?如果需要,我会发布源代码(我不会立即发布它,因为我认为这对于 Fortran 专家来说可能是一个非常幼稚的问题,而我完全是个新手)。

真挚地,

在这里,我按照评论中的要求补充原始帖子

原始代码:

我在编译原始代码时收到的错误:

0 投票
1 回答
319 浏览

linux - VScode 无法正确连接到 WSL

我正在尝试使用 vscode 连接到 wsl 以使用 cmake 编译我的 Fortran 代码。当我尝试配置我的项目时,cmake 报告错误说 ifort 无法编译简单的测试程序。完整的 cmake 输出在这里:

我的编译器是ifort版本2021.3.0.20210609,cmake是3.21.1,wsl1是Ubuntu20.04。

这个问题看起来与之前的一些问题完全一样,比如CMake 配置失败。“cl.exe is not able to compile a simple test program”</a> 和CMake: The C Compiler is not able to compile a simple test program,但我发现了一些奇怪的东西:

我尝试不使用vscode的cmake插件,而是直接在vscode内置终端和wsl终端中使用cmake和make命令,一切正常。并且该错误仅在我通过 windows 启动 vscode 时发生,在 wsl 中启动 vscode 时一切正常

还有另外两条线索让我非常担心。一、oneAPI需要用户添加

在 .bashrc 中初始化 oneAPI 环境。所以每次打开wsl终端,都会先显示:

在用户@主机之前。在 vscode 和 wsl 正常工作的计算机上,当我打开 vscode 并启动一个新终端时,它显示

这似乎意味着当打开 vscode 并连接到 wsl 但没有显式启动 vscode 终端时,.bashrc 已经被正确读取。但是,在出现问题的电脑上,启动新的vscode终端显示“initializing oneAPI environment...”,如前所述,似乎即使连接到wsl,.bashrc也不会自动加载。

第二条线索是错误消息中的一行,上面写着

根据我查到的:icc编译代码无法加载共享对象(libimf.so),说明环境变量中没有添加一些关键路径,一般是因为“source /opt/intel/oneapi/setvars .bashrc中没有添加“.sh”行来启动oneapi环境,我显然已经添加了。

总之,这一切都让我怀疑vscode和wsl的连接没有正确设置,但不知道这个猜想是否正确以及如何解决。我从这里尝试了一个解决方案,但没有奏效。我也很困惑,相同的配置过程不会在其他计算机上造成任何问题。

对于我的描述如此长,我深表歉意,任何帮助将不胜感激。

0 投票
2 回答
262 浏览

python - Tensorflow 对象检测 API - 当我尝试运行 model_builder_test.py 时出现 ImportError

我正在使用张量对象检测 API 创建自定义对象检测模型。我安装了本笔记本中提到的所有内容,遵循本笔记本中提到的相同步骤,但是当我尝试运行 model_builder_test.py 文件时

我收到以下错误:

我在 Intel OneAPI Devcloud 上使用 python 3.7.10 和 tensorflow 2.6.0。请帮我解决这个错误。

0 投票
1 回答
117 浏览

c++ - SYCL/DPC++ cpu 版本给出了正确的结果,但 gpu 给出了不正确的数据

我使用 intel dpc++ 编译器编译并运行了以下代码。使用 cpu 选择器时我得到了正确的结果,但 gpu 选择器给出了垃圾值。

我的代码所做的只是将一个名为 data 的数组初始化为全 1。在 sycl 内核中,对该数组的访问器乘以 3 并保存到结果数组中。我尝试在结果数组中打印值,该数组预计将全部为 3,但我得到了垃圾值。

因为我在 gpu 上执行代码时得到垃圾值。我尝试在 cpu selector 上运行,这里的代码没有问题。

我在linux和windows上试过这个。编译器版本 dpcpp 2021.3

有人可以帮助为什么代码会在 GPU 上给出错误的结果吗?

0 投票
1 回答
72 浏览

c++ - dpc++ 错误 提交的命令组没有内核或显式内存操作。-59(CL_INVALID_OPERATION)

我正在尝试 sycl/dpc++。我写了下面的代码。我正在设备端创建一个数组 deviceArr,使用 memcpy 将 hostArr 的值复制到该数组,然后使用 parallel_for 内核将 devicearray 的值增加 1,并使用 memcpy 将值复制回来。

这段代码编译得很好,但是在运行时我在运行时收到以下错误。

但是我可以看到我提交的所有队列都有内核(parallel_for)或内存操作(memcpy)。谁能解释为什么会发生此错误?