我考虑写哈斯克尔绑定C语言编写的一个量子力学库++(我会写一个普通的C包装)和CUDA。 一个主要的瓶颈始终是由CUDA部分使用的GPU内存。 在C ++中,这是非常有效率地处理,因为所有对象都具有自动内存管理,即是只要他们离开范围擦除。 此外,我使用C ++ 11个移动语义,以避免拷贝,这些显然不会在Haskell必要的反正。
然而,我担心它可能不是当对象是从垃圾收集哈斯克尔管理的顺利工作了,我可能需要拿出启发式迁移很少使用的对象回到主机内存(这往往是很慢) 。 这是合理的恐惧或者说是GHC垃圾收集如此有效,大多数物体几乎一样迅速消失在C ++,即使哈斯克尔运行时不会看到它需要经济上的内存? 是否有任何技巧,帮助,或方式的信号,有些对象占用过多的GPU内存,应尽可能迅速取出?