【已解决】cc1plus: fatal error: cuda_runtime.h: No such file or directory

前因

我是在conda环境下创建stable diffusion的虚拟环境,虚拟环境下pytorch、cuda和cudnn的版本如下所示。服务器上的CUDA版本是11.2,GPU是P40,内存22G。

import torch
>>> torch.__version__
'1.12.0'
>>> torch.version.cuda
'11.3'
>>> torch.backends.cudnn.version()
8302

运行stable Diffusion,如果没有xFormers进行GPU加速,内存不够。但是xFormers的安装过程是一部血泪史,每次安装都会出现不同的问题。特此记录一下问题,一遍以后出现相同问题时能回头快速查看解决方案。

在执行pip install -e .命令阶段,首先出现了fatal error: cuda_runtime_api.h: No such file or directory,在setup.py中找到CUDAExtension,在include_dirs中添加/usr/local/cuda/include,如下图所示。
在这里插入图片描述
然后再执行pip install -e .命令时,运行有二十多分钟,本以为要大功告成,成功安装xformers时,出现了cc1plus: fatal error: cuda_runtime.h: No such file or directory错误,折腾一下午,终于解决。
在这里插入图片描述

解决方案

首先查看了/usr/local/cuda/include和/usr/local/cuda-11.2/include文件夹,发现cuda_runtime.h文件已然存在。

搜到好多方案都说要在~/.bashrc文件添加如下CUDA路径,我一直添加的都是后两行,source ~/.bashrc更新bashrc文件后,bug一直存在,经过多方尝试,在~/.bashrc文件后面添加下述三行,xformer才能安装成功。看来第一行的CPATH才是最重要的。

export CPATH=/usr/local/cuda-11.2/targets/x86_64-linux/include:$CPATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.2/targets/x86_64-linux/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.2/bin:$PATH

在这里插入图片描述
经过一顿折腾,终于成功安装xformers,运行模型stable-diffusion-2-1生成 768 × 768 768 \times 768 768×768大小的图片,GPU内存占用不到10G,可以愉快玩耍了。

后果

xformers成功安装之后,运行如下命令行,生成下述九宫格可爱的喵咪图片。

python scripts/txt2img.py --prompt “a best-quality photo of a cute cat” --ckpt v2-1_768-ema-pruned.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768 --device cuda

在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误提示表示找不到cuda_runtime.h文件或者无法访问该文件。可能是CUDA没有正确安装,也可能是编译器没有正确的包含CUDA库文件路径。需要检查CUDA的安装目录和编译器的设置来排除问题。 ### 回答2: fatal error: cuda_runtime.h: no such file or directory是一个常见的错误消息,通常发生在基于CUDA的编程环境中。该错误可能是由以下几个原因引起的: 1.未安装CUDA Toolkit。在使用CUDA编程之前,必须先安装CUDA Toolkit,因为它包含必要的库文件和头文件。如果未安装CUDA Toolkit,则无法找到cuda_runtime.h文件。 2.未正确设置CUDA环境变量。在安装CUDA Toolkit后,必须设置CUDA的环境变量,以便编译器可以找到CUDA头文件、库文件和驱动程序。如果未正确设置CUDA环境变量,则编译器无法找到cuda_runtime.h文件。 3.使用错误的编译器或编译器选项。如果使用错误的编译器或编译器选项,则编译器可能无法找到cuda_runtime.h文件。确保使用适当的编译器和选项。 4.文件路径错误。如果cuda_runtime.h文件不在正确的路径中,则编译器无法找到它。确保文件路径正确。 要解决这个问题,您可以采取以下步骤: 1.确保您已经安装了CUDA Toolkit,并且已经正确设置了CUDA环境变量。 2.确保您正在使用适当的编译器和编译器选项。 3.检查cuda_runtime.h文件是否存在于正确的路径中。 4.如果您已经采取上述步骤,但仍然无法解决问题,请查看CUDA开发者论坛或向CUDA支持团队寻求帮助。他们可以为您提供更专业的支持和建议。 ### 回答3: 出现fatal error: cuda_runtime.h: no such file or directory这个错误,一般是因为未正确安装CUDA或者编译环境没有正确配置。下面就从这两方面进行详细解答。 1. 未正确安装CUDA 如果在Linux或者Windows系统上需要使用CUDA,那么需要先安装CUDA Toolkit。安装过程可以参考NVIDIA官方文档:https://docs.nvidia.com/cuda/index.html#installation-guides。如果是使用conda包管理器安装,可以使用以下命令: ``` conda install cudatoolkit=10.2 ``` 安装完成后,需要将CUDA相关路径添加到系统环境变量中,这样编译器才能找到CUDA相关文件。 2. 编译环境没有正确配置 如果已经安装CUDA,但是仍然出现了fatal error: cuda_runtime.h: no such file or directory这个错误,那么很可能是编译器没有正确配置CUDA的路径。在Linux和Windows系统上,需要将CUDA相关的路径添加到系统环境变量中。 以Linux为例,需要将以下环境变量添加到~/.bashrc文件中: ``` export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH ``` 如果使用的是nvcc编译器,还需要设置CUDA_ARCH和NVCCFLAGS环境变量: ``` export CUDA_ARCH="-gencode=arch=compute_30,code=sm_30" export NVCCFLAGS="$NVCCFLAGS $CUDA_ARCH" ``` 如果使用的是gcc或者clang等其他编译器,那么需要在编译命令中添加以下参数: ``` -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lcudart ``` 总之,需要保证编译器可以正确地找到CUDA相关的头文件和库文件。 除此之外,还有一些情况可能会导致该错误的出现,如CUDA版本不兼容、系统环境配置有误等等。因此,在出现该错误时,需要仔细检查CUDA是否正确安装,并检查编译环境配置是否正确。如果还是无法解决问题,可以查看编译日志,看看哪里出了问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹤宁

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值