我目前正在使用CUDArt软件包。GitHub 文档中包含了在加载包含自定义CUDA C内核的ptx模块时使用的以下代码片段:
md = CuModule("mycudamodule.ptx", false) # false means it will not be automatically finalized
(原始评论)
我正在尝试理解 finalize 中的 false 选项到底意味着什么,以及何时我会/不会想要使用它。我在 SO 上找到了这篇文章(What is the right way to write a module finalize method in Julia?)。它引用了 Julia 文档中的内容:
finalizer(x, function)
注册一个函数 f(x),当没有程序可访问的 x 引用时调用该函数。如果 x 是位类型,则此函数的行为是不可预测的。
然而,我并不真正理解这意味着什么,甚至不知道这里的 finalizing 是否与 CUDArt 示例中提到的相同。例如,当程序无法访问参数 x
时,尝试在该参数上调用函数是毫无意义的——这怎么可能呢?因此,我希望能够得到以下问题的澄清:
- 在 Julia 中,“finalize”是什么意思?
- 在导入带有 CUDArt 的 .ptx 模块的上下文中,何时需要/不需要使用它?