【问题标题】:CULA multiGPU.cCULA multiGPU.c
【发布时间】:2014-09-12 09:39:30
【问题描述】:

我正在尝试运行 CULA 的多 GPU 示例,但出现以下错误。有人尝试过这个例子并设法让它工作吗?我有两个 GPU。

[xxxx@xxxxxxxxxx 多GPU]$ ./multiGPU 找到 2 个设备,将启动 2 个线程

线程 0 - 已启动 线程 0 - 绑定到设备 0 线程 1 - 启动 线程 1 - 绑定到设备 1 线程 0 - CUDA 错误:独占线程设备已被其他线程使用(请参阅程序员指南) 线程 1 - 分配矩阵 线程 1 - 初始化 CULA 线程 1 - 调用 culaSgeqrf 线程 1 - 关闭 CULA

线程 0 - 失败

【问题讨论】:

    标签: multithreading cuda gpu cula


    【解决方案1】:

    通过将 2-GPU 系统上的计算模式设置为 EXCLUSIVE_PROCESS 并从 CULA 运行多 GPU 示例,我能够重现此问题。

    问题是多GPU进程绑定到GPU并阻止pthreads产生的线程之一访问该GPU,导致指示的错误消息(CUDA错误:独占线程设备已被不同线程使用)。

    解决此问题的一种方法是将 GPU 设置为“默认”计算模式,以便多个线程可以同时访问它们。

    #nvidia-smi -c 0

    该程序也可以在 EXCLUSIVE_PROCESS 计算模式下与 GPU 设备一起运行,但必须使用 CUDA 多进程服务 (MPS)。此守护进程将管理设备上的进程,以便生成的进程与设备交互,就好像它处于默认计算模式一样。对我来说,一旦 MPS 守护程序为冲突设备运行,程序就会正常运行。启动守护进程的说明可以在 MPS 文档的附录中找到。

    https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf

    -丹

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 2014-03-30
      • 2014-03-10
      • 2014-03-09
      • 2014-06-09
      • 2015-05-02
      • 1970-01-01
      • 2014-11-13
      相关资源
      最近更新 更多