本次实验的目的是使用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−1000−12−1000−12−100002
向量形式:
[ 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],

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

被折叠的 条评论
为什么被折叠?



