gpt4 book ai didi

OpenCL:仅运行基于 CPU 的内核的单个实例

转载 作者:行者123 更新时间:2023-12-02 07:47:25 24 4
gpt4 key购买 nike

我有两个 OpenCL 内核:第一个是并行任务,第二个是线性 (LZW)。
第一个并行运行在 GPU 上,第二个线性运行在 CPU 上。我有一个多核 CPU,我真的只想在单核上运行内核的一个实例,而不是在 2+ 核上运行 2+ 个实例。这不是生产所必需的,而是我对各种类型任务性能的学术研究所必需的。

我现在使用的相当愚蠢的方法是:

if (global_id == 0) then execute(); 
else do_nothing();

还有比这更好的方法吗?

谢谢你。

最佳答案

您可以使用 clEnqueueTask 运行内核。这应该启动单个工作项。您可以使用它为单线程运行内核。

另一个场景:
OpenCL 是为并行计算而开发的,如果您使用 clEnqueueNDRangeKernel 运行内核,则将工作组大小设置为 1 是实现预期效果的唯一可能方法。另一方面,编译器可能想要优化某些东西并并行运行某些东西。使用选项“-cl-opt-disable”可以禁用 clBuildProgram 优化,只要 OpenCL 编译器支持此选项。如果您需要运行 clEnqueueNDRangeKernel,则可以这样做。但我认为这没有必要。

关于OpenCL:仅运行基于 CPU 的内核的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892656/

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