相关疑难解决方法(0)

在删除不透明的FFI对象之前,我应该期待垃圾收集多长时间?是否有可能以某种方式加快速度?

我考虑将Haskell绑定编写为用C++编写的量子力学库(我编写一个普通的C包装器)和CUDA.一个主要的瓶颈始终是CUDA部件使用的GPU内存.在C++中,这是非常有效地处理的,因为所有对象都具有自动内存管理,即一旦它们离开范围就被擦除.此外,我使用C++ 11移动语义来避免复制,无论如何这些在Haskell中显然不是必需的.

然而,我担心当从垃圾收集的Haskell管理对象时,它可能不会顺利运行,我可能需要提出启发式方法将很少使用的对象迁移回主机内存(这往往很慢) .这种恐惧是否合理,或者GHC垃圾收集是如此有效,以至于大多数对象几乎与C++一样快速消失,即使Haskell运行时没有看到它需要在内存上经济?是否有任何技巧可以帮助,或者发出信号表明某些对象占用过多GPU内存并应尽快删除的方法?

garbage-collection haskell ffi ghc

6
推荐指数
1
解决办法
220
查看次数

标签 统计

ffi ×1

garbage-collection ×1

ghc ×1

haskell ×1