我正在尝试查看 Opencl 编程模型在 GPU 上的性能,现在在测试编程模型时,我必须使用
clEnqueueNDkernel()
启动内核,我尝试多次调用此函数,以便我可以看到启动两个或四个并发内核时它的执行情况。
我观察到该程序花费的时间与启动一个内核相同,现在我假设它只运行内核一次,因为不可能花费相同的时间来运行两个或四个并发内核。
现在我想知道如何在一个 GPU 上启动多个内核。
例如:我想推出类似的东西:
clEnqueueNDkernel()
clEnqueueNDkernel()
我该怎么做?
首先,检查您的设备是否支持并发内核执行。最新的 AMD 和 Nvidia 卡可以。
然后,创建多个命令队列。如果将内核放入同一个队列中,它们将一个接一个地连续执行。
最后,检查内核是否确实是并行执行的。使用 SDK 或 OpenCL 事件中的分析器来收集分析信息。