gpt4 book ai didi

c++ - 在 CUDA 中,Nsight 不在时间轴中显示 cuInit(0) 调用

转载 作者:行者123 更新时间:2023-11-28 04:50:07 25 4
gpt4 key购买 nike

我的程序中有以下代码可以使用纯驱动程序 API,

cuInit(0)

并且 Nvidia Visual Profiler 8.0 没有在时间线图中显示它。

我可以偶尔调用它一次,还是像 pc 唤醒一样频繁调用它,或者它应该每个进程最多调用一次(这将需要一个类似单例的应用程序或一些全局同步的初始化程序包装器)?

我是否应该期望每次通话总是有微不足道的时间损失?

cuda 驱动程序 API 是否有一个内部计数器,以便如果驱动程序 API 以某种方式卸载,它会自动重新加载它,这样我以后就不必再次运行它了?

如果这个 C++ 是一个 DLL 并且将从 C#、Java、Phyton 调用怎么办?其他第三方库可以在我申请之前初始化吗?我知道 GPU 会在进程之间进行上下文切换(驱动程序 API 是否独立于每个进程?)但是这个初始化命令是否会意外妨碍其他人的工作(例如,在云计算机中,其他 N 个用户也运行 CUDA)?

最佳答案

cuInit() 每个应用程序应调用一次,before any other cuda driver API calls are used .

我认为它没有出现在时间轴中是预期的行为。

cuInit() 会花费一些时间。我不会称之为“微不足道”。它会根据各种系统配置参数而有所不同。

没有驱动API“卸载”的概念。

如果您在库中使用任何驱动程序 API 调用,则在库代码中此调用也必须先于它们。

我认为您可能会将其与 CUDA context 混淆. cuInit() 不创建上下文(忽略主上下文)。如果您创建了上下文,则可以将该上下文传递给其他例程,即使它们位于动态链接库中。

此调用与在另一个进程中运行的 CUDA 无关。

关于c++ - 在 CUDA 中,Nsight 不在时间轴中显示 cuInit(0) 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48391043/

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