?

基于MPI的矩陣相乘并行計算的一種探究

2019-11-03 14:07張亮趙妍
電腦知識與技術 2019年23期
關鍵詞:并行計算

張亮 趙妍

摘要:研究了矩陣相乘的并行算法,基于MPI消息傳遞庫采用C語言實現了該算法,講解了矩陣并行乘法中的矩陣劃分方法和消息傳遞方法。

關鍵詞:并行計算;MPI;矩陣相乘;消息傳遞

中圖分類號:TP31? ? ? 文獻標識碼:A

文章編號:1009-3044(2019)23-0281-02

開放科學(資源服務)標識碼(OSID):

MPI-based Parallel Computation of the Multiple of matrixs

ZHANG Liang, ZHAO Yan

(Ningxia Financial Vocational and Technical College, Ningxia 750021, China)

Abstract: Parallel Computation of the multiple of matrixs was studied, based on MPI and C Language the algorithm was realized. Partition of matrix and message passing in the algorithm was addressed.

Key words: Parallel Computation; MPI; Multiple of matrixs; Message Passing

1 引言

并行計算又叫高性能計算,在許多領域的都發揮著積極的巨大的作用,如物理、化學、材料等科學中分子尺度的模擬,天文學和地球科學中銀河系的演化,,天氣預報,地球數值模擬,全球長期氣候變化的模型等[1]。這些研究都對計算機的運算速度提出了很高的要求,也只有高性能的并行計算才能滿足這些要求。在并行計算中,集群系統以廉價高效等優點頗受人們青睞,是當今的主流。并行處理的軟件支持環境包括基于OpenMP和MPI(Message Passing Interface)的各種環境。OpenMP主要用于共享式計算環境,而MPI則主要用于分布式計算環境[1]。本文實現了基于MPI的矩陣乘法運算。

2 算法描述

設有L×M矩陣A和M×N矩陣B相乘,得到結果為L×N的矩陣C。記矩陣A、B、C的第i行第j列的元素為Aij(i=0……L,j=0……M),Bij(i=0……M,j=0……N),Cij(i=0……L,j=0……N)。則:

Cij=(i=0……L,j=0……N)? ? ? ? ? (1)

可見Cij只與A和B的第i行相關,而與其他行無關,所以具有并行計算的可行性。

假設有n個進程并行計算,則把矩陣A按行分成n個M/n行的小矩陣,每個小矩陣與B進行矩陣乘法,得到n個M/n行,N列的矩陣,將這些矩陣合并到一起就得到最終的結果。

3 算法實現

根據上面的算法,在VC6中用MPI的C語言實現為如下的程序:

#include "mpi.h"

#include

#include

#define l 4/*第一個矩陣的行*/

#define m 3/*第一個矩陣的列,第二個矩陣的行*/

#define n 2/*第二個矩陣的列*/

main(int argc,char *argv[])

{

int a[l][m]={{2,3,5},{4,5,7},{6,3,6},{1,6,7}};

int b[m][n]={{2,4},{3,6},{8,5}};

int c[l][n]={0};/*保存最終結果*/

int d[l][n]={0};/*各個分進程保存中間結果*/

int numproces,id,i,j,k,p,q,s,t,x,y;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&numproces);

MPI_Comm_rank(MPI_COMM_WORLD,&id);

printf("Process %d :\n",id);

if(id>0)

{/*numproces個進程,l行,每個進程l/numproces行,

從(id-1)*l/numproces行到id*l/numproces行*/

for(x=0,i=(id-1)*l/numproces;i

{

for(y=0,j=0;j

{

for(k=0;k

{

d[x][y]=d[x][y]+a[i][k]*b[k][j];/*d[][]保存該進程計算結果*/

}

printf("d[%d][%d]=%d\t",x,y,d[x][y]);

猜你喜歡
并行計算
基于自適應線程束的GPU并行粒子群優化算法
云計算中MapReduce分布式并行處理框架的研究與搭建
并行硬件簡介
不可壓NS方程的高效并行直接求解
最大匹配問題Tile自組裝模型
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合