静态推力定制分配器?

时间:2012-08-22 15:21:21

标签: memory-management cuda thrust

设置的几个事实:

  • 推力不能在所有操作中就地运行。
  • 您可以向thrust::device_vectors提供自定义分配器。

我查看了thrust::systemthrust::system::cuda,但没有找到任何看起来像静态系统分配器的东西。我的意思是,我无法看到一种方法来替换推力在内部使用的分配器为不合适的算法分配额外的内存。

我也很难相信非就地的函数使用给定thrust::device_vectors的分配器来分配器工作内存。

问题:thrust是否有办法用用户定义的内部分配器替换内部分配器?

相关问题:

implies that thrust operates out-of-place

example of custom thrust allocator

1 个答案:

答案 0 :(得分:3)

Thrust的custom_temporary_allocation示例演示了如何为Thrust算法内部使用的临时存储构建自己的自定义分配器。该示例使用缓存方案来执行分配,但原则上您可以使用您喜欢的任何策略。

基本上,我们的想法是构建一个源自CUDA后端的自定义后端,专门用于自定义分配。然后,当您想在自定义分配器中使用算法时,在调用算法时将Thrust指向自定义后端。

请注意,此功能需要Thrust 1.6或更高版本。