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
当程序无法访问该参数时,尝试在参数上调用函数是没有意义的 - 这怎么可能呢?因此,我要感谢任何澄清的帮助:
我不能代表CUDArt,但这里是finalize
Julia的意思:当垃圾收集器检测到程序无法再访问该对象时,它将运行终结器,然后收集(释放)该对象.请注意,即使程序不能,垃圾收集器仍然可以访问该对象.
这是一个例子:
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内存).