GPU世界论坛

GPU开发园地(Developers) => OpenCL => 主题发帖人为: santino 于 十月 13, 2019, 05:50:51 pm

标题: 请问 kernel local memory 如何实现 memset?
作者: santino十月 13, 2019, 05:50:51 pm
想把分配的local memory全部设置为某个值,需要一个一个单元赋值吗?有没有类似memset的函数?

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

谢谢!
标题: Re: 请问 kernel local memory 如何实现 memset?
作者: 屠戮人神十月 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?
作者: santino十月 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集体清零是怎么操作的吗?