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…

SQL学习3

24.10.3学习目录 一.c语言操作数据库 一.c语言操作数据库 (1)打开、关闭数据库函数 //打开数据库 int sqlite3_open(char *db_name,sqlite3 **db);db_name:数据库文件名,若文件名中有ASCLL码中以外的字符,其必须为UT…

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

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

MySQL 实验 5:表数据的增、删、改操作

MySQL 实验 5:表数据的增、删、改操作 目录 MySQL 实验 5:表数据的增、删、改操作一、添加数据行二、删除数据行三、修改表中的数据 MySQL 数据表的数据操作包括:添加数据行(增:使用 insert 命令)、删除数据…

腾讯一面-LRU缓存

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

Hive数仓操作(三)

一、Hive 数据库操作 1. 创建数据库 基本创建数据库命令: CREATE DATABASE bigdata;说明: 数据库会在 HDFS 中以目录的形式创建和保存,数据库名称会存储在 Hive 的元数据中。如果不指定目录,数据库将在 /user/hive/warehouse 下…

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

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

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

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

自动化运维工具 Ansible

Ansible 基础 Ansible 介绍 Ansible 是一个自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、 func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 Ansible 的…

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

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

前端开发设计模式——策略模式

目录 一、策略模式的定义和特点 1.定义: 2.特点: 二、策略模式的实现方式 1.定义策略接口: 2.创建具体策略类: 3.定义上下文类: 三、策略模式的应用场景 1.表单验证场景: 2.动画效果切换场景&…

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…