设置的几个事实:
- Thrust 并非就地运行所有操作。
- 您可以为
thrust::device_vectors
提供自定义分配器。
我查看了 thrust::system
和 thrust::system::cuda
并没有发现任何看起来像静态系统分配器的东西。我的意思是,我看不到一种方法来替换 thrust 在内部使用的分配器来为不合适的算法分配额外的内存。
我也很难相信那些不在适当位置的函数使用给定 thrust::device_vectors
的分配器来分配工作内存。
问题:thrust
是否有办法用用户定义的分配器替换内部分配器?
相关问题:
最佳答案
推力 custom_temporary_allocation
示例演示了如何为 Thrust 算法内部使用的临时存储构建您自己的自定义分配器。该示例使用缓存方案来执行分配,但原则上您可以使用您喜欢的任何策略。
基本上,这个想法是构建一个从 CUDA 后端派生的自定义后端,专门用于自定义分配的目的。然后,当您想将算法与您的自定义分配器一起使用时,您可以在调用该算法时将 Thrust 指向您的自定义后端。
请注意,此功能需要 Thrust 1.6 或更高版本。
关于memory-management - 静态推力自定义分配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076377/