gpt4 book ai didi

gpu - Julia 中的 "finalize"意味着什么?

转载 作者:行者123 更新时间:2023-12-02 20:10:31 25 4
gpt4 key购买 nike

我目前正在使用 CUDArt 包。 GitHub documentation加载包含自定义 CUDA C 内核的 ptx 模块时包含以下代码片段:

md = CuModule("mycudamodule.ptx", false)  # false means it will not be automatically finalized

(原评论)

我试图了解这个用于最终确定的 false 选项到底意味着什么,以及我何时会/不想使用它。我在 SO ( What is the right way to write a module finalize method in Julia? ) 上看到了这篇文章。它引用了 Julia 文档:

finalizer(x, function)

Register a function f(x) to be called when there are no program-accessible references to x. The behavior of this function is unpredictable if x is of a bits type.

我不太明白这意味着什么,甚至不明白这里的最终确定是否与 CUDArt 示例中提到的相同。例如,当程序无法访问该参数时,尝试对参数 x 调用函数对我来说是没有意义的 - 这怎么可能呢?因此,我希望能帮助澄清:

  1. 在 Julia 中“最终确定”意味着什么
  2. 当我想/不想在使用 CUDArt 导入 .ptx 模块的上下文中使用它时

最佳答案

我不能代表 CUDArt,但这就是 Julia 中 finalize 的含义:当垃圾收集器检测到程序无法再访问该对象时,则它将运行终结器,然后收集(释放)对象。请注意,垃圾收集器仍然可以访问该对象,即使程序不能。

这是一个例子:

julia> type X
a
end
julia> j = X(1) # create new X(1) object, accessible as j
julia> finalizer(j, println) # print the object when it's finalized
julia> gc() # suggest garbage collection; nothing happens
julia> j = 0 # now the original object is no longer accessible by the program
julia> gc() # suggest carbage collection
X(1) # object was collected... and finalizer was run

这很有用,以便在收集对象时释放外部资源(例如文件句柄或malloced 内存)。

关于gpu - Julia 中的 "finalize"意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38292448/

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