PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
21.66k stars 5.44k forks source link

Not install cuda on windows #64083

Open xuxinyi389 opened 1 week ago

xuxinyi389 commented 1 week ago

PR Category

PR Types

Description

总的来说安装步骤可以细分为3步: 总的来说安装步骤可以细分为3步: step1:找nvidia-cuda包, 与Linux相同,使用pip安装 step2: 安装nvidia包,相关包的安装目录层级也与Linux相同。 step3: 动态加载相关dll,与Linux不同,Linux可以使用ELF工具对单个dll进行设置rpath,但windows没有相关工具。 需要解决的问题:存在跨目录依赖的dll加载,即a.dll依赖于b.dll。但两者不在一个目录,且所在目录均不在系统搜索路径PATH下,该如何正确加载的问题。 解决方案: 扩展windows的dll加载机制,支持跨目录依赖情形下的dll加载,本PR已解决。实际使用中dll的正确加载还依赖于cuda_bin_dir值的准确传递,正常使用的话如;import paddle,cuda_bin_dir的值始终是正确的,但在单测中的测试命令如下: "C:\Program Files\CMake\bin\cmake.exe" "-E" "env" "PYTHONPATH=C:/workspace/Paddle/build/python" "C:/Python310/python.exe" "C:/workspace/Paddle/tools/test_runner.py" "test_sequence_conv_deprecated"中指定PYTHONPATH后,则cuda_bin_dir的值被C:/workspace/Paddle/build/python/paddle/../nvidia,但相关nvidia的库实际安装位置在“C:\Python310\Lib\site-packages\nvidia”目录下,因此按照单测的使用方式会找不到cuda相关的库,需要调整PYTHONPATH的值。总的来说安装步骤可以细分为3步: step1:找nvidia-cuda包, 与Linux相同,使用pip安装 step2: 安装nvidia包,相关包的安装目录层级也与Linux相同。 step3: 动态相关dll,与Linux不同,Linux可以使用ELF工具对单个dll进行设置rpath,但windows没有相关工具。 需要解决的问题:存在跨目录依赖的dll加载,即a.dll依赖于b.dll。但两者不在一个目录,且所在目录均不在系统搜索路径PATH下,该如何正确加载的问题。 解决方案: 扩展windows的dll加载机制,支持跨目录依赖情形下的dll加载,本PR已解决。实际使用中dll的正确加载还依赖于cuda_bin_dir值的准确传递,正常使用的话如;import paddle,cuda_bin_dir的值始终是正确的,但在单测中的测试命令如下: "C:\Program Files\CMake\bin\cmake.exe" "-E" "env" "PYTHONPATH=C:/workspace/Paddle/build/python" "C:/Python310/python.exe" "C:/workspace/Paddle/tools/test_runner.py" "test_sequence_conv_deprecated"中指定PYTHONPATH后,则cuda_bin_dir的值被C:/workspace/Paddle/build/python/paddle/../nvidia,但相关nvidia的库实际安装位置在“C:\Python310\Lib\site-packages\nvidia”目录下,因此按照单测的使用方式会找不到cuda相关的库,需要调整PYTHONPATH的值。

paddle-bot[bot] commented 1 week ago

你的PR提交成功,感谢你对开源项目的贡献! 请关注后续CI自动化测试结果,详情请参考Paddle-CI手册。 Your PR has been submitted. Thanks for your contribution! Please wait for the result of CI firstly. See Paddle CI Manual for details.