Python中使用gpu,nvcc的PATH中包含空格无法正常调用

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

这是我在 Stack Overflow 上的第一个问题。

我正在使用 spacy 学习文本分析,但使用 GPU 时遇到问题。

--------------------------------------------------------------------------------------------------
CalledProcessError: Command '['C:\\Program', 'Files\\NVIDIA', 'GPU', 'Computing', 'Toolkit\\CUDA\\v12.1\\bin\\nvcc.EXE', '-gencode=arch=compute_86,code=sm_86', '--ptx', '--std=c++11', '-Ic:\\Users\\este_.MAIN\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\cupy\\_core\\include', '-Ic:\\Users\\este_.MAIN\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\cupy\\_core\\include\\cupy\\_cuda\\cuda-12', '-IC:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.1\\include', '-ftz=true', 'C:\\Users\\ESTE_~1.MAI\\AppData\\Local\\Temp\\tmptcsy9n4a\\preprocess.cu']' returned non-zero exit status 1.
--------------------------------------------------------------------------------------

需要加载NVIDIA GPU计算工具包,这是一个包含空格的地址,但是它调出'C:\Program', 'Files\NVIDIA', 'GPU', 'Computing', 'Toolkit\CUDA 12.1 in vcc.EXE'.

即使完全重新安装后,也会出现同样的问题。

python operating-system gpu spacy nvcc
1个回答
0
投票

您在使用 spaCy 和 GPU 加速时遇到的错误消息表明 CUDA 编译器 (nvcc.EXE) 如何处理包含空格的 NVIDIA CUDA 工具包的路径存在问题。

您可以尝试以下一些步骤来解决此问题:

  1. 使用双引号安装 CUDA 工具包:

安装 CUDA Toolkit 时,请确保将整个安装路径用双引号引起来。这确保空格被视为路径的一部分,而不是单独的参数。

2.修改环境变量(Windows):

设置CUDA_PATH:打开系统属性->高级系统设置->环境变量。在“系统变量”下,找到“Path”变量并对其进行编辑。添加 CUDA Toolkit 安装目录的路径,并用双引号引起来。

设置 CUDA_ROOT:您也可以选择创建一个名为“CUDA_ROOT”的新系统变量,并将其值设置为 CUDA Toolkit 安装目录的路径(带双引号)。

3.使用虚拟环境(推荐):

如果您的项目使用虚拟环境,强烈建议在该环境中安装 spaCy 和 CUDA Toolkit 依赖项。这将环境与系统范围的安装的潜在冲突隔离开来。

4.检查CUDA版本兼容性:

错误消息提到 CUDA/v12.1。确保您使用的 CUDA 版本与您安装的 spaCy 及其依赖项(如 cupy)的版本兼容。请参阅 spaCy 文档了解支持的 CUDA 版本。

5.重新安装spaCy(修复路径后):

解决路径问题后,请尝试重新安装具有 GPU 支持的 spaCy:

重击

pip install spacy[cuda]

谨慎使用代码。 请记住在更改任何环境变量后重新启动终端/命令提示符。

如果尝试这些步骤后问题仍然存在,请考虑在 Stack Overflow 等在线论坛或社区中搜索特定版本的 spaCy、CUDA Toolkit 和您的操作系统的类似问题。您还可以查看 spaCy 文档,了解与 GPU 使用相关的故障排除提示 (https://github.com/explosion/spaCy/discussions/7622)。

© www.soinside.com 2019 - 2024. All rights reserved.