高性能计算的矩阵乘法优化 - Python +MPI的实现

openmpi+mpi4py+Linux服务器搭建python分布式环境 例如:mpirun -n 5 -hostfile hosts --allow-run-as-root -prefix /usr/local/openmpi python3 /home/Test.py(此时我选取了5个节点,当然相应的hosts文件也应该修改为只剩下前五行)例如: mpirun -n 3 -host master,worker01,worker02 --allow-run-as-root -prefix /usr/local/openmpi python3 /home/Test.py。 阅读详情

本次实验的目的是使用MPI的并行性来进行矩阵乘法优化,本人使用 Python 实现

0. 硬件信息

实验硬件:

  • CPU:AMD Ryzen 7 5800H(3.20 GHz)
  • 内存:32GB (3200MHz)

1. 实验要求、数据

要求:使用一个矩阵,一个向量相乘,分别用单进程和多进程的mpi接口实现。

全局的规模参数是 Scale

数据示例:

当 Scale=5时,数据示例如下:

矩阵形式:

[ 2 − 1 0 0 0 − 1 2 − 1 0 0 0 − 1 2 − 1 0 0 0 − 1 2 0 0 0 0 − 1 2 ] \begin{bmatrix}2&-1&0&0&0\\-1&2&-1&0&0\\0&-1&2&-1&0\\0&0&-1&2&0\\0&0&0&-1&2\end{bmatrix} ​2−1000​−12−100​0−12−10​00−12−1​00002​ ​

向量形式:

[ 1 2 3 1 2 ] \begin{bmatrix}1&2&3&1&2\end{bmatrix} [1​2​3​1​2​]

备注:矩阵由三个对眼矩阵(方阵)合并而成,向量由1,2,3按顺序重复组成


2. 数据生成实现

generate_example_matrix 使用三个对眼矩阵的蒙版控制三个矩阵相加
generate_example_vector 以重复的1,2,3进行repeat

import numpy as np
from functools import wraps
import time

