gpt4 book ai didi

c++ - CPU 设备上的 OpenCL - 幕后发生了什么?

转载 作者:太空狗 更新时间:2023-10-29 20:39:56 25 4
gpt4 key购买 nike

因此,如果我在 CPU 设备上运行 openCL 内核函数而不是 GPU 设备,内核是否会自动使用 CPU 上的所有内核?例如,我的系统说我的 CPU 上有 4 个内核,内核会自动使用所有 4 个内核吗?

如果上述为真,那么是否意味着在单 CPU 设备上运行 openCL 内核等同于使用标准 std::threads(假设我们使用的是 C++)来执行相同的任务?

我问是因为在我当前的计算机上,openCL 似乎只能访问一个 CPU 而不能访问 GPU。因此,如果我要使用 openCL 来并行化我的代码,那么如果它本质上与基于 std::thread 的实现做同样的事情,这似乎有点过分了。

最佳答案

在没有实际访问您实际使用的 OpenCL 实现的情况下,很难确切地说出它是如何实现的。我确信有不止一种方法可以解决这个问题(在某种程度上取决于操作系统和其他因素),但最有可能的情况是它以某种方式使用主机操作系统的线程系统。 OpenCL 实现通常不是用 C++ 编写的,因此它可能不是 std::threads,但几乎可以肯定是 std::threads 的基础系统。

当您只有一个 CPU 设备可用时,使用 OpenCL 的目的/好处是您可以透明地从这样的系统过渡到具有 GPU 设备的系统,而无需两组不同的代码。

调试在这种环境中行为不端的 OpenCL 内核也不太困难(我说不那么困难,不容易,是有原因的,在任何人提示之前)——当然假设两种环境中的行为是相同的,当然。

关于c++ - CPU 设备上的 OpenCL - 幕后发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26113758/

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