【问题标题】:hybrid graphics CUDA starting混合图形 CUDA 启动
【发布时间】:2014-03-29 10:54:25
【问题描述】:

我有一台混合图形笔记本电脑,我使用的是 Windows 7,我打算运行一个包含 cuda 的 C++ 代码,当轮到 GPU 启动时,我的 nvidia GPU 需要一些时间几秒钟才能启动,我想再次预热需要几秒钟,有没有办法在运行代码后启动 GPU(例如在 ma​​in() 函数的第一行)?

提前致谢。

【问题讨论】:

  • 热身问题主要是因为 GPU 需要设置与 CPU 的上下文。更多关于 CUDA 上下文设置 - stackoverflow.com/questions/10415204/…
  • 这种“预热”延迟主要是由于将 CUDA dll 加载到内存中。这就是为什么 Robert 建议在程序生命周期的早期调用 cudaFree(0) - 强制在程序启动时加载大型 CUDA dll。

标签: cuda gpu


【解决方案1】:

我提出了一个更好的选择。由于您使用的是 Windows,您是否考虑过强制程序以 NVIDIA GPU 启动?如果您使用的是 NVIDIA Optimus(没有用于切换显卡的物理开关的笔记本电脑),请尝试以下操作:

右键单击使用 CUDA 的程序,在上下文菜单中,有一个名为 "Run with graphics processor" 的选项,然后在下面选择 "High-performance NVIDIA processor"。 请注意,如果您使用的是 Visual Studio,则可以使用此方法启动 Visual Studio。这样,您的非 CUDA 卡将不会对程序可见:-)

根据我的经验,如果您尝试进行 CUDA/OpenGL 互操作,如果没有这种方法,您将会遇到问题。有时 OpenGL 上下文是为您的非 NVIDIA 卡创建的,而 CUDA 上下文是在 NVIDIA 卡上创建的,这会导致奇怪的错误。

【讨论】:

    【解决方案2】:

    试着放一个:

    cudaSetDevice(0);
    

    作为main 函数的第一行。或者您也可以尝试使用:

    cudaFree(0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多