当前位置:   article > 正文

使用ninja包在pychon中编译c++中遇到的一些问题_nvcc fatal : unsupported gpu architecture 'compute

nvcc fatal : unsupported gpu architecture 'compute_89

本篇博客只是做个记录,如果可以帮助到您,自然是最好。

一、配置和需求

服务器配置:

系统:ubuntu22.04

显卡:4090(24G)

cuda:11.8

pytorch版本:2.0

tensorflow版本:2.12

python:3.10

个人pc配置:

系统:win11

显卡:3060

需求:在pc的pycharm上使用ssh远程连接服务器。

心得:远程连接一般不会出太大问题,但是涉及到了在pycharm中编译c++,就出现了很多问题,一些问题,在网上并没有找到答案,是自己机缘巧合解决的,因此特意写个博客,希望可以帮助更多的人,因为解决这些问题,我做在电脑面前一整天,翻遍各个网站,最后快要放弃的两分钟,解决了。

重要一点:这个服务器上的anaconda3环境是共享的,服务器上的每个用户都可以使用,我只是其中一个,所以后面涉及到给重装cuda的操作,一律放弃。

问题一、

使用pycharm远程连接服务器的时,出现了报错,我的解决问题之路开始了。

报错如下:

  1. Couldn't refresh skeletons for remote interpreter
  2. failed to run generator3/__main__.py for sftp://xhangxin@192.168.5.22:22/usr/local/anaconda3/envs/score/bin/python, exit code 1, stderr:
  3. -----
  4. Failed to process 'torchaudio.lib._torchaudio_ffmpeg' while nothing yet: [Errno 13] Permission denied: '/usr/local/anaconda3/envs/score/lib/python3.10/site-packages/torchaudio/lib/_torchaudio_ffmpeg.so'
  5. Traceback (most recent call last):
  6. File "/home/lihaiyuan/.pycharm_helpers/generator3/__main__.py", line 216, in <module>
  7. main()
  8. File "/home/lihaiyuan/.pycharm_helpers/generator3/__main__.py", line 188, in main
  9. generator.discover_and_process_all_modules(name_pattern=args.name_pattern,
  10. File "/home/lihaiyuan/.pycharm_helpers/generator3/core.py", line 440, in discover_and_process_all_modules
  11. self.process_module(mod.qname, mod.path)
  12. File "/home/lihaiyuan/.pycharm_helpers/generator3/core.py", line 514, in process_module
  13. status = self.reuse_or_generate_skeleton(mod_name, mod_path, sdk_skeleton_state)

解决办法:

查了很多资料,也做了很多尝试,发现下面这种解决办法是可以的

直接删除自己账户下的“.pycharm_helper”这个文件夹。这个文件夹在home路径下,但是它是隐藏的,你如果不放心直接删除会有问题,你可以把它先拷到自己u盘里,在删除。

注:我看网上有人说是python版本的问题,反正对我没用。

问题二、

因为我已经解决这个问题,当时错误信息没保存,但大概是这个错误信息

错误信息:

subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1

解决办法:

首先确保你已经安装了ninja这个包,如果没有安装,可以使用下面命令安装

pip install ninja -i https://pypi.tuna.tsinghua.edu.cn/simple

如果已经安装好了,可以使用ninja --version查看版本

上面报错的信息大概就是说,使用“ninja -v”查看不了你的版本

所有找到报错信息的那个文件(需要是服务器上的源文件) 好像是cpp_extension.py这个文件

把[‘ninja‘, ‘-v‘]改成[‘ninja‘, ‘--version‘]。

:如果你可以使用“ninja -v”这个命令查看到你安装的版本,这样做大概率解决不了你的问题,请自寻他法。如果你可以使用“ninja -version”,这是一个‘-’,查看版本,那你就改成这个。

网上很多人说要禁用ninja,反正我是没找到那个文件,还有人说,我这种办法不管用,但是这个确实解决了我的问题。

问题三、

解决这个问题花费了我大部分的时间

问题如下:

  1. nvcc fatal : Unsupported gpu architecture 'compute_89'
  2. ninja: build stopped: subcommand failed.

这个89就是指4090的算力,需要和cuda版本匹配。cuda支持的最大算力,要大于等于89

我在网上看到的降低算力,也查了cuda11.8支持的算力,都没解决我的问题。

还有人说解决办法是降低pytorch的版本到1.5之下等等。我开头也说了服务器上是共享环境,我不能降低pytorch版本,或者更改cuda版本,这样万一出错,让别人也用不了,就更麻烦了。

解决办法如下:

/home/xx/.cache/torch_extensions/py310_cu118/fused/

找到上面路径下的build.ninja这个文件,这个文件就是编译ninja的。上面的路径,你们的不一定是这个,红色的xx代表用户名,每个人的应该不一样,自行更改。

双击打开build.ninja这个文件,

 将89改为86,你们的不一定是这个,89代表当前机器的算力,86代表你的cuda支持的算力,这也是一种变相的降低算力吧!

然后进入这个build.ninja的目录下,输入ninja重新编译,这样就好了。

这个方法不一定对你们有用,是我在做出无数次尝试后发现的。

还有一个问题就是,如果说你缺少了fused.so这种文件,你就到这个文件所在的目录,去输入ninja,重新编译一下就好了。

问题4

错误如下:

RuntimeError: Ninja is required to load C++ extensions

就是说找不到Ninja这个包,但是明明你已经安装了。

这时候去服务器上输入 which ninja,找到你的包在那

然后 ,添加环境变量。

 

 就可以了。

希望以上的内容对看到的读者,有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/98191
推荐阅读
相关标签
  

闽ICP备14008679号