ARM版银河麒麟修炼之路
第一章 ARM版银河麒麟源码编译安装开源混合整数规划器SCIP和PySCIPOpt
前言
目前在研的项目需要用到整数规划,SCIP作为性能较好的开源混合整数规划器之一,成为我的不二之选,利用与之配套的PySCIPOpt包,可以通过python方便进行调用和求解整数规划问题。但由于SCIP官网只提供了X86版的安装包,对于ARM版的银河麒麟,只能通过源码编译的方式安装。
本文参考了前辈们的文章ubuntu安装SCIP并在pyomo中调用,对于编译阶段提供了很大帮助,但这些文章均是针对X86架构系统,对于ARM版银河麒麟,重点需要解决编译环境搭建的问题。
一、本机软硬件配置
由于众所周知的原因,单位电脑不能联网,只能采用虚拟机安装ARM版银河麒麟,利用虚拟机搭建好环境后,再将环境依赖文件上传到单位电脑,虚拟机安装步骤参考qemu虚拟机 安装银河麒麟V10 arm架构系统 桌面版。
CPU采用QEMU模拟Cortex-A72 4核8线程,为ARMv8架构,与飞腾D2000/8相同,模拟的CPU参数如下:
processor : 7
model name : ARMv8 CPU
BogoMIPS : 125.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3
系统采用银河麒麟V10桌面版ARM版,系统内核信息如下,与ubuntu20.04LTS相同:
Linux chaoyue-dt3000f4 5.4.18-77.66.jc-generic #01 SMP Wed Jul 19 16:31:06 CST 2023 aarch64 aarch64 aarch64 GNU/Linux
二、编译环境搭建
按照下列步骤完成编译环境搭建,编译所需的依赖库均参考自SCIP官方编译指南。如果需要在实体机上安装PySCIPOpt,请同步在虚拟机上按照本节内容搭建环境,并安装SCIP。
1.添加Ubuntu20.04 apt源
由于银河麒麟V10官方源缺少编译所需的部分依赖库,因此通过ubuntu20.04的apt源进行安装,编译所需的依赖库与银河麒麟V10兼容,更换源的方法参考ubuntu20.04.2 linux arm更换清华源,银河麒麟在替换sources.list后,可能强制更新回官方源,可以在/etc/apt/sources.list.d/目录下新建一个ubuntu.list文件,将国内源镜像地址拷贝到该文件,保存后再执行sudo apt update即可。
2.apt安装依赖库
虚拟机执行下列命令下载依赖库:
sudo apt-get --download-only install wget cmake g++ m4 xz-utils libgmp-dev unzip zlib1g-dev libboost-program-options-dev libboost-serialization-dev libboost-regex-dev libboost-iostreams-dev libtbb-dev libreadline-dev pkg-config git liblapack-dev libgsl-dev flex bison libcliquer-dev gfortran file dpkg-dev libopenblas-dev rpm libz-dev libgmp-dev libreadline-dev libncurses-dev
下载完成后,将虚拟机/var/cache/apt/archives目录下的所有文件拷贝到实体机任意位置,进入拷贝的目录,在虚拟机上执行下列命令安装依赖库:
sudo dpkg -i *.deb
3.源码编译安装其它依赖库
由于Hmetis、Metis、Ipopt with Mumps、Gmp、LAPACK无法通过apt安装,因此采用源码编译的方法安装,执行下列命令下载源代码:
wget -O hmetis-1.5-linux.tar.gz http://glaros.dtc.umn.edu/gkhome/fetch/sw/hmetis/hmetis-1.5-linux.tar.gz
wget -O metis-5.1.0.tar.gz http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz
wget -O Ipopt-3.14.14.tar.gz https://github.com/coin-or/Ipopt/archive/refs/tags/releases/3.14.14.tar.gz
wget -O Mumps-3.0.zip https://github.com/coin-or-tools/ThirdParty-Mumps/archive/refs/heads/stable/3.0.zip
wget -O MUMPS-5.6.2 https://coin-or-tools.github.io/ThirdParty-Mumps/MUMPS_5.6.2.tar.gz
wget -O lapack-3.12.0.tar.gz https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz
wget -O gmp-6.3.0.tar.xz https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz
将下载后的源代码文件上传至实体机,解压到任意位置。
1.安装metis
由于是64位CPU,打开metis目录下的include/metis.h文件,对第33行和43行进行修改。
33: #define IDXTYPEWIDTH 64
43: #define REALTYPEWIDTH 64
返回metis所在目录,执行下列命令编译安装,其中prefix为安装位置,不加prefix则默认安装至/usr/local/。
make config prefix=~/metis-5.1.0/
make
make install
2.安装LAPACK
打开LAPACK所在目录,执行下列命令安装,其中-DCMAKE_INSTALL_LIBDIR=$HOME/.local/lapack是LAPACK安装目录,根据需要修改。也可不加此参数,直接安装到默认位置。
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=$HOME/.local/lapack ..
cmake --build . -j --target install
3.安装GMP
进入GMP目录,执行下列命令进行安装:
./configure
make
sudo make install
4.安装IPOPT
进入IPOPT目录,执行下列命令进行安装:
./configure
make
sudo make install
5.安装Hmetis
Hmetis是可执行二进制文件,直接解压即可。
三、编译安装SCIP
从SCIP下载地址下载SCIP源代码,注意选择平台为linux,或执行下列命令下载,然后上传至实体机。
wget -O scipoptsuite-8.1.0.tgz https://scipopt.org/download.php?fname=scipoptsuite-8.1.0.tgz
在实体机上执行下列命令解压scip,执行以下命令生成编译信息:
tar -xvzf scip-8.1.0.tgz
cd scip-8.1.0
mkdir build
cd build
cmake ..
在build目录下ug/CMakeFiles/parascip.dir/link.txt中添加编译参数-lpthread,保存,然后输入以下命令编译安装,如果不修改的话,在编译阶段会提示pthread链接错误。
make
make check
sudo make install
在终端输入scip,出现以下信息,代表SCIP安装完成,可以建模享用强大的开源求解器了。
四、编译安装PySCIPOpt
首先在虚拟机上按照上述步骤安装SCIP,然后执行以下命令下载PySCIPOpt源码,注意PyScipOpt版本要与SCIP版本对应,此处使用4.4.0版本,对应SCIP8.x版本。
wget -O PySCIPOpt-4.4.0.zip https://github.com/scipopt/PySCIPOpt/archive/refs/tags/v4.4.0.zip
进入PySCIPOpt目录,激活python虚拟环境,注意虚拟环境要与实体机相同,然后执行下列命令安装:
python -m pip install .
输出以下结果即为安装成功,同时会在directory位置生成.whl文件,将该文件上传至实体机,在实体机上使用pip install安装即可。
终端进入python,然后import pyscipopt试一下,出现以下界面表示安装成功,pyscipopt实际上是python调用scip的接口,求解过程仍然是使用scip,所以性能上差别不大,但是python建模那是相当方便啊,尽情享用吧。
文章来源:https://www.toymoban.com/news/detail-859674.html
总结
本文介绍了ARM版银河麒麟安装SCIP和PySCIPOpt的方法,如有问题可留言,后续将继续撰写国产软硬件平台适配的相关文章。文章来源地址https://www.toymoban.com/news/detail-859674.html
到了这里,关于【ARM版银河麒麟源码编译安装开源混合整数规划器SCIP和PySCIPOpt】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!