首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL -性能

OpenCL -性能
EN

Stack Overflow用户
提问于 2017-06-20 11:29:45
回答 1查看 148关注 0票数 1

我正在使用OpenCL,我使用一个矩阵来增加它的值,我需要尽可能低的应用时间。使用OpenCL提高性能的最佳方法是什么?我读过一些关于数据并行性和任务并行性的文章,但我并不十分了解它们。

我在用64x56矩阵。使用任务并行性,我创建了64个内核函数。每个专栏都有一个内核,但我认为我可以做得更好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-25 01:04:06

如果要在GPU上执行内核,最好让一个线程处理一个项。然而,这取决于您对矩阵元素所做的具体操作,例如,您对每个元素执行了多少次操作。如果你只是增加一些元素的一些数字,这可能是没有好处的。

一般而言,有三种选择:

  1. 一个线程与整个矩阵一起工作。这样就没有并行性,对GPU也不好。
  2. 一个线程与一行/列一起工作。使用-> 64/56线程,全局工作大小等于64或56。
  3. 一个线程与单个元素一起工作。使用-> 3584线程,全局工作大小为{64,56}。

您是否尝试过只使用一个内核来处理一个元素,并在全局工作大小等于{64,56}的情况下调用clEnqueueNDRangeKernel?它如何影响执行时间?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44651848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档