命令提示符导致致命错误,而 MSVS 2019 成功构建 CUDA 示例
Command Prompt results in fatal error while MSVS 2019 builds CUDA example successfully
我可以在 MSVS 2019 社区 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.4[=10=]_Simple\matrixMul
中成功构建和 运行 CUDA 示例:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.4[=27=]_Simple\matrixMul>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" -gencode=arch=compute_80,code=\"sm_80,compute_80\" -gencode=arch=compute_86,code=\"sm_86,compute_86\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.29.30133\bin\HostX86\x64" -x cu -I./ -I../../common/inc -I./ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\/include" -I../../common/inc -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static --threads 0 -g -DWIN32 -DWIN32 -D_MBCS -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64/Debug/vc142.pdb /FS /Zi /RTC1 /MTd " -o x64/Debug/matrixMul.cu.obj "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.4[=11=]_Simple\matrixMul\matrixMul.cu"
========== 全部重建:1 次成功,0 次失败,0 次跳过 ==========
但是,如果我打开一个命令提示符,复制并粘贴灰色的确切命令,然后 运行 它,结果是
这没有意义:(i) 在 VS 中成功执行了相同的命令,(ii) cl.exe
的路径清楚地提供给了编译器。
我总是可以将该路径添加到环境变量并重试,但在这样做之前,为什么会这样?还有其他人遇到过这个问题吗?我想了解情况,以便在向命令提示符发出编译指令时更加清楚。
删除 --use-local-env
。 VS隐藏了一些东西。构建代码的最低限度命令:
nvcc -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" -gencode=arch=compute_80,code=\"sm_80,compute_80\" -gencode=arch=compute_86,code=\"sm_86,compute_86\" -Wno-deprecated-gpu-targets -ccbin "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64" -cudart static --m64 --threads 0 -maxrregcount=0 -o matrixMul -x cu matrixMul.cpp
我可以在 MSVS 2019 社区 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.4[=10=]_Simple\matrixMul
中成功构建和 运行 CUDA 示例:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.4[=27=]_Simple\matrixMul>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" -gencode=arch=compute_80,code=\"sm_80,compute_80\" -gencode=arch=compute_86,code=\"sm_86,compute_86\" --use-local-env -ccbin "C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Tools\MSVC.29.30133\bin\HostX86\x64" -x cu -I./ -I../../common/inc -I./ -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\/include" -I../../common/inc -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static --threads 0 -g -DWIN32 -DWIN32 -D_MBCS -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64/Debug/vc142.pdb /FS /Zi /RTC1 /MTd " -o x64/Debug/matrixMul.cu.obj "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.4[=11=]_Simple\matrixMul\matrixMul.cu"
========== 全部重建:1 次成功,0 次失败,0 次跳过 ==========
但是,如果我打开一个命令提示符,复制并粘贴灰色的确切命令,然后 运行 它,结果是
这没有意义:(i) 在 VS 中成功执行了相同的命令,(ii) cl.exe
的路径清楚地提供给了编译器。
我总是可以将该路径添加到环境变量并重试,但在这样做之前,为什么会这样?还有其他人遇到过这个问题吗?我想了解情况,以便在向命令提示符发出编译指令时更加清楚。
删除 --use-local-env
。 VS隐藏了一些东西。构建代码的最低限度命令:
nvcc -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_37,code=\"sm_37,compute_37\" -gencode=arch=compute_50,code=\"sm_50,compute_50\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" -gencode=arch=compute_60,code=\"sm_60,compute_60\" -gencode=arch=compute_61,code=\"sm_61,compute_61\" -gencode=arch=compute_70,code=\"sm_70,compute_70\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" -gencode=arch=compute_80,code=\"sm_80,compute_80\" -gencode=arch=compute_86,code=\"sm_86,compute_86\" -Wno-deprecated-gpu-targets -ccbin "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/HostX64/x64" -cudart static --m64 --threads 0 -maxrregcount=0 -o matrixMul -x cu matrixMul.cpp