def generate_example_matrix(h, w):
    _vs = (-1, 2, -1)
    _i = -1  # shift bits
    example_data = np.zeros([h, w],
高性能计算的矩阵乘法优化 - Python + OpenMP实现 为什么你用进程并行不是线程并行?:由于Python解释器有GIL(全局解释器锁),在单进程的解释器上有线程安全锁,也就是说每次只能一个线程访问解释器,因此Python在语法上的多线程(multithreads)实现是不会提高并行性能的。这一点和C\C++上的编译级别的并行是不一样的,Python能做到的极限是多进程的解释级别并行。(上一节我实现的是,和老师课上是不一样的!! 阅读详情

相关推荐

别再死磕串行了!用MPI+Cannon算法,让你的矩阵乘法在HPC集群上飞起来

本文深入探讨了MPI+Cannon算法在高性能计算集群中实现矩阵乘法的优化方法。通过分析串行算法的局限性,详细介绍了Cannon算法的原理及其在MPI环境下的实现技巧,包括二维进程拓扑构建、高效通信策略和性能优化技巧。实战部分提供了SLURM作业脚本示例和性能问题排查指南,帮助开发者充分利用分布式计算资源,显著提升大规模矩阵运算效率。

weixin_30824599的博客 423

LINPACK基准测试:从原理到实战,全面解析HPC性能评估金标准

在计算机性能评估领域,基准测试是衡量系统算力的核心工具。其原理是通过标准化的计算任务,量化硬件与软件协同工作的实际效能。LINPACK基准测试作为高性能计算(HPC)领域的经典标杆,其技术价值在于精准评估系统的双精度浮点运算能力,这一指标是衡量超级计算机、服务器乃至高端工作站算力潜力的关键。该测试通过求解大规模稠密线性方程组,其核心计算——矩阵乘法与分解——能充分压榨现代CPU/GPU的浮点运算单元,从而反映硬件理论峰值与实际优化水平之间的差距。在应用场景上,LINPACK不仅是全球TOP500超算排名的唯

weixin_30617737的博客 539

Python利用稀疏矩阵节省内存的实例

稀疏矩阵是一种只存储非零元素的矩阵表示方法,通过只存储非零元素的位置和值,可以大大减少存储空间的需求。现在,我们可以查看稀疏矩阵的内部表示。这些数组实际上是压缩的表示方式,通过这种方式,我们可以只存储非零元素的位置和值,从而节省大量的内存空间。库提供的函数和方法,我们可以对稀疏矩阵进行各种操作,如转置、相加、相乘等,从而实现高效的数据处理和计算。在上面的示例中,我们创建了一个5x5的二维矩阵,其中只有几个元素是非零的。通过使用稀疏矩阵,我们可以有效地处理大规模数据集,减少内存的使用,提高程序的性能。

DarcyCode的博客 205

在Python中安装mpi4py的解决方案

在本文中,将介绍如何在Python中安装mpi4py库,并提供相应的源代码示例。在Python中安装mpi4py库需要先安装MPI库,然后使用pip命令安装mpi4py。安装完成后,可以通过运行简单的MPI程序来验证安装是否成功。在安装mpi4py之前,需要先安装MPI库。安装完成后,可以通过运行一个简单的MPI程序来验证安装是否成功。安装完MPI库之后,可以使用pip命令来安装mpi4py库。这表明mpi4py库已成功安装,并且可以在Python中使用MPI进行并行计算。步骤2:安装mpi4py库。

CyberNerdX的博客 1929

主题030:高性能计算与并行仿真

模型规模增长汽车整车碰撞模型:1000万+单元飞机整机气动分析:1亿+网格点地震波传播模拟:10亿+自由度计算需求增加瞬态分析需要数千至数万时间步优化设计需要数百至数千次分析不确定性量化需要蒙特卡洛采样时间约束产品设计周期要求快速反馈实时仿真和数字孪生需求紧急工程决策支持OpenMP(Open Multi-Processing)是共享内存并行编程的标准API,支持C/C++和Fortran。特点基于编译器指令(pragmas)增量式并行化自动线程管理适合循环并行化。

kkchenjj的博客 441

数据结构与算法代码实战讲解之:并行算法

作者:禅与计算机程序设计艺术 1.背景介绍 并行计算技术是一种新兴的计算机计算技术,其最主要的特征就是利用多处理器、集群甚至超级计算机来提升处理性能。多线程、OpenMP、MPI等并行编程技术越来越受到人们的重视,各类高性能计算库也逐渐成为众多开发人员的必备工具。基于数据的并行计算也越来越普及。随着

AI天才研究院 929

PredFormer实战:用Transformer搞定交通流量预测(附TaxiBJ数据集代码)

本文详细介绍了如何利用PredFormer这一基于Transformer的先进模型进行交通流量预测,特别针对TaxiBJ数据集提供了完整的实战代码和优化策略。PredFormer通过门控Transformer块(GTB)的创新设计,在时空预测任务中展现出显著优势,相比传统方法将MSE降低33.1%,推理速度提升4.4倍。文章还涵盖了模型轻量化、部署优化等实用技巧,为智慧城市建设中的交通预测提供了高效解决方案。

weixin_29194817的博客 444

ss524v100 调试cvbs输出

启用视频层3 dev2 对应 layer3在vdec与vo绑定的时候(不需要经过vpss),不能绑定错误,以下是绑定的程序。

2116

别光看原理图了!手把手教你用Altium Designer搞定STM32F411最小系统的PCB布局(附电源/晶振/复位电路实战)

本文详细介绍了使用Altium Designer进行STM32F411最小系统PCB布局的实战技巧,涵盖电源分配网络优化、高速信号布线及系统级布局策略。通过规范的工程结构建立、关键设计规则预设和核心电路模块布局,帮助工程师提升PCB设计效率与信号完整性。特别针对STM32最小系统的电源、晶振和复位电路提供了专业解决方案。

weixin_42653691的博客 166

MATLAB - 浮动基座机器人的逆运动学

本例演示如何解决以浮动底座为模型的机器人的逆运动学问题。浮动底座机器人可以在空间中自由平移和旋转,具有六个自由度。浮动基座机器人的逆运动学问题适用于空间应用,即使用安装在浮动和致动基座上的机械臂在空间操纵物体,也适用于躯干和腿部可在空间自由移动的行走机器人。请注意,刚体树对象表示具有固定基体的刚体树。这意味着刚体树的基体在世界中具有固定的位置和方向。您可以在基体上附加一个 “浮动 ”类型的刚体关节,为具有浮动基体的机器人建模,以用于动态模拟等某些应用。

机器人控制与仿真应用 2438

越野换了逐飞的ips200pro的屏幕后代码烧录中报错: “Cannot initialize device connection” 和 “Flashing failed” ...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1149

飞牛NAS1.1.19更新后SSH连不上?两步快速恢复连接

飞牛NAS1.1.19版本更新后SSH无法连接😟,实则是官方安全策略升级默认关闭了该服务,本文分享两步实操配置恢复SSH连接💻,还同步了官方的设备安全配置建议,帮助用户兼顾使用与设备防护🔒。

XiaoqiangClub的博客 2092

【量化入门】Tushare库获取公募基金的历史净值

在本文中,我们将介绍如何使用Python的Tushare库获取公募基金的历史净值。

木头大左的博客 1138

ABAP CDS HAVING 全解析:聚合之后的精准过滤、最佳实践与可运行示例

摘要: 本文针对具备ABAP与CDS基础的开发者,详解HAVING在ABAP CDS中的核心用法。HAVING专用于过滤GROUP BY后的聚合结果(如SUM、COUNT),与WHERE的分工明确:前者处理聚合值,后者过滤原始记录。通过销售额阈值、质量分析、财务对账三类典型场景,结合性能优化建议(如优先使用WHERE索引过滤),说明实际应用。文中提供经典CDS View与View Entity两种实现代码,并附Open SQL消费示例,帮助开发者快速落地。常见误区(如聚合条件误写至WHERE)与规避方法亦被

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 219

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 2023最新 - 谷歌学术文献Bibtex批量获取脚本
下一篇: 高性能计算的矩阵乘法优化 - Python + OpenMP实现
JintuZheng
博客等级 码龄11年 1483粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值