请问 kernel local memory 如何实现 memset?

  • 2 replies
  • 177 views
请问 kernel local memory 如何实现 memset?
« 于: 十月 13, 2019, 05:50:51 pm »
想把分配的local memory全部设置为某个值,需要一个一个单元赋值吗?有没有类似memset的函数?

PS. GPU的local memory缺省全是0吗?还是随机数?

谢谢!

Re: 请问 kernel local memory 如何实现 memset?
« 回复 #1 于: 十月 14, 2019, 01:44:01 pm »
想把分配的local memory全部设置为某个值,需要一个一个单元赋值吗?有没有类似memset的函数?

PS. GPU的local memory缺省全是0吗?还是随机数?

谢谢!

(1)最快的方式是work-group集体清零。这也是推荐的方式。暂时没有专用于清零local memory的特定函数(as of OpenCL 1.2)。
(2)默认的值不是0的,如果你需要0值,你得显式的手工清零。
(3)OpenCL有async_work_group_copy函数,可以从global载入一堆0值给local memory, 但该函数除了编码时候方便一点点,并没有性能上的优势,不建议这样做。


Re: 请问 kernel local memory 如何实现 memset?
« 回复 #2 于: 十月 14, 2019, 03:10:34 pm »
(1)最快的方式是work-group集体清零。这也是推荐的方式。暂时没有专用于清零local memory的特定函数(as of OpenCL 1.2)。
(2)默认的值不是0的,如果你需要0值,你得显式的手工清零。
(3)OpenCL有async_work_group_copy函数,可以从global载入一堆0值给local memory, 但该函数除了编码时候方便一点点,并没有性能上的优势,不建议这样做。

谢谢指导!
不好意思,能再冒昧地问一下work-group集体清零是怎么操作的吗?
« 最后编辑时间: 十月 14, 2019, 03:12:13 pm 作者 santino »