我正在使用动态语言(Clojure)使用JCuda以交互式开发方式创建CUDA上下文。通常我会调用包含对jcuda.driver.JCudaDriver/cuInit
的调用的初始化程序。多次调用cuInit是否安全?另外,有没有像cuInit的destroy方法?我问,因为可能会返回错误代码CUDA_ERROR_DEINITIALIZED
。
答案 0 :(得分:2)
要回答这个问题,是的,多次致电cuInit
可能是安全的。我没有注意到这样做有任何副作用。
但请注意,cuInit
仅触发API内的一次性初始化过程。它对设备或上下文没有任何作用,它肯定无法返回CUDA_ERROR_DEINITIALIZED。在在应用程序中调用cuInit
之后执行所做的步骤(即创建上下文)会产生真正的影响 - 每次调用它时都会创建一个新的上下文,资源耗尽将会如果上下文没有被主动销毁,就会发生。对API没有等效的去初始化调用。我的意图是,一旦初始化,运行时API应该保持在该状态,直到应用程序终止。