gpt4 book ai didi

haskell - 在删除不透明的 FFI 对象之前,垃圾回收需要多长时间?有可能以某种方式加快速度吗?

转载 作者:行者123 更新时间:2023-12-02 14:28:47 24 4
gpt4 key购买 nike

我考虑将 Haskell 绑定(bind)编写到用 C++(我会编写一个普通的 C 包装器)和 CUDA 编写的量子力学库。主要瓶颈始终是 CUDA 部分使用的 GPU 内存。在 C++ 中,处理起来非常高效,因为所有对象都有自动内存管理,即一旦离开作用域就会被删除。另外,我使用 C++11 移动语义来避免复制,无论如何,这些在 Haskell 中显然是不必要的。

然而,我担心当对象是从垃圾收集的 Haskell 管理时,它可能不再顺利工作,并且我可能需要想出启发法将很少使用的对象迁移回主机内存(这往往是相当慢)。这种担心是否合理,或者 GHC 垃圾收集是否如此有效,以至于大多数对象几乎会像 C++ 中一样快地消失,即使 Haskell 运行时认为它不需要节省内存?是否有任何技巧可以提供帮助,或者有什么方法可以表明某些对象占用了过多的 GPU 内存并应尽快删除?

最佳答案

even when the Haskell runtime doesn't see it needs to be economic on memory?

这就是问题所在:GHC GC 不知道您的异物有多大,因此它们不会施加任何堆压力,因此不会尽快收集。

您可以通过手动调用 performGC 强制执行主要 GC 来缓解此问题。

关于haskell - 在删除不透明的 FFI 对象之前,垃圾回收需要多长时间?有可能以某种方式加快速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com