PaddlePaddle / Paddle

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

risc-v芯片上编译paddle报错 #61770

Open a-strong-python opened 7 months ago

a-strong-python commented 7 months ago

bug描述 Describe the Bug

环境:

执行代码

cmake -DPY_VERSION=3.8 -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS} -DPYTHON_LIBRARY=${PYTHON_LIBRARY}  -DWITH_GPU=OFF -WITH_RISCV=ON
make TARGET=RISCV64_GENERIC -j64

报错: paddle/pir/CMakeFiles/pir.dir/build.make:647: recipe for target 'paddle/pir/CMakeFiles/pir.dir/dialect/shape/utils/dim_expr_simplify.cc.o' failed make[2]: [paddle/pir/CMakeFiles/pir.dir/dialect/shape/utils/dim_expr_simplify.cc.o] Error 1 make[2]: Waiting for unfinished jobs.... cc1plus: all warnings being treated as errors paddle/pir/CMakeFiles/pir.dir/build.make:699: recipe for target 'paddle/pir/CMakeFiles/pir.dir/pass/pass.cc.o' failed make[2]: [paddle/pir/CMakeFiles/pir.dir/pass/pass.cc.o] Error 1 CMakeFiles/Makefile2:5112: recipe for target 'paddle/pir/CMakeFiles/pir.dir/all' failed make[1]: [paddle/pir/CMakeFiles/pir.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... Error copying directory from "/root/Paddle/third_party/pocketfft" to "/root/Paddle/third_party/pocketfft/src/extern_pocketfft". CMakeFiles/extern_pocketfft.dir/build.make:112: recipe for target 'third_party/pocketfft/src/extern_pocketfft-stamp/extern_pocketfft-build' failed make[2]: [third_party/pocketfft/src/extern_pocketfft-stamp/extern_pocketfft-build] Error 1 CMakeFiles/Makefile2:4717: recipe for target 'CMakeFiles/extern_pocketfft.dir/all' failed make[1]: [CMakeFiles/extern_pocketfft.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: [all] Error 2

其他补充信息 Additional Supplementary Information

No response

a-strong-python commented 7 months ago

如果需要的话,我可以将我的编译云环境链接分享给您,以便快速复现该问题!

zhiboniu commented 7 months ago

好的,辛苦提供一下云环境吧

zhiboniu commented 7 months ago

请问该编译命令的来源是哪里,paddle文档中没有搜索到risc相关编译指令。

a-strong-python commented 7 months ago

请问该编译命令的来源是哪里,paddle文档中没有搜索到risc相关编译指令。

这是之前提交的一个 pr https://github.com/PaddlePaddle/Paddle/commit/d3db3835ec14dc5ca8d4c8a769164103f4703c64

zhiboniu commented 7 months ago

image 看起来这个pr并没有合入paddle的任何分支,所以并没有生效

skywalk163 commented 7 months ago

我在算能riscv云上面可以编译成功,就是使用了那个pr里的代码进行了修改,这是我的操作记录:https://blog.csdn.net/skywalk8163/article/details/136264198

现在我的问题是,import paddle会报错:

# python3 -c "import paddle"
Error: Can not import paddle core while this file exists: /usr/local/lib/python3.8/dist-packages/paddle/base/libpaddle.so
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/core.py", line 267, in <module>
    from . import libpaddle
ImportError: /usr/local/lib/python3.8/dist-packages/paddle/base/libpaddle.so: undefined symbol: __atomic_exchange_1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/paddle/__init__.py", line 30, in <module>
    from .base import core  # noqa: F401
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/__init__.py", line 38, in <module>
    from . import (  # noqa: F401
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/backward.py", line 25, in <module>
    from . import core, framework, log_helper, unique_name
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/core.py", line 377, in <module>
    if not avx_supported() and libpaddle.is_compiled_with_avx():
NameError: name 'libpaddle' is not defined

百度搜索发现有人提到-latomic 但是我不清楚下一步应该怎么做。

skywalk163 commented 7 months ago

我在算能riscv云上面可以编译成功,就是使用了那个pr里的代码进行了修改,这是我的操作记录:https://blog.csdn.net/skywalk8163/article/details/136264198

现在我的问题是,import paddle会报错:

# python3 -c "import paddle"
Error: Can not import paddle core while this file exists: /usr/local/lib/python3.8/dist-packages/paddle/base/libpaddle.so
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/core.py", line 267, in <module>
    from . import libpaddle
ImportError: /usr/local/lib/python3.8/dist-packages/paddle/base/libpaddle.so: undefined symbol: __atomic_exchange_1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/paddle/__init__.py", line 30, in <module>
    from .base import core  # noqa: F401
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/__init__.py", line 38, in <module>
    from . import (  # noqa: F401
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/backward.py", line 25, in <module>
    from . import core, framework, log_helper, unique_name
  File "/usr/local/lib/python3.8/dist-packages/paddle/base/core.py", line 377, in <module>
    if not avx_supported() and libpaddle.is_compiled_with_avx():
NameError: name 'libpaddle' is not defined

百度搜索发现有人提到-latomic 但是我不清楚下一步应该怎么做。

该问题已经解决,参见这个issue:https://github.com/PaddlePaddle/Paddle/issues/62037

skywalk163 commented 7 months ago

报错: paddle/pir/CMakeFiles/pir.dir/build.make:647: recipe for target 'paddle/pir/CMakeFiles/pir.dir/dialect/shape/utils/dim_expr_simplify.cc.o' failed make[2]: [paddle/pir/CMakeFiles/pir.dir/dialect/shape/utils/dim_expr_simplify.cc.o] Error 1 make[2]: Waiting for unfinished jobs.... cc1plus: all warnings being treated as errors paddle/pir/CMakeFiles/pir.dir/build.make:699: recipe for target 'paddle/pir/CMakeFiles/pir.dir/pass/pass.cc.o' failed make[2]: [paddle/pir/CMakeFiles/pir.dir/pass/pass.cc.o] Error 1 CMakeFiles/Makefile2:5112: recipe for target 'paddle/pir/CMakeFiles/pir.dir/all' failed make[1]: [paddle/pir/CMakeFiles/pir.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... Error copying directory from "/root/Paddle/third_party/pocketfft" to "/root/Paddle/third_party/pocketfft/src/extern_pocketfft". CMakeFiles/extern_pocketfft.dir/build.make:112: recipe for target 'third_party/pocketfft/src/extern_pocketfft-stamp/extern_pocketfft-build' failed make[2]: [third_party/pocketfft/src/extern_pocketfft-stamp/extern_pocketfft-build] Error 1 CMakeFiles/Makefile2:4717: recipe for target 'CMakeFiles/extern_pocketfft.dir/all' failed make[1]: [CMakeFiles/extern_pocketfft.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: [all] Error 2

可以尝试在third_party目录执行:git submodule update --init --recursive ,然后重新cmake / make试试。