在 platformio-ide-terminal 中构建 CUDA

Building CUDA in platformio-ide-terminal

我希望能够使用 Windows 10 Powershell 编译和构建 here 提供的 CUDA C 源代码。使用 x64 Native Tools Command Prompt for VS 2017 没有问题。

但是,我尝试了网上建议的几种方法来让 Powershell 工作,但没有成功。原因是我希望能够在编辑器 Atom 中构建我的 cuda 代码,使用它的包 platformio-ide-terminal 在 Atom 中加载 Powershell。因此,如果我弄清楚如何在 Powershell 中设置 Visual Studio 2017 Community,我会在 Atom 中编辑我的代码,并使用其 Powershell 集成方便地构建它们。

我尝试如下设置环境,但仍然nvcc找不到cl.exe的路径。

有人可以帮助我吗?

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\Users\AFP\Downloads\cuda_by_example> cd "C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\"

PS C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build> .\vcvarsall.bat amd64
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.7.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

PS C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build> cd C:\Users\AFP\Downloads\cuda_by_example\

PS C:\Users\AFP\Downloads\cuda_by_example> nvcc .\chapter03\hello_world.cu
nvcc fatal   : Cannot find compiler 'cl.exe' in PATH

PS C:\Users\AFP\Downloads\cuda_by_example>

可以将cl.exe的路径添加到环境变量中:

control panel > view advanced system settings > Environment variables > Path > New.

然后添加C:\Program Files (x86)\Microsoft Visual Studio\<year >\Community\VC\Tools\MSVC\<toolset>\bin\Hostx64\x64.

或使用此命令进行编译:nvcc x.cu .\chapter03\hello_world.cu -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\<year >\Community\VC\Tools\MSVC\<toolset>\bin\Hostx64\x64"

打开Windows Powershell和运行在提示符下输入以下命令:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\Users\AFP\Downloads\cuda_by_example> & 'C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\vcvarsall.bat' amd64
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.7.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
PS C:\Users\AFP\Downloads\cuda_by_example> $ENV:PATH="$ENV:PATH;C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\bin\Hostx64\x64"
PS C:\Users\AFP\Downloads\cuda_by_example> nvcc .\chapter03\hello_world.cu
hello_world.cu
   Creating library a.lib and object a.exp
PS C:\Users\falah\Downloads\cuda_by_example> .\a.exe
Hello, World!
PS C:\Users\falah\Downloads\cuda_by_example>

自动化

要自动执行此操作,请创建一个名为 nvcc_setup_for_powershell.ps1 的文件并将以下两个命令放入其中。

& 'C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\vcvarsall.bat' amd64
$ENV:PATH="$ENV:PATH;C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.14.26428\bin\Hostx64\x64"
Write-Output "Configured PowerShell for NVCC Using Visual Studio 2019 Community x64"
$myshell = New-Object -com "Wscript.Shell"
$myshell.sendkeys("{ENTER}")

最后两个命令是模拟敲回车键,采用自here

Core > Run Command 下打开 platformio-ide-terminal 的设置,放置 PowerShell 脚本的路径:& "C:\Path\To\Script\nvcc_setup_for_powershell.ps1"

您可能需要以管理员身份打开 PowerShell 并运行以下命令

Set-ExecutionPolicy RemoteSigned

允许您执行 nvcc_setup_for_powershell.ps1.