PyTorch 错误检查 cl 的编译器版本(cpp_extension.py)

问题描述 投票:0回答:1

我正在使用 Anaconda,并使用以下命令安装了 PyTorch:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

现在我在 torch/utils/cpp_extension.py 中收到以下错误:

UserWarning: Error checking compiler version for cl: [WinError 2] The system cannot find the file specified

我使用的是 Windows 10,并且已安装 Visual Studio Community 2022 和 Visual Studio Build Tools 2022,请参阅下面的屏幕截图。

有人有什么问题或遗漏吗?

编辑:我正在使用 Cuda 11.6。我现在还安装了 Visual Studio 2019,包括构建工具。现在上面的错误消失了,但我有一个新的错误:

Traceback (most recent call last):
  File "C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\utils\cpp_extension.py", line 1808, in _run_ninja_build
    subprocess.run(
  File "C:\Users\myUser\Anaconda3\envs\parlai\lib\subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\myUser\ParlAI\server\server.py", line 3, in <module>
    from parlai.utils.safety import OffensiveStringMatcher, OffensiveLanguageClassifier
  File "c:\users\myUser\parlai\parlai\utils\safety.py", line 10, in <module>
    from parlai.agents.transformer.transformer import TransformerClassifierAgent
  File "c:\users\myUser\parlai\parlai\agents\transformer\transformer.py", line 15, in <module>
    from parlai.core.torch_generator_agent import TorchGeneratorAgent
  File "c:\users\myUser\parlai\parlai\core\torch_generator_agent.py", line 48, in <module>
    from parlai.ops.ngram_repeat_block import NGramRepeatBlock
  File "c:\users\myUser\parlai\parlai\ops\ngram_repeat_block.py", line 23, in <module>
    ngram_repeat_block_cuda = load(
  File "C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\utils\cpp_extension.py", line 1202, in load
    return _jit_compile(
  File "C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\utils\cpp_extension.py", line 1425, in _jit_compile
    _write_ninja_file_and_build_library(
  File "C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\utils\cpp_extension.py", line 1537, in _write_ninja_file_and_build_library
    _run_ninja_build(
  File "C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\utils\cpp_extension.py", line 1824, in _run_ninja_build
    raise RuntimeError(message) from e
RuntimeError: Error building extension 'ngram_repeat_block_cuda': [1/2] C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin\nvcc --generate-dependencies-with-compile --dependency-output ngram_repeat_block_cuda_kernel.cuda.o.d -Xcudafe --diag_suppress=dll_interface_conflict_dllexport_assumed -Xcudafe --diag_suppress=dll_interface_conflict_none_assumed -Xcudafe --diag_suppress=field_without_dll_interface -Xcudafe --diag_suppress=base_class_has_different_dll_interface -Xcompiler /EHsc -Xcompiler /wd4190 -Xcompiler /wd4018 -Xcompiler /wd4275 -Xcompiler /wd4267 -Xcompiler /wd4244 -Xcompiler /wd4251 -Xcompiler /wd4819 -Xcompiler /MD -DTORCH_EXTENSION_NAME=ngram_repeat_block_cuda -DTORCH_API_INCLUDE_EXTENSION_H -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\torch\csrc\api\include -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\TH -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\THC "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include" -IC:\Users\myUser\Anaconda3\envs\parlai\Include -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -c c:\users\myUser\parlai\parlai\clib\cuda\ngram_repeat_block_cuda_kernel.cu -o ngram_repeat_block_cuda_kernel.cuda.o
FAILED: ngram_repeat_block_cuda_kernel.cuda.o
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin\nvcc --generate-dependencies-with-compile --dependency-output ngram_repeat_block_cuda_kernel.cuda.o.d -Xcudafe --diag_suppress=dll_interface_conflict_dllexport_assumed -Xcudafe --diag_suppress=dll_interface_conflict_none_assumed -Xcudafe --diag_suppress=field_without_dll_interface -Xcudafe --diag_suppress=base_class_has_different_dll_interface -Xcompiler /EHsc -Xcompiler /wd4190 -Xcompiler /wd4018 -Xcompiler /wd4275 -Xcompiler /wd4267 -Xcompiler /wd4244 -Xcompiler /wd4251 -Xcompiler /wd4819 -Xcompiler /MD -DTORCH_EXTENSION_NAME=ngram_repeat_block_cuda -DTORCH_API_INCLUDE_EXTENSION_H -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\torch\csrc\api\include -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\TH -IC:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\THC "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include" -IC:\Users\myUser\Anaconda3\envs\parlai\Include -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -c c:\users\myUser\parlai\parlai\clib\cuda\ngram_repeat_block_cuda_kernel.cu -o ngram_repeat_block_cuda_kernel.cuda.o
C:/Users/myUser/Anaconda3/envs/parlai/lib/site-packages/torch/include\c10/macros/Macros.h(143): warning C4067: unexpected tokens following preprocessor directive - expected a newline
C:/Users/myUser/Anaconda3/envs/parlai/lib/site-packages/torch/include\c10/macros/Macros.h(143): warning C4067: unexpected tokens following preprocessor directive - expected a newline
C:/Users/myUser/Anaconda3/envs/parlai/lib/site-packages/torch/include\c10/core/SymInt.h(84): warning #68-D: integer conversion resulted in a change of sign

C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\pybind11\cast.h(1429): error: too few arguments for template template parameter "Tuple"
          detected during instantiation of class "pybind11::detail::tuple_caster<Tuple, Ts...> [with Tuple=std::pair, Ts=<T1, T2>]"
(1507): here

C:\Users\myUser\Anaconda3\envs\parlai\lib\site-packages\torch\include\pybind11\cast.h(1503): error: too few arguments for template template parameter "Tuple"
          detected during instantiation of class "pybind11::detail::tuple_caster<Tuple, Ts...> [with Tuple=std::pair, Ts=<T1, T2>]"
(1507): here

2 errors detected in the compilation of "c:/users/myUser/parlai/parlai/clib/cuda/ngram_repeat_block_cuda_kernel.cu".
ngram_repeat_block_cuda_kernel.cu
ninja: build stopped: subcommand failed.
python windows visual-studio visual-c++ pytorch
1个回答
0
投票

我遇到了同样的问题,但我可以按照以下说明进行解决。想法是在你的windows系统中找到编译器

cl
并将目录添加到路径中

  1. 确保您已安装 Microsoft Visual Studio BuildTools。
  2. 按 Windows 按钮并输入
    x86
    ,您将看到名为 -
    x86 Native tools command prompt for vs 2022
    的内容。选择该选项。它将打开命令提示符
  3. 在该命令提示符中键入
    cl
    。确保已安装
  4. 现在输入
    where cl
    以获取编译器的路径
  5. 现在转到环境变量
    PATH
    并将此目录添加到其中。
  6. 重新启动 VS code,应该可以工作了
© www.soinside.com 2019 - 2024. All rights reserved.