RISC-V公测平台发布:如何在SG2042上玩转OpenMPI

  • About HS-2

HS-2 RISC-V通用主板是澎峰科技与合作伙伴共同研发的一款专为开发者设计的标准mATX主板,它预装了澎峰科技为RISC-V高性能服务器定制开发的软件包,包括各种标准bencmark、支持V扩展的GCC编译器、计算库、中间件以及多种典型服务器应用程序。

HS-2 RISC-V通用主板搭载了一颗国产RISC-V 64核处理器(SG2042)。SG2042是目前已量产的性能最高的RISC-V处理器,主要针对高性能计算领域需求设计,适用于科学计算、工程计算、AI计算、融合计算等大算力应用场景。

图片

  • About OpenMPI

OpenMPI是一个免费、开源、高性能的MPI实现,兼容MPI-1和MPI-2标准,并且还拥有完整的MPI-3.1标准。OpenMPI由开源社区开发维护,支持大多数类型的HPC平台。

官方网站:

https://www.open-mpi.org

实验方法

1. 下载OpenMPI源码包并解压,然后进入存放OpenMPI源码的文件夹

wget
https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz

tar -xzvf openmpi-4.1.5.tar.gz

图片

2. 执行./configure,如果配置时没有报错的话那就说明配置检查通过,可以编译。

图片

3. 然后编译源代码并安装:

make -j[根据个人喜好或实际情况来决定编译时用的线程数]
sudo make install

 注意:make install记得要带sudo,否则会提示没有权限!

图片

图片

 4. 接下来尝试运行mpicc并查看版本号,结果提示libopen-pal出现错误:

图片

安装libopenblas-dev即可解决该问题(如果出现选项配置界面,保持默认即可)

sudo apt install libopenblas-dev

图片

再次运行mpicc --version和mpirun --version,如果显示版本号那就说明运行成功。 

图片

5. OpenMPI提供了不少的示例代码供我们测试,涵盖了C、C++,甚至还有Java语言(是的,你没看错,还有Java语言,比如Hello.java文件等),不过在本教程中我们暂时不用Java,我们只用到C和C++代码。

图片

编译所有例子(把example下的所有例子全部编译一遍):

make -j[看你自己喜好,只要不超过最大核心数就行]

图片

执行mpirun -np 16 ring_usempi,如果出现以下内容就说明编译成功。

图片

6. 当然你也可以单独编译一个用C语言写的例子

mpicc ring_c.c -o ring_cmpirun -np 16 ring_c

图片

接下来尝试使用mpicxx单独编译C++程序,结果无法编译。经过排查发现当时configure的时候没带上--enable-mpi-cxx参数。因此,只要带上该参数重新配置并编译安装即可修复该问题。

图片

实验总结

1. 如果在configure时提示缺少库,那么应该先安装相应的库,然后再重新编译。

2. 如果提示libopen-pal或者其他相关错误,请安装libopenblas-dev后重试。

3. 如果./configure不带上--enable-mpi-cxx参数,后续将无法编译C++ MPI程序。

4. 在RISC-V平台上跑OpenMPI对于RISC-V进入HPC世界来说只是一个开始,再加上SG2042的64核心的加持,能够让你在跑高性能计算应用的时候更加从容。

参考资料

OpenMPI官网下载页:

https://www.open-mpi.org/software/ompi/v4.1/

OpenMPI——上海交大超算平台用户手册

https://docs.hpc.sjtu.edu.cn/app/compilers_and_languages/open_mpi.html

正文完


《RISC-V公测平台发布》系列文章会持续跟大家分享澎峰RISC-V生态圈的开发者朋友们在RISC-V平台的移植测试成果,目前已发布:

1. RISC-V公测平台发布 ·Stream带宽完整测试

2. RISC-V公测平台发布 · 我的世界MohistMC

3. RISC-V公测平台发布 · 第一个WEB Server“Hello RISC-V world!”

4. RISC-V公测平台发布 ·如何在SG2042上玩转k3s

5.“RISC-V成长日记” blog发布,第一个运行在RISC-V服务器上的blog?

6. RISC-V公测平台发布:如何在SG2042上玩转OpenMPI(本篇)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

龙架构 Arch Linux 发行版发布

导读近日,龙架构 Arch Linux 发行版官方网站宣布结束 beta 状态,正式支持龙架构 (LoongArch)。 Arch Linux 是一种轻量级、可定制、灵活的 Linux 操作系统。作为一款简单、现代、开放的操作系统,Arch Linux 旨在基于 “KISS 原则”&#xff0…

fabric.js里toDataURL后,画布内容展示不全?

复现场景: 用fabric生成画布后,转成图片,然后直接在浏览器里打开,画布展示内容缺失 画布原图: toDataURL后链接在浏览器打开: 原因解析: base64链接太长,输入浏览器链接被截断&…

C语言每日一题:14《数据结构》复制带随机指针的链表

题目一: 题目链接: 思路一: 找相对位置暴力求解的方法: 1.复制一个新的链表出来遍历老的节点给新的节点赋值,random这个时候不去值。 2.两个链表同时遍历,遍历老链表的时候去寻找相对位置,在遍…

gma 2 教程(二)数据操作:5. 多维科学数据

多维科学数据定义 如下图所示,gma将多维栅格定义为N(>1)个普通栅格数据集(DataSet)1组(记录多维数据信息的)元数据组成的多数据集(MultiDataSets)。   注&#xff1…

