【发布时间】:2021-10-26 12:31:37
【问题描述】:
因此,基本上,我最近学习了 OpenCL,并利用这种新发现的强大功能,使物理模拟的速度提高了大约 10 倍。问题是,我只使用了 10% 的 GPU。我假设这是因为我将数据发送回 CPU/Ram,然后再将其发送回 GPU,以便显示。有人知道如何避免这种情况吗?我有点想为我的图形使用 OpenCL,但有些事情告诉我这是一个坏主意——对于上下文,我从未使用过 OpenGL。顺便说一句,这一切都在 C++ 中。这是我的代码的伪代码示例:
void start()
{
CreateKernel();
SendDataToKernel();
}
void update()
{
RunKernel();
float x,y = ReadDataFromKernel();
Draw(std::round(x), std::round(y));
}
【问题讨论】:
-
当您在 Google 上搜索“opencl opengl interop”时,您是否找到对您有帮助的内容?
-
如果您不使用opengl,您是在软件中绘图吗?这可能是导致您的 GPU 等待工作的瓶颈
-
除了你的伪代码之外,可能还有很多不同的原因,包括 CPU 端的工作量太大、GPU 上的计算与全局内存访问比率低等。使用分析器获取更多信息或建立minimal reproducible example,以便人们可以调查并帮助您了解真正的问题。