在 Windows 7 中使用 Open MPI 和 CUDA

Posted

技术标签:

【中文标题】在 Windows 7 中使用 Open MPI 和 CUDA【英文标题】:Using Open MPI and CUDA in Windows 7 【发布时间】:2012-09-10 09:42:45 【问题描述】:

我正在尝试运行一个简单的 CUDA 程序,该程序使用 Windows 中的 Open MPI v1.6.1(64 位)查询节点中的 GPU 数量7 台专业 64 位机器。当我在根节点中运行应用程序时,得到了正确的 GPU 计数。但是,当尝试使用 Open MPI 在不同的节点上远程运行相同的应用程序时,GPU 计数变为 0,即节点中显示为 No CUDA-capable GPU is present

具有支持 CUDA 2.1 的 GPU 的根和节点。当一个正常的 MPI 应用程序运行时,它工作正常。

运行 CUDA 应用程序是否需要任何特殊设置 在 Windows 7 中使用 Open MPI v1.6.1?

【问题讨论】:

您可以在远程桌面访问下运行任何 CUDA 应用程序(甚至来自 SDK)吗?据我记得,Windows中的远程桌面提供了虚拟GPU,而你的真实GPU无法正常远程访问。 否 Windows 不允许 CUDA 应用程序运行远程桌面。但是我们可以通过 VNC 运行应用程序。 【参考方案1】:

在 Windows 上,显示 GPU 需要使用 Microsoft 的 WDDM 驱动程序模型。在 Windows 机器上运行远程任务时(例如通过 RDP 或 MPI),您在 restricted session 中运行,它具有虚拟显示驱动程序,因此 WDDM 设备不可访问,因此没有 GPU(即没有 CUDA GPU) .

NVIDIA 的TCC 驱动程序模型将 GPU 从 WDDM 环境中移除,使其显示为非显示设备,这意味着它可以通过 RDP 和 MPI 用于 CUDA 工作。当然,这也使它无法显示。

所有 Tesla 和部分 Quadro 设备都支持 TCC。

【讨论】:

对于遇到此问题的 GeForce Windows 用户来说,最简单的解决方案是一堆包含实时 Linux 发行版的 DVD 或 U 盘。

以上是关于在 Windows 7 中使用 Open MPI 和 CUDA的主要内容,如果未能解决你的问题,请参考以下文章

为 Open MPI 构建 Java 接口

跨库的 MPI 消息

如何用 MPI_File_open 替换 MPI 中的现有文件

MacOS中配置Open MPI

C++ Open-MPI:自定义结构类型无法通过 Ssend 发送

使用 MPI 并在 Linux 中使用 OpenMPI 的代码不能在使用 MSMPI 的 Windows 中编译