【搜索框的匹配功能】

功能需求: 1. 输入关键字的同时,以下拉列表的形式显示匹配的内容; 2. 点击下拉列表的选项,跳转到对应的新的页面 注意:这里读取data.txt(检索的文件对象),会存在跨域的问题&#x…

网络编程——深入理解TCP/IP协议——OSI模型和TCP/IP模型:构建网络通信的基石

TCP/IP协议— 一、简介 TCP/IP协议,即传输控制协议/互联网协议,是一组用于在计算机网络中实现通信的协议。它由两个主要的协议组成:TCP(传输控制协议)和IP(互联网协议)。TCP负责确保数据的可靠…

本地化部署自建类ChatGPT服务远程访问

本地化部署自建类ChatGPT服务远程访问 文章目录 本地化部署自建类ChatGPT服务远程访问前言系统环境1. 安装Text generation web UI2.安装依赖3. 安装语言模型4. 启动5. 安装cpolar 内网穿透6. 创建公网地址7. 公网访问8. 固定公网地址 🍀小结🍀 前言 Te…

VBA技术资料MF41:VBA_将常规数字转换为文本数字

【分享成果,随喜正能量】时有落花至,远随流水香。人生漫长,不攀缘,不强求,按照自己喜欢的方式生活,不必太过在意,顺其自然就好。路再长也有终点,夜再黑也有尽头。 我给VBA的定义&am…

7 个最佳Node.js日志记录库和聚合器

日志记录是软件测试的重要组成部分。当我们知道错误是什么以及代码中出现问题的确切行时,调试应用程序要容易得多。 在本文中,我们将探讨与 Node.js 中的日志记录相关的各种概念,包括七个流行的日志记录库和聚合器,您可以使用它们…

成品短视频App源码,开启你的创意视频之旅!

短视频App如今已成为人们记录和分享生活的热门方式。你是否想过自己拥有一款属于自己的短视频App呢?有了短视频App源码,就能轻松实现这一愿望。本文将介绍短视频App源码的优势、开发流程和功能特点,助你快速创建个性化短视频App,开启你的创意…

04-1_Qt 5.9 C++开发指南_常用界面设计组件_字符串QString

本章主要介绍Qt中的常用界面设计组件,因为更多的是涉及如何使用,因此会强调使用,也就是更多针对实例,而对于一些细节问题,需要参考《Qt5.9 c开发指南》进行学习。 文章目录 1. 字符串与普通转换、进制转换1.1 可视化U…

万字长文解析深度学习中的术语

引言 新手在学习深度学习或者在看深度学习论文的过程中,有不少专业词汇,软件翻译不出来,就算是翻译出来也看不懂,因为不少术语是借用其他学科的概念,这里整理了一些在深度学习中常见的术语,并对一些概念进…

SpringSecurity5.7+最新案例 -- 授权 --

一、前提 书接上回 SpringSecurity5.7最新案例 – 用户名密码验证码记住我 本文 继续处理SpringSecurity授权 … 目前由 难 -> 简,即自定义数据库授权,注解授权,config配置授权 二、自定义授权 0. 数据准备 SET NAMES utf8mb4; SET …

CentOS软件包管理rpm、yum

一、软件包概述 Linux常见软件包分为两种,分别是源代码包、二进制文件包。源代码包是没有经过编译的包,需要经过GCC、C编译器编译才能运行,文件内容包含源代码文件,通常以.tar.gz、.zip、.rar结尾;二进制包无需编译&am…

APP外包开发的开发语言对比

在开发iOS APP时有两种语言可以选择,Swift(Swift Programming Language)和 Objective-C(Objective-C Programming Language),它们是两种不同的编程语言,都被用于iOS和macOS等苹果平台的软件开发…

pytorch学习——卷积神经网络——以LeNet为例

目录 一.什么是卷积? 二.卷积神经网络的组成 三.卷积网络基本元素介绍 3.1卷积 3.2填充和步幅 3.2.1填充(Padding) 填充是指在输入数据周围添加额外的边界值(通常是零),以扩展输入的尺寸。填充可以在卷…

Dockerfile构建Tomcat镜像

准备apache包和jdk并解压 [rootlocalhost tomcat]# ll 总用量 196728 -rw-r--r--. 1 root root 9690027 7月 17 2020 apache-tomcat-8.5.40.tar.gz -rw-r--r--. 1 root root 674 8月 2 20:19 Dockerfile -rw-r--r--. 1 root root 191753373 7月 17 2020 jdk-8u191-…

【Python基础教程】super()函数的正确使用方法

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1.super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了,super()内也可不加参数 2.规律是super是按调用的次序执行,super后面的语句是逆向执行的。 有2段示例代码,不同的在于value有没…

基于短信宝API零代码实现短信自动化业务

场景描述: 基于短信宝开放的API能力,实现在特定事件(如天气预警)或定时自动发送短信(本文以定时群发短信为例)。通过Aboter平台如何实现呢? 使用方法: 首先创建一个IPaaS流程&…

解决Vue3 使用Element-Plus导航刷新active高亮消失

解决Vue3 使用Element-Plus导航刷新后active高亮消失的问题 启用路由模式会在激活导航时以 index 作为 path 进行路由跳转 使用 default-active 来设置加载时的激活项。 接下来打印一下选中项index和index路径, 刷新也是没有任何问题的,active不会消失…