【上海大学计算机系统结构实验报告】多机环境下MPI并行编程

多机环境下MPI并行编程实验报告

实验目的

  1. 学习编制多进程并行程序实现如下功能:
    1. 创建多进程,输出进程号和进程数。
    2. 运行多进程并行例子程序。
    3. 编程实现大规模矩阵的并行计算。

实验过程及结果分析

实验环境

  • 操作系统:Ubuntu 20.04
  • 开发工具:GCC 9.3.0、OpenMPI 4.0.3

实验步骤

多主机无密码登录配置
  1. 在任意一台主机上生成RSA密钥对:

    ssh-keygen -t rsa -C "Kevin"
    

​ 该命令将在用户主目录下的 ~/.ssh/ 目录中生成id_rsaid_rsa.pub两个文件。

  1. 将生成的公钥内容追加至同目录下的 authorized_keys 文件中,授权本主机信任该密钥登录:

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    

    此时,将该 authorized_keys 文件拷贝到其他主机,以建立互信。

  2. 为便于多主机通信与配置,使用以下命令将三台主机分别命名为 masterslave1slave2

    sudo vim /etc/hostname
    
  3. 编辑 /etc/hosts 文件,添加各主机的IP与主机名映射,例如:

    192.168.1.100 master
    192.168.1.101 slave1
    192.168.1.102 slave2
    
  4. 重启三台主机,而后使用ssh [username]命令测试主机间的无密码登录是否生效。

安装MPI环境
  1. 在三台主机上分别执行以下命令安装MPI环境:

    sudo apt install openmpi-bin libopenmpi-dev
    
  2. 验证安装是否成功:

    mpicc --version
    mpirun --version
    
    
图 1 安装成功后会显示版本信息
配置NFS共享目录

​ 在多主机运行MPI程序时,所有节点需要访问相同的可执行文件和输入输出路径。如果每台主机都独立保存一份代码和数据,会导致维护成本较高且容易出错。因此,此次实验使用NFS(网络文件系统)在master节点上创建共享目录,并将其挂载到所有计算节点,从而确保各节点读取到的是同一份程序和数据。

​ 具体步骤如下:

  1. master节点上配置NFS服务:

    1. 安装NFS服务端:

      sudo apt install nfs-kernel-server
      
      
    2. 创建共享目录并设置权限:

      sudo mkdir -p /home/ubuntu/shared
      sudo chown -R ubuntu:ubuntu /home/ubuntu/shared
      
      
    3. /etc/exports文件中添加:

      /home/ubuntu/shared *(rw,sync,no_subtree_check)
      
      
    4. 重启NFS服务使配置生效:

      sudo exportfs -a
      sudo systemctl restart nfs-kernel-server
      
      
  2. slave1slave2节点上挂载共享目录:

    1. 安装NFS客户端:

      sudo apt install nfs-common
      
      
    2. 创建本地挂载点:

      sudo mkdir -p /home/ubuntu/shared
      
      
    3. 挂载共享目录:

      sudo mount master:/home/ubuntu/shared /home/ubuntu/shared
      

​ 挂载完成后,从节点可直接访问/home/ubuntu/shared目录,并与master节点保持实时同步。

MPI程序测试
单主机多进程测试

​ 在master节点上编译运行下面的MPI程序,验证并行能力,如果主机的核心数不够,可添加 --oversubscribe 参数从而允许多个进程共享核心。

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

int main(int argc, char **argv)
{
   
   
    MPI_Init(&argc, &argv);
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);
    printf("Hello from rank %d out of %d processors\n", world_rank, world_size);
    MPI_Finalize();
    return 0;
}

​ 运行结果:

图 2 单主机多进程测试结果
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kutbas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值