SYCL 中有 calloc() 的替代品吗?

Is there an alternative to calloc() in SYCL?

提问人:gamersensual 提问时间:8/6/2022 最后编辑:πάντα ῥεῖgamersensual 更新时间:8/6/2022 访问量:68

问:

SYCL 中有 C 函数 calloc() 的替代品吗?

或者模仿行为的唯一方法是使用 malloc_host() / malloc_device() 然后使用 memset()?我已经测试了最后一个选项,性能急剧下降。这是我想知道的主要原因。

谢谢。

c malloc calloc sycl

评论

0赞 Rod Burns 8/8/2022
这取决于一点,设备内存分配和移动成本很高,因为在使用内存之前,您将耗尽时间将所有内存从主机 (CPU) 传输到设备 (GPU)。CallOC 只是一个内存分配,因此可以使用您建议的任何一个内存。您需要考虑的策略是需要将哪些内存传输到设备上,因为这会对性能影响最大。看看 SYCL 书籍 link.springer.com/book/10.1007/978-1-4842-5574-2 的第 3 章以及 SYCL 学院 github.com/codeplaysoftware/syclacademy 的 USM 课程
0赞 Rod Burns 8/8/2022
为了更好地回答您的问题,您需要提供更多的上下文,也许一旦您完成了一些阅读,您就可以做到这一点。
0赞 gamersensual 8/15/2022
嘿!在原始代码中,我只有大量的 calloc() 调用,然后代码的计算部分开始。为了实现这一点,我必须首先声明并初始化这些变量,然后将它们复制到设备内存中,或者声明它们,然后使用特殊函数在设备中初始化它们。

答: 暂无答案