在Nvivdia卡上,我曾经创建许多队列,然后将内核排入每个队列,这使得内核可以并行执行。它曾经确实加速了我的程序。但是现在我使用了Radeon卡,这个技巧不再起作用了。我可以在探查器中看到,在设备开始执行内核之前,它会等待先前的内核结束(即使内核已排队在不同的队列中)。所以问题是:如何使Radeon卡并行执行命令队列而不将设备细分为子设备。也许我应该使用一些自定义驱动程序?
听起来确实像是驱动程序问题,但也许您的卡一次只能处理一个队列。在这种情况下,您可以尝试将内核放入单个并发调度队列中。有关更多信息,请参阅CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE的文档。