朱莉娅"敲定"是什么意思?

Mic*_*gge 7 gpu julia julia-gpu

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

md = CuModule("mycudamodule.ptx", false)  # false means it will not be automatically finalized
Run Code Online (Sandbox Code Playgroud)

(原评论)

我试图了解这个false选项究竟是什么意思,以及何时我想/不想使用它.我在SO上发现了这篇文章(在Julia中编写模块finalize方法的正确方法是什么?).它引自Julia文档:

终结者(x,函数)

当没有程序可访问的x引用时,注册要调用的函数f(x).如果x是位类型,则此函数的行为是不可预测的.

我真的不明白这意味着什么,或者甚至这里的最终确定是否与CUDArt示例中提到的相同.例如,x当程序无法访问该参数时,尝试在参数上调用函数是没有意义的 - 这怎么可能呢?因此,我要感谢任何澄清的帮助:

  1. 在朱莉娅和朱莉娅"敲定"意味着什么
  2. 当我/不想在使用CUDArt导入.ptx模块的上下文中使用它时

Fen*_*ang 6

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

这是一个例子:

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
Run Code Online (Sandbox Code Playgroud)

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