【发布时间】:2016-04-23 01:40:27
【问题描述】:
这段代码here代表矩阵乘法,代码使用OpenCL编写。三个矩阵(2 in - 1out)的大小为 1024x1024。
谈到 OpenCL 实现,执行范围是二维的,所以我们有 1024x1024 个工作组,每个工作组由 16x16 个工作项组成。
问题是,为什么我们要设置每个工作组的大小,因为在内核中我们既不使用本地内存也不使用 get_local_id() 调用?将工作组维度设置为空不会更好,以便每个工作组都致力于填充输出矩阵的每个单元格?
对我来说,阅读内核代码(在我链接的页面底部),似乎每个工作组都准备好使用 16x16 工作项,但最后它们仍然未使用。我会将本地大小设置为 NULL。为什么他们使用 16x16,有什么改进?我很困惑。
【问题讨论】: