Performance OpenCL-性能
我正在使用OpenCL,我使用一个矩阵来增加它的值,我需要尽可能少的应用时间。使用OpenCL提高性能的最佳方法是什么?我读过一些关于数据并行和任务并行的书,但我对它们不是很了解Performance OpenCL-性能,performance,opencl,Performance,Opencl,我正在使用OpenCL,我使用一个矩阵来增加它的值,我需要尽可能少的应用时间。使用OpenCL提高性能的最佳方法是什么?我读过一些关于数据并行和任务并行的书,但我对它们不是很了解 我正在使用64x56矩阵。使用任务并行性,我创建了64个内核函数。每列一个内核,但我认为我可以做得更好。如果在GPU上执行内核,最好让一个线程处理一个项目。但是,这取决于您对矩阵元素的具体操作,例如,您对每个元素执行了多少操作。 如果只是将元素增加一些数字,则可能没有好处 一般来说,有3种选择: 一个线程处理整个矩阵。
我正在使用64x56矩阵。使用任务并行性,我创建了64个内核函数。每列一个内核,但我认为我可以做得更好。如果在GPU上执行内核,最好让一个线程处理一个项目。但是,这取决于您对矩阵元素的具体操作,例如,您对每个元素执行了多少操作。 如果只是将元素增加一些数字,则可能没有好处 一般来说,有3种选择:
您是否尝试过只使用一个内核来处理一个元素,并在全局工作大小等于{64,56}的情况下为其调用ClenqueueEndRangeKernel?它是如何影响执行时间的?64x56矩阵即使是矩阵乘法也太少了。仅为56个元素生成新内核的开销太大了。但如果它们在不同的队列上运行,可能比单个队列完成的更快。你使用单队列吗?我现在使用两个队列,每个队列中有32个内核。但是使用两个队列而不是只使用一个队列的时间稍微差一点。其思想是在CPU中创建一个矩阵,将其发送到GPU,将矩阵的每个值增加1个单位,然后将新矩阵返回给CPU。在这种情况下,我不知道如何做更少的内核函数。