OpenCAEPoro安装与测试(ASC 2024)

首先简单总结一下经验:

在之前的测试和学习中,由于自己是虚拟机或者云服务器,有root权限,经常无脑增删文件(主要是为了图省事,看见报错就加回来,多出来就删除),但是在经过这次以用户的身份去访问服务器并且配置环境,让我学会了静下心来,按照readme和相关文件的要求一步一步去做,也认识到了拿着root权限胡作非为是一个很严重的错误。毕竟以后无论是继续使用学校服务器还是进入公司工作,都是只有用户权限,所以对于文件的各种操作有一个清晰的思路是相当重要的。

PS:如果是手动输入修改脚本文件的内容,一定要用英文输入法!!!

下面来讲述一下配置环境的操作(按照readme的顺序):

1.OpenCAEPoro安装

在命令行执行下述命令

git clone https://github.com/OpenCAEPlus/OpenCAEPoro_ASC2024

成功拉取后,参考readme中的命令解压所有压缩包(共六个,readme中少给了一个)

2.解压压缩包

使用下述命令解压压缩包(其他五个同理)

tar -xzf OpenCAEPoro.tar.gz
- **OpenCAEPoro:**
- **petsc_solver:** Custom solver built on top of PETSc.
- **petsc-3.19.3:** A suite for solving partial differential equations.
- **hypre-2.28.0:** Supplies high-performance preconditioners and solvers.
- **parmetis-4.0.3:** Offers parallel graph partitioning algorithms.
- **lapack-3.11:** Provides linear algebra routines.

3.安装Lapack

进入lapack-3.11目录下:

cd lapack-3.11

按照readme中命令编译lapack:

S2. make blaslib
S3. make cblaslib
S4. make lapacklib
S5. make lapackelib

这里一般不会出错,如果出错了,就检查一下输入的命令是否有问题

4.安装parmetis

进入parmetis-4.0.3目录下:

cd ../parmetis-4.0.3

根据readme中的要求,下面我们需要进行一步额外操作,就是指定所谓的ROOT_DIR的路径,并且为了方便后续使用,把命令直接放到~/.bashrc文件中

命令行执行以下命令,打开~/.bashrc文件

vim ~/.bashrc

指定ROOT_DIR的路径,在命令行执行下述命令没有意义(只能保证本次使用服务器),要把它放在~/.bashrc文件中

export ROOT_DIR=~/OpenCAEPoro_ASC2024

放入之后,保存并且退出就可以了

修改build-parmetis.sh文件

vim build-parmetis.sh

在这里插入图片描述
修改为上述这样,并保存退出

还没完,你如果在这里直接开始安装(执行sh命令),是会报错的,因为你没有激活intel oneapi 套件
所以,进行如下操作,激活套件,并把命令放置在~/.bashrc文件中:

source /opt/intel/oneapi/setvars.sh

然后需要激活 Intel oneAPI 2023 版本的编译器,在学长发的pdf中有说明
在这里插入图片描述
如果你用的是自己的服务器,那么可以下载激活套件再激活

执行下述命令来激活:

source /opt/intel/oneapi/compiler/2023.0.0/env/vars.sh

激活后可以检查一下 icc 是否可以用:

which icc

在这里插入图片描述
激活操作成后,把激活命令也放入~/.bashrc文件中,方便后续长期使用

然后再执行下述操作就可以了

sh build-parmetis.sh

5.安装Hypre

进入hypre-2.28.0目录

cd ../hypre-2.28.0

按照readme要求修改 build-hypre.sh 文件
在这里插入图片描述
然后执行安装脚本的命令就可以

sh build-hypre.sh

6.安装petsc

进入pets目录下:

cd ../petsc-3.19.3

按照readme要求,修改build-petsc脚本中的路径

这里是最容易出问题的一个part,所以,必须要和我提供的下述图片一模一样

在这里插入图片描述
相比readme上所给,它多了一条命令:

--with-fc=0 \

在Linux脚本文件中,–with-fc=0 \ 表示配置选项中关闭对Fortran编译器的支持。通常情况下,编译软件时会根据需要开启或关闭对不同编译器的支持,这里的–with-fc=0表示禁用Fortran编译器的支持

不加这个命令会报出Fortran Error

然后运行就不会出错了:

sh build-petsc.sh

7.安装petsc_solver

首先进入petsc_solver

cd ../petsc_solver

修改build-petscsolver.sh文件中的内容

vim build-petscsolver.sh

修改为下述这样
在这里插入图片描述
然后需要修改 CMakeList.txt 文件

修改的位置是绿色光标所在行,及绿色光标上一行

在这里插入图片描述
最后运行脚本就OK了

sh build-petscsolver.sh

8.编译OpenCAEPoro

进入到 OpenCAEPoro 目录:

cd ../OpenCAEPoro

修改脚本文件

vim mpi-build-petsc.sh

修改为下述这样
在这里插入图片描述

保存退出后,进行编译

sh mpi-build-petsc.sh

在这里插入图片描述
看到上述内容代表成功编译

9.测试安装

进入OpenCAEPoro主目录之后运行测试命令

mpirun -n p ./testOpenCAEPoro ./data/test/test.data

解释一下:

-n p 中 ”p“ 表示进程数

readme中进程数要求小于十

我使用五个进程进行测试

mpirun -n 5 ./testOpenCAEPoro ./data/test/test.data

结果如下(一个测试案例):

在这里插入图片描述

测试通过了,代表环境配置完成了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/55332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu Server 20.04 64bit定时备份MySQL8.0.36数据库数据

