PKU-IDEA / OpenPARF

🕹 OpenPARF: An Open-Source Placement and Routing Framework for Large-Scale Heterogeneous FPGAs with Deep Learning Toolkit
BSD 3-Clause "New" or "Revised" License
116 stars 13 forks source link

编译完成之后出现ImportERROR undefined symbol的问题 #3

Closed SzzFaker closed 1 year ago

SzzFaker commented 1 year ago

我在docker容器中安装的时候因为出现camkelist.txt文档的报错而无法进行(修改camkelist.txt文件可以消除error但是我担心出现问题所以没有使用docker安装) 在centos7的linux系统中我安装了22.11.1-4版本下的mambaforge,并安装了对应的gurobi9.5,并安装了GCC7.5(安装GCC在所有步骤之前)在cmake过程中仅出现了warning: image 同时可以正常make -j8和make install。 在完成所有步骤之后开始运行openparf就出现报错: image 我尝试了许多办法依旧报错,请问这个问题应该如何解决?

magic3007 commented 1 year ago

Firstly, what issues did you encounter when using docker build? Docker environments are usually quite stable, so it would be helpful if you could list out any errors you encountered while using Docker.

Secondly, it appears that a symbol similar to torch::nn::detail::RNNCellImplBase is missing, but RNN is not used in direct_lg.

Could you please provide the detailed steps you took in both scenarios? This will make it easier to identify and resolve the problem.

SzzFaker commented 1 year ago

我现在将重新尝试docker,本人对docker并不熟悉,不确定安装之后是继续在docker中运行还是复制docker中的内容到服务器中。 同时我将源码构建的步骤复述:首先我的Linux服务器本身安装的是GCC7.3,因此第一次源码编译的时候报错导致cmake失败,在我更新GCC至7.5版本之后成功编译,我的GCC7.5是安装在服务器中usr/local/下的,gcc -v显示的也是7.5版本,之后我在本地安装了上述的22年版本的mamba,成功构建虚拟环境。但是我的gurobi在执行setup.py的时候安装的内容是在别的路径下的,我将其setup出来的site-package内容放在mamba的虚拟环境路径下(/home/liangk/mambaforge/envs/openparf/lib/python3.7/site-packages/)下,此时,cmake编译报错的gurobi不再报错,仅剩一些warning(经查阅资料,这些warning应该不会影响编译,如果您需要我可以提供相关的warning),并在之后的make -j8和make install中均无报错,然后我构建了benchmarks的连接之后运行openparf.py命令,报错undefined symbol

SzzFaker commented 1 year ago

在docker容器中可以运行,因为之前运行docker的时候系统的gcc还是7.3版本的,在更新之后就不会报错了,但是仍旧存在问题(并非编译的问题),我用docker cp openparf:/home/user/szz/openparf /home/user/szz/Openparf命令将install的文件保存在了服务器主机上并用mamba配置了环境(根据Github上的内容),运行,不再报错编译问题而是库导入的问题: image 请问是否选择在docker容器内部运行,并仅复制运行的结果到服务器主机上更加稳妥?

magic3007 commented 1 year ago

Copying executable files out of the Docker container can indeed cause issues. I recommend running the process within the Docker container and then copying the results to the host. Additionally, I suggest using Docker's volume mounting feature, which allows you to map a folder from the host into the Docker container. This way, you can directly access and modify files on the host from within the container.

To achieve this, you can use the -v or --volume flag when running the Docker container command. For example:

docker run -v /path/on/host:/path/in/container image_name

Replace /path/on/host with the path to the desired folder on the host and /path/in/container with the corresponding path inside the container. This will establish a two-way connection, enabling you to work seamlessly with files on both the host and the container.

Please let me know if you have any further questions or need additional assistance.