设置的几个事实:
thrust::device_vectors
提供自定义分配器。我查看了thrust::system
和thrust::system::cuda
,但没有找到任何看起来像静态系统分配器的东西。我的意思是,我无法看到一种方法来替换推力在内部使用的分配器为不合适的算法分配额外的内存。
我也很难相信非就地的函数使用给定thrust::device_vectors
的分配器来分配器工作内存。
问题:thrust
是否有办法用用户定义的内部分配器替换内部分配器?
相关问题:
答案 0 :(得分:3)
Thrust的custom_temporary_allocation
示例演示了如何为Thrust算法内部使用的临时存储构建自己的自定义分配器。该示例使用缓存方案来执行分配,但原则上您可以使用您喜欢的任何策略。
基本上,我们的想法是构建一个源自CUDA后端的自定义后端,专门用于自定义分配。然后,当您想在自定义分配器中使用算法时,在调用算法时将Thrust指向自定义后端。
请注意,此功能需要Thrust 1.6或更高版本。