-2

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

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

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

线程 0 - 失败

4

1 回答 1

2

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

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

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

# 英伟达-smi -c 0

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

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

-担

于 2014-07-22T15:04:13.453 回答