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

该实验通过Python实现了矩阵乘法的单进程和多进程MPI版本。在规模较大的矩阵运算中,多进程MPI方法相比于单进程有显著的性能提升,但在进程数增加到一定程度后,由于并行开销,优化效果减弱。实验展示了并行计算的强拓展性和弱拓展性特点。

本次实验的目的是使用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} 2100012100012100012100002

向量形式:

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

备注:矩阵由三个对眼矩阵(方阵)合并而成,向量由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],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值