Linux或者ubuntu子系统中OpenMPI的安装

2023-11-18

在Linux中安装MPI(Message Passing Interface)需要以下步骤:

  1. 检查依赖项:首先,确保系统已经安装了必要的编译工具和库文件。运行以下命令更新软件包并安装所需依赖项:

    sudo apt update
    sudo apt install build-essential
    

在这里插入图片描述

  1. 下载MPI:可以从MPI官方网站(https://www.mpi-forum.org/)下载最新版本的MPI源代码包,或者使用特定发行版的软件包管理器安装MPI。在大多数Linux系统上,可以使用以下命令安装Open MPI:

    sudo apt install openmpi-bin libopenmpi-dev
    
  2. 配置环境变量:安装完成后,需要将MPI的相关路径添加到系统的环境变量中。编辑当前用户的shell配置文件(如~/.bashrc 或~/.zshrc),并添加以下行:

    export PATH=/usr/lib/openmpi/bin:$PATH
    export LD_LIBRARY_PATH=/usr/lib/openmpi/lib:$LD_LIBRARY_PATH
    

在这里插入图片描述

然后运行以下命令使配置生效:

source ~/.bashrc  # or source ~/.zshrc
  1. 验证安装:运行以下命令验证MPI是否成功安装:

    mpicc --version
    

    如果安装成功,将显示MPI的版本信息。
    在这里插入图片描述

现在,MPI已经成功安装在你的Linux系统中。你可以使用MPI来编写和运行并行计算程序。通过MPI,你可以在多个进程之间进行通信和协同工作,以实现并行计算任务的分布式执行。你可以使用mpicc编译MPI程序,然后使用mpiexec运行程序。

以下是一个简单的MPI示例程序:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char* argv[]) {
    int rank, size;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    printf("Hello from process %d of %d\n", rank, size);
    MPI_Finalize();
    return 0;
}

保存为testmpi.c,然后运行以下命令编译并运行程序:

mpicc -o testmpi testmpi.c
mpiexec -n 4 ./testmpi

在这里插入图片描述

这将在4个进程中运行程序,并输出每个进程的信息。

5.可能会出现CMA警告

WARNING: Linux kernel CMA support was requested via the
btl_vader_single_copy_mechanism MCA variable, but CMA support is
not available due to restrictive ptrace settings.

The vader shared memory BTL will fall back on another single-copy
mechanism if one is available. This may result in lower performance.

此时需要将用户切换为root,并在终端里输入:

echo 0 > /proc/sys/kernel/yama/ptrace_scope 

在这里插入图片描述

