Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

源码中的部分 gflags 的手动赋值方式 #33404

Closed
lytning98 opened this issue Jun 8, 2021 · 11 comments
Closed

源码中的部分 gflags 的手动赋值方式 #33404

lytning98 opened this issue Jun 8, 2021 · 11 comments
Assignees

Comments

@lytning98
Copy link

lytning98 commented Jun 8, 2021

由于 issue #33208 中的原因,我需要手动为源码中的一些 gflags 赋值,如

DEFINE_string(cudnn_dir, "",
"Specify path for loading libcudnn.so. For instance, "
"/usr/local/cudnn/lib. If empty [default], dlopen "
"will search cudnn from LD_LIBRARY_PATH");

但我尝试过直接 export FLAGS_cudnn_dir=xxx 无效,使用 paddle.fluid.set_flags 则报错

>>> paddle.fluid.set_flags({'FLAGS_cudnn_dir': '/somewhere/anaconda3/lib'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/data/zhaoyao/anaconda3/envs/paddle/lib/python3.8/site-packages/paddle/fluid/framework.py", line 6159, in set_flags
    raise ValueError(
ValueError: Flag FLAGS_cudnn_dir cannot set its value through this function.

请问在使用paddlepaddle的时候如何正确赋值这些 flags ?

paddlepaddle 版本为 2.1

@paddle-bot-old
Copy link

paddle-bot-old bot commented Jun 8, 2021

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档常见问题历史IssueAI社区来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQGithub Issue and AI community to get the answer.Have a nice day!

@heavengate
Copy link
Contributor

Linux/Mac环境可以试下export FLAGS_cudnn_dir=/somewhere/anaconda3/lib
Windows环境可以试下set FLAGS_cudnn_dir=/somewhere/anaconda3/lib

@lytning98
Copy link
Author

Linux/Mac环境可以试下export FLAGS_cudnn_dir=/somewhere/anaconda3/lib
Windows环境可以试下set FLAGS_cudnn_dir=/somewhere/anaconda3/lib

@heavengate 我试过这种方法,但并没有效果,从 glog debug 输出来看运行 paddle 时相关的 flags 依然是空值

@heavengate
Copy link
Contributor

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/somewhere/anaconda3/lib试下呢

@lytning98
Copy link
Author

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/somewhere/anaconda3/lib试下呢

修改环境变量不起作用,目前应该只有设置这个 gflags 可以解决问题...

参考 issue #33208 的讨论,简单来说,搜索动态链接库的逻辑目前存在一些问题,gflags 给出的目录是第一优先级,环境变量是第三优先级,而第二优先级是硬编码的绝对路径,在这个绝对路径下能找到 cudnn 的情况下就直接用这个 cudnn 了,尽管版本可能不对。。而这个在 /usr 下的绝对路径又需要 root 权限才能修改,所以除了修改源码重新编译之外我只能通过修改这个 gflags 的值来解决问题...

所以请问是否有办法能够设置这个 flags 的值呢...

@lytning98
Copy link
Author

@heavengate 所以这些 gflags 的值能否手动设定呢?我在源码中发现了为数不少的类似定义的 flags,如果无法手动设置那么存在的意义是什么呢。。

@zhwesky2010
Copy link
Contributor

zhwesky2010 commented Jul 21, 2021

@lytning98 #33722 已修复搜索路径的问题

@gujingxiao
Copy link

@lytning98 #33722 已修复搜索路径的问题

看起来好像这个commit并没有被merge进去,所以这个问题在2.1.2版本中依然存在。如果使用conda存在这个问题的话,经过我个人实测有效的方法:
1 conda activate 自己的环境
2 vim ~/.bashrc
3. 把里面的系统cuda环境注掉
4. source ~/.bashrc
5. 再重新conda activate 自己的环境

然后就可以正常使用了。我这边系统里默认的是cuda11.1和cudnn8.0。conda里面装的是cuda11.2和cudnn8.1。使用了上述方法,就可以使用,不会再报cudnn mismatch的问题了。

@TJJTJJTJJ
Copy link

所以现在还是没有办法解决cudnn的搜索路径问题吗?

@TJJTJJTJJ
Copy link

@lytning98 通过conda install的方法,paddlepaddle-gpu 哪个版本修复了呢

@lytning98
Copy link
Author

lytning98 commented Oct 29, 2021

@lytning98 通过conda install的方法,paddlepaddle-gpu 哪个版本修复了呢

请参考社区开发者的回复,我只是普通用户目前已不再使用 paddlepaddle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants