Visual Studio 2017 的 C++ 编译器和 NVidia 的 CUDA?

Visual Studio 2017 的 C++ 编译器和 NVidia 的 CUDA?

我正在尝试设置 PyTorch 来运行我的笔记本电脑上的 GTX 1050 GPU。接下来我尝试设置 CUDA,我一直遵循由Nvidia 在这里。据我所知,我对此没有遇到任何问题。我可以运行nvcc -V并得到以下结果,正如我所期望的那样:

在此处输入图片描述

当我尝试运行他们提供的示例解决方案以确保安装成功时 - 即nvcc displayQueue或者nvcc bandwidth我只收到以下错误:

在此处输入图片描述

接下来,我尝试下载 Visual Studio 2017 的社区版本以获取 C++ 编译器和“cl.exe”。但这样做之后,安装似乎没有在环境变量中设置编译器“cl.exe”的路径。

尝试在我的文件中找到“cl.exe”似乎是另一个问题,因为我在以下路径下有多个“cl.exe”:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86
\...\bin\Hostx86\x64
\...\bin\Hostx64\x64
\...\bin\Hostx64\x86

在我的环境变量中将这些路径中的任何一个设置为 PATH,然后再次运行“nvcc displayQueue”或“nvcc broadband”只会出现错误:

在此处输入图片描述

有些事情已经改变,但系统似乎无法正常工作。
任何帮助都将不胜感激。

答案1

仅设置cl.exe路径不会生效,因为它还需要其他工具。官方方法是使用开发人员命令提示符仅随 Visual Studio 提供。

根据

尝试搜索命令提示符文件的名称,例如 VsDevCmd.bat,或者转到 Tools 文件夹,例如 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\Tools(路径根据 Visual Studio 版本、版本和安装位置而变化)。

打开命令提示符 (CMD) 窗口,运行此命令:

call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 

这将为您设置所有必需的路径。该x64参数仅适用于 64 位 Intel CPU。将该参数更改为x86以适用于 32 位 Intel CPU。或者armarm64。路径可能会根据您的 Visual Studio 版本而变化。不要关闭该 CMD 窗口。您还可以使用命令检查路径(如果设置正确)where cl.exe。现在运行所需的命令进行编译。

笔记:如果你只需要 C++ 编译器,请尝试VS 构建工具Windows SDK仅有的。

答案2

您首先需要使用问题部分中的方法找出您的 gpu 详细信息,即deviceQuery根据应用程序https://forums.developer.nvidia.com/t/what-is-the-compute-capability-of-a-geforce-gt-710/146956/4

您的 CUDA 安装的演示套件中应该有一个deviceQuery executable。在 Windows 上,它应该位于 中C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\extras\demo_suite,其中 XY 指定您的 CUDA 版本,例如 10.2。deviceQuery 将告诉您设备的计算架构:CUDA 功能主要/次要版本 数字

现在看看如何在 Windows 10 上使用 anaconda prompt 从源代码安装 pytorch(为旧 gpu 的已弃用的 CUDA cc 3.5 启用了 cuda)?答案的第 3 点到第 5 点。核心基本上是第 3 点,即带有绿色箭头的表格。在原文中查找该表格https://gist.github.com/ax3l/9489132再次按照第 3 点中相同的方式做出决定。

该表将向您展示如何为您的 gpu SM Arch 选择适合 CUDA 编译器驱动程序的正确的 MSVC 编译器(例如 CUDA cc [= 计算能力] 3.5、CUDA cc 8.0 或您的卡提供的任何编译器)。

如果您需要从源代码安装带有 cuda 的 pytorch,因为您的卡可能不再受官方 pytorch 安装程序支持(我在您的问题中读到了这一点),那里的整个答案应该与此处的答案相关。

相关内容