在 CUDA 中,Nsight 不会在时间轴中显示 cuInit(0) 调用
In CUDA, Nsight doesn't show cuInit(0) call in timeline
我的程序中有以下代码,可以使用纯驱动程序 API,
cuInit(0)
并且 Nvidia Visual Profiler 8.0 没有在时间轴图上显示它。
我可以偶尔调用它一次,或者像 pc 唤醒一样频繁地调用它,或者每个进程最多只调用一次(这需要应用程序类似单例或一些全局同步的初始值设定项包装器)?
我是否应该期望每次通话总是造成微不足道的时间损失?
cuda 驱动程序 API 是否有内部计数器,以便在驱动程序 API 以某种方式卸载时,它会自动重新加载它,这样我以后就不必再次运行它?
如果这个C++是一个DLL,并且将从C#,Java,Phyton调用怎么办?其他第三方库是否可以在我的应用程序之前初始化它? 我知道 GPU 在进程之间进行上下文切换(驱动程序 API 是否独立于每个进程?),但是此初始化命令是否意外地阻碍了其他人的工作(例如,在 N 个其他用户也运行 CUDA 的云计算机中)?
在使用任何其他 cuda 驱动程序 API 调用之前,每个应用程序应调用一次cuInit()
。
我认为它没有出现在时间线中是预期的行为。
cuInit()
会有一些时间成本。 我不会称它为"微不足道"。 它将因各种系统配置参数而异。
没有驱动程序 API "卸载"的概念。
如果在库中使用任何驱动程序 API 调用,则在库代码中,此调用也必须位于它们之前。
我想你可能会对 CUDA 上下文感到困惑。cuInit()
不会创建上下文(忽略主要上下文)。 如果创建了上下文,则可以将该上下文传递给其他例程,即使它们位于动态链接的库中也是如此。
此调用与在另一个进程中运行的 CUDA 无关。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 如何用参数值调用函数(仅在运行时已知)
- 在 CUDA 中,Nsight 不会在时间轴中显示 cuInit(0) 调用
- 带有张量流的OpenGL程序C++对cuInit进行了失败的调用:CUDA_ERROR_OUT_OF_MEMORY