希望以上步骤能够帮助你在Linux系统上成功安装MPI并开始使用它进行并行计算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux或者ubuntu子系统中OpenMPI的安装 的相关文章

  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • ubuntu 16.04.1 LTS 启动 Android 模拟器时崩溃

    我已经尝试过 Android studio 上的 AVD 和 Genymotion 模拟器 我的 ubuntu 16 04 1 在启动 android 模拟器时崩溃 冻结 我的电脑内存是16G 在我于 2016 年 9 月 19 日安装了
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 没有名为“PIL”的模块

    当我尝试时遇到错误 from PIL import Image ImageFilter 在 Python 文件中我收到一条错误消息ModuleNotFoundError No module named PIL 到目前为止 我已经尝试卸载 重
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 在初始化脚本中切换用户?

    这是我的 Ubuntu 工作站上的初始化脚本 我需要以除 root 之外的其他用户身份运行命令 但我就是不知道应该如何完成它 两者都不sudo u or su newuser似乎有效 剧本 respawn console none star
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 一起来学nginx(一)

    一起来学nginx 一 nginx概述 nginx是一款web服务器 相当于一个软件 除了nginx还有哪些web服务器 apche openresty nginx的优点 高并发 高性能 可扩展性好 nginx是模块化的 可靠性 热部署 在
  • org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [XXX.xml]';

    tomcat启动时报错 Caused by org springframework core NestedIOException Failed to parse mapping resource file XXX xml nested ex
  • GDI+学习笔记四-双缓冲图形类

    双缓冲图形 问题 当在窗体中绘制较为复杂的图形对象时 常会出现闪烁的问题 NET Framework解决方案 提供了双缓冲功能 原理是 当启用双缓冲时 所有绘制操作首先呈现到内存缓冲区 而不是屏幕上的绘图图面 所有绘制操作完成后 内存缓冲区
  • 为了响应工信部要求,我们整理了这些网络账户注销指南

    福利 网络安全重磅福利 入门 进阶全套282G学习资源包免费分享 今年 1 月份 工信部在 回应网民问手机 App 销户的问题 时 明确表示用户有权删除在平台服务商注册的账户服务 根据 中华人民共和国网络安全法 第四十三条规定 个人发现网络
  • 智能学习

    智能学习 MATLAB实现ACO BP多变量时间序列预测 蚁群算法优化BP神经网络 目录 智能学习 MATLAB实现ACO BP多变量时间序列预测 蚁群算法优化BP神经网络 预测效果 基本介绍 程序设计 参考资料 预测效果 基本介绍 MAT
  • 解决内存溢出OutOfMemoryError异常

    今天启动项目时 突然了报了OOM异常 如图所示 解决办法很简单 就是把内存设置大点 主要问题是在哪里设置 1 jvm内存设置 jvm虚拟机的内存设置是在jdk jre lib amd64目录下的jvm cfg文件中设置 在最下面加上相关配置
  • Spring Boot —— Log的八个日志级别

    文章目录 Spring Boot Log的八个日志级别 前言 ALL TRACE DEBUG INFO WARN ERROR FATAL OFF Spring Boot Log的八个日志级别 前言 在项目中会出现经常使用日志的情况 而日志又
  • OAuth2 oauth_client_details表字段的详细说明

    OAuth2 oauth client details表字段的详细说明 clientdetails 妖四灵 Shuen的博客 CSDN博客
  • QT中https 访问

    QT 中支持https 在原有的http的代码基础上需要加上如下代码块 QNetworkRequest request QSslConfiguration conf QSslConfiguration defaultConfiguratio
  • WSL 使用的文件没有权限无法删除

    转载于 https www cnblogs com jffun blog p 11255096 html
  • Vite 和 Webpack 的区别

    Vite 和 Webpack 都是前端打包工具 它们的作用类似 但实现方式和使用方法有所不同 以下是它们之间的一些区别 构建速度 Vite 的构建速度比 Webpack 更快 因为 Vite 在开发环境下使用了浏览器原生的 ES 模块加载
  • 浏览器油猴插件Tampermonkey下载安装

    没有插件的浏览器 不是真正的浏览器 当我们的浏览器装上插件之后 瞬间强大了许多 下面给大家介绍一下浏览器插件神器油猴插件Tampermonkey的下载安装 油猴Tampermonkey插件下载安装方法一 直接打开油猴Tampermonkey
  • 为什么要用box-sizing: border-box?一般什么时候用?

    1 新建一个HTML文档 并定义一个块元素 CSS示例 normal width 100px height 100px background blue 步骤阅读 2 保存文件 预览效果 步骤阅读 3 再次加入一个DIV并在原有的CSS上复制
  • 二十三、SQL 数据分析实战(10个简单的SQL题目)

    文章目录 题目1 比赛名单整理 题目2 热门游戏排行 题目3 社区生鲜App覆盖分析 题目4 社区团购行为分析 题目5 统计字符出现次数 题目6 找出各类别商品销量最高的商品 题目7 找出每个部门薪资第二高的员工 题目8 游戏玩家登录情况分
  • Java面向对象编程

    在单处理器系统中 如果同时存在有12个进程 则处于就绪队列中的进程数量最多为 A 1 B 9 C 10 D 11 答案 D 以下关于多线程的叙述中错误的是 A 线程同步的方法包括使用临界区 互斥量 信号量等 B 两个线程同时对简单类型全局变
  • 约瑟夫环问题(报数问题)

    先说一下什么是约瑟夫环问题 这是百科的解释 约瑟夫环 约瑟夫问题 是一个数学的应用问题 已知n个人 以编号1 2 3 n分别表示 围坐在一张圆桌周围 从编号为k的人开始报数 数到m的那个人出列 他的下一个人又从1开始报数 数到m的那个人又出
  • 如何在csdn免费下载资料?

    1 可以在个人设置里 绑定手机账号奖励整整50分 点下头像一个人中心一账号设置一手机绑定 2 完成任务 任务要在http task csdn net 里才能看到 3 上传有效 有效啊 别上个广告啊 非法啥的 反而还扣了 资源 4 评论资源
  • QT 5.8

    QT与Qt Creator 前者是框架 类似与MFC 而后者是QT的编译器 也可以使用Visual studio编辑 编译需要其他的 Index of new archive qt 5 8 5 8 0
  • MySQL的体系架构

    文章目录 前言 MySQL的Server层 MySQL的存储引擎 1 InnoDB 存储引擎 2 MyISAM 存储引擎 3 Memory 存储引擎 前言 在学习一种事务之前 我们需要先了解事物的基本组成结构 清楚了事物的基本组成结构之后
  • Linux或者ubuntu子系统中OpenMPI的安装

    在Linux中安装MPI Message Passing Interface 需要以下步骤 检查依赖项 首先 确保系统已经安装了必要的编译工具和库文件 运行以下命令更新软件包并安装所需依赖项 sudo apt update sudo apt