首页 > 编程语言 >【ARM版银河麒麟源码编译安装开源混合整数规划器SCIP和PySCIPOpt】

【ARM版银河麒麟源码编译安装开源混合整数规划器SCIP和PySCIPOpt】

时间:2024-03-25 17:02:57浏览次数:29  
标签:SCIP tar dev 编译 PySCIPOpt 源码 安装

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.源码编译安装其它依赖库

由于HmetisMetisIpopt with MumpsGmpLAPACK无法通过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建模那是相当方便啊,尽情享用吧。
在这里插入图片描述


总结

本文介绍了ARM版银河麒麟安装SCIP和PySCIPOpt的方法,如有问题可留言,后续将继续撰写国产软硬件平台适配的相关文章。

标签:SCIP,tar,dev,编译,PySCIPOpt,源码,安装
From: https://blog.csdn.net/m0_61060696/article/details/136897776

相关文章

  • 基于java中的springboot框架实现学生宿舍管理系统的设计与开发演示【附项目源码+论文
    基于springboot实现学生宿舍管理系统的设计与开发演示摘要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱,出错率高,信息安全性差,劳动强......
  • 基于java中的SpringBoot框架实现企业客户管理系统演示【附项目源码+论文说明】
    基于SpringBoot实现企业客户管理系统演示摘要本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企业客户管理系统的当前背景以及系统开发的目的,后......
  • 基于java中的springboot框架实现学生宿舍管理系统的设计与开发演示【附项目源码+论文
    基于springboot实现学生宿舍管理系统的设计与开发演示摘要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱,出错率高,信息安全性差,劳动强......
  • 基于java中的SpringBoot框架实现企业客户管理系统演示【附项目源码+论文说明】
    基于SpringBoot实现企业客户管理系统演示摘要本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企业客户管理系统的当前背景以及系统开发的目的,后......
  • 优秀学员作品:SpringBoot茶叶商城系统源码+运行教程+开发文档(参考论文)
    今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的茶叶商城系统,主要实现了茶叶采购,出售茶叶的流程,除基础脚手架外,实现的功能有:前台:首页、商品列表、新闻列表、个人中心、购物车、付款页面、充值列表、收藏列表、订单列表等。后台:供货商管理、采......
  • 【附源码】JAVA计算机毕业设计银行助学贷款管理系统(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及和深化,越来越多的学生选择通过助学贷款来支持自己的学业。然而,传统的助学贷款管理方式往往存在效率低下、信息不透明、审批流程繁......
  • 【附源码】JAVA计算机毕业设计银行排号系统(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今信息化、数字化的时代,银行业作为金融体系的基石,其服务质量和效率直接影响到客户的满意度和忠诚度。然而,传统的银行排号系统往往存在着效率低下......
  • 【附源码】JAVA计算机毕业设计音频服务系统(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和人们生活水平的提高,音频服务在人们的日常生活中扮演着越来越重要的角色。从个人娱乐到商业应用,音频内容的需求日益旺盛,音频......
  • 基于spring boot的校园新闻网站(毕业设计附源码)
    收藏关注不迷路||项目不适合可以浏览博主其他项目文章,特殊需要可联系博主1.项目介绍本校园新闻网站系统旨在深入探讨如何运用JAVA语言构建一个校园新闻网站。在整个开发过程中,我们将严格遵循标准的软件开发流程,确保每个阶段的工作都得到精心规划和执行。系统架构方面,我......
  • 记一次Java源码编译,三方包下载不下来的问题处理
    dataease项目后端的源码编译问题dataease后端项目,pom里有一个包,无法下载。源码里的定义如下:项目后端pom定义<!--calcite核心包--><dependency><groupId>org.apache.calcite</groupId><artifactId>calcite-core</artifactId><version>${calcite-core.......