memory-management - 静态推力自定义分配器?

标签 memory-management cuda thrust

设置的几个事实:

  • Thrust 并非就地运行所有操作。
  • 您可以为 thrust::device_vectors 提供自定义分配器。

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

我也很难相信那些不在适当位置的函数使用给定 thrust::device_vectors 的分配器来分配工作内存。

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

相关问题:

implies that thrust operates out-of-place

example of custom thrust allocator

最佳答案

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

基本上,这个想法是构建一个从 CUDA 后端派生的自定义后端,专门用于自定义分配的目的。然后,当您想将算法与您的自定义分配器一起使用时,您可以在调用该算法时将 Thrust 指向您的自定义后端。

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

关于memory-management - 静态推力自定义分配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076377/

相关文章:

c - 如何在c中的函数中释放分配的数组

objective-c - 释放和自动释放有什么区别?

cuda - 如何在 Java 编程中使用 GPU

algorithm - GPU 上的高效全对集交集

推力占位符 : how to access member variable

cuda - 如何释放 device_vector<int>

objective-c - 为什么要保留静态变量?

memory-management - Rust 会释放被覆盖变量的内存吗?

memory - 如何在不测量的情况下获取/计算 GPU 的内存延迟?

c++ - Cuda中的链接错误