一、编写sh脚本 常见备份命令介绍 我选用的是mysqldump命令,命令使用简介 [root]> mysqldump -helpUsage: mysqldump [OPTIONS] database_name [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all…

python全栈学习记录(二十一)类的继承、派生、组合

类的继承、派生、组合 文章目录 类的继承、派生、组合一、类的继承二、派生三、组合 一、类的继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。 继承的特性是:子类会遗传父类的属性(继承是类与类之间的关系&a…

程序猿成长之路之设计模式篇——设计模式简介

无论是对于代码质量还是代码可维护性、可扩展性,使用合适的设计模式都能够起到促进提升的作用,此外在软考的软件工程师、系统架构师职称考试中,设计模式也是必考的一块内容,因此我打算开拓一个新的专栏简单介绍一下设计模式&#…

腾讯一面-LRU缓存

为了设计一个满足LRU(最近最少使用)缓存约束的数据结构,我们可以使用哈希表(HashMap)来存储键值对,以便在O(1)时间复杂度内访问任意键。同时,我们还需要一个双向链表(Doubly Linked …

智慧水务可视化:高效管理水资源

利用图扑先进的可视化技术,实现对水资源的实时监控与高效管理,提高水务工作的透明度和决策效率,促进水资源的可持续利用。

太原网站制作打造企业网站的关键要素

太原网站制作:打造企业网站的关键要素 在数字化时代,企业网站成为了品牌形象和市场营销的重要一环。太原的企业在进行网站制作时,需要关注几个关键要素,以确保网站能够有效提升企业竞争力和用户体验。 **1. 目标明确** 在网站制…

利用Spring Boot打造新闻推荐解决方案

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

Elasticsearch 8.16 和 JDK 23 中的语言环境变化

作者:来自 Elastic Simon Cooper 随着 JDK 23 即将发布,语言环境信息中有一些重大变化,这将影响 Elasticsearch 以及你提取和格式化日期时间数据的方式。首先,介绍一些背景知识。 什么是语言环境? 每次 Java 程序需要…

资源《Arduino 扩展板4-单游戏摇杆》说明。

资源链接: Arduino 扩展板4-单游戏摇杆 1.文件明细: 2.文件内容说明 包含:AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为PCB工程,采用AD做的。 该文件打板后配合Arduino使用,属于Arduino的扩展板。 该文件…

JVM和GC监控技术

一、监控技术简介 JVM是什么?项目里面有JVM吗?JVM跟Tomcat有什么关系?为什么需要去分析JVM? 1. JVM(全称:Java Virtual Machine),Java虚拟机 是Java程序运行的环境,它是一个虚构的计算机&…

Netty 与 WebSocket之间的关系

WebSocketProtocolHandler 和 Netty 在处理 WebSocket 连接时扮演不同的角色,但它们通常是一起使用的,尤其是在基于 Netty 的项目中。为了更好地理解它们之间的区别,我们首先需要了解 WebSocket 和 Netty 的基本概念。 WebSocket WebSocket…

RK3568平台(显示篇)车机图像显示偏白问题分析

一.显示偏白图片对比 正常图像: 偏白图像: 二.分析过程

51单片机系列-按键检测原理

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 独立按键是检测低电平的。 下面我们来看一张对应的电路原理图: 在这张图当中,P1,P2,P3内部都上拉了电阻,但是P0没有&am…

day03 笔试练习

1.简写单词 题目链接&#xff1a;简写单词_牛客题霸_牛客网 public static void main(String[] args) {Scanner sc new Scanner(System.in);while(sc.hasNext()){ // 输入多少读入多少char ch sc.next().charAt(0); // 提取首字母if(ch > a && ch < z){System…

项目定位与服务器(SERVER)模块划分

目录 定位 HTTP协议以及HTTP服务器 高并发服务器 单Reactor单线程 单Reactor多线程 多Reactor多线程 模块划分 SERVER模块划分 Buffer 模块 Socket模块 Channel 模块 Connection模块 Acceptor模块 TimerQueue模块 Poller模块 EventLoop模块 TcpServer模块 SE…

ElementUI el-tree 树组件 增加辅助线

需求 项目需求给elementUI的el-tree添加辅助线&#xff0c;并且不能使用其他插件&#xff0c;没办法只能该样式了。 效果 代码 html <template><div><el-scrollbar class"long-content"><el-tree node-key"id":data"deptTre…

Android 简单实现联系人列表+字母索引联动效果

效果如上图。 Main Ideas 左右两个列表左列表展示人员数据&#xff0c;含有姓氏首字母的 header item右列表是一个全由姓氏首字母组成的索引列表&#xff0c;点击某个item&#xff0c;展示一个气泡组件(它会自动延时关闭)&#xff0c; 左列表滚动并显示与点击的索引列表item …

k8s搭建一主三从的mysql8集群---无坑

一&#xff0c;环境准备 1.1 k8s集群服务器 ip角色系统主机名cpumem192.168.40.129mastercentos7.9k8smaster48192.168.40.130node1centos7.9k8snode148192.168.40.131node2centos7.9k8snode248192.168.40.132node3centos7.9k8snode348 k8s集群操作请参考《K8s安装部署&…

算法种类丰富,分析准确率业内领先的智慧能源开源了

一、简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算…

Java | Leetcode Java题解之第450题删除二叉搜索树中的节点

题目&#xff1a; 题解&#xff1a; class Solution {public TreeNode deleteNode(TreeNode root, int key) {TreeNode cur root, curParent null;while (cur ! null && cur.val ! key) {curParent cur;if (cur.val > key) {cur cur.left;} else {cur cur.rig…