【发布时间】:2017-06-25 09:04:06
【问题描述】:
我正在使用 OpenCL,并且我使用的矩阵会增加其值,并且我需要尽可能短的应用时间。使用 OpenCL 提高性能的最佳方法是什么?我读过一些关于数据并行和任务并行的东西,但我对它们不是很了解。
我正在使用 64x56 矩阵。使用任务并行性,我创建了 64 个内核函数。每列一个内核,但我认为我可以做得更好。
【问题讨论】:
-
64x56 矩阵的工作量太少,即使它的矩阵乘法也是如此。只为 56 个元素生成新内核的开销太大了。但是如果它们在不同的队列上运行,也许完成仍然比单个队列更快。你用的是单队列吗?
-
我现在使用 2 个队列,每个队列有 32 个内核。但是使用 2 个队列而不是只使用一个队列的时间会差一些。这个想法是在 CPU 中创建一个矩阵,将其发送到 GPU,将矩阵的每个值增加 1 个单位并将新矩阵返回给 CPU。在这种情况下,我不知道如何减少内核函数。
标签: performance opencl