在OCaml中管理GPU内存

在OCaml中管理GPU内存,ocaml,Ocaml,我想知道是否有可能为OCaml记录创建一个最终方法?我正在创建一个GPU数据库,我正在使用OCaml构建DSL来查询和操作GPU数据,我需要一种方法来释放符合GC条件的GPU内存(不再引用) 我已经创建了一个与基于C的GPU api的绑定,以允许malloc、释放和操作GPU数据,但我正在寻找解决方案,以便在顶级变量不再引用GPU内存时释放GPU内存 let bids = (**a 1-dim GPU array*) and asks = (**another 1-dim GPU array*)

我想知道是否有可能为OCaml记录创建一个最终方法?我正在创建一个GPU数据库,我正在使用OCaml构建DSL来查询和操作GPU数据,我需要一种方法来释放符合GC条件的GPU内存(不再引用)

我已经创建了一个与基于C的GPU api的绑定,以允许malloc、释放和操作GPU数据,但我正在寻找解决方案,以便在顶级变量不再引用GPU内存时释放GPU内存

let bids = (**a 1-dim GPU array*) and asks = (**another 1-dim GPU array*) in
let spread = asks - bids 

在这个例子中,我需要为驻留在GPU内存中的bids和ASK向量释放GPU内存。我想我需要写我自己的语言?

你可以用它来写。使用GC终结(美式拼写)来控制事情是相当危险的(至少我已经读过)。例如,在程序退出时不调用终结函数。所以要小心:-)

您需要的可能是自定义块,因为您的数据不是纯Caml:

19.9高级主题:自定义块

带有标记Custom_标记的块包含任意用户数据和 指向C结构的指针,其类型为struct custom_操作 associates用户提供的定稿、比较、哈希、, 此块的序列化和反序列化函数

可以将C终结函数附加到自定义块。当块在OCaml世界中被GCed时,它们被调用