MPI實現矩陣相乘

2021-09-22 21:27:23 字數 1464 閱讀 7651

配置mpi

配置目錄,即載入include和lib庫

載入依賴項

3.編譯

根據程式設計員的習俗先從乙個helloworld開始

#include "mpi.h"  

#include int main(int argc, char* ar**)

4.mpi 矩陣相乘

接下來便開始我們的主題

實際的思想是使用0程序將矩陣切分成n份分別傳送個其他的程序,再有其他的程序計算完成之後再發回0程序。

0程序進行分發,切分,以及整合矩陣。

if (myid == 0) 

/*新建矩陣並初始化

*/srand((unsigned)time(null));

buffer3 = (int*)malloc(sizeof(int)*am);

int* m = new int[am*am];

cout << "-------a類矩形------" << endl;

for (int i = 0; i < am; i++)

cout << endl;

} n = (int**)malloc(sizeof(int)*am);

for (int i = 0; i < am; i++)

cout << "-------b類矩形------" << endl;

for (int i = 0; i < am; i++)

cout << endl;

} /*

判斷是否採用單執行緒

*/

if (numprocs //接受來自0程序的值

if (myid != 0)

if (myid != 0 && myid <= am && numprocs>am)

m[i] = temp;}/*

將得到的資料進行計算並且將其傳回0程序

*/mpi_send(m, am, mpi_int, 0, myid, mpi_comm_world);

free(buffer);

free(buffer2);

free(m);

}在這裡我也將頭部添上

#include#include#include#include"mpi.h"

#include #include #pragma comment(lib,"msmpi.lib")

using namespace std;

int am;

int main(int argc, char **ar**)

Java實現矩陣相乘

首先我們要知道二維陣列就是類似於我們線性代數中的矩陣,矩陣的乘法運算大概是這樣 滿足條件,第乙個矩陣的列數等於第二個矩陣的行數 由兩個矩陣相乘的矩陣的每乙個元素是由第乙個矩陣每一行元素分別乘上第二個矩陣的列 對應的元素在相加 當矩陣a的列數等於矩陣b的行數時,a與b可以相乘。矩陣c的行數等於矩陣a的...

矩陣相乘 高效實現方法

假如有兩個矩陣m,n相乘,q m x n,m是m1 x n1矩陣,n是 m2 x n2。只有當n1 m2時,才可以進行兩個矩陣的相乘。一般的做法是 1 我們用兩個二維陣列分別存放 m 和 n 然後再用乙個二維陣列 存放 q。實現 q m x n的演算法如下 下標從1開始 for i 1 i m1 i...

實現稀疏矩陣相乘C C

1 問題描述 已知稀疏矩陣a m1,n1 和b m2,n2 求乘積c m1,n2 a 3 0 0 7 b 4 1 c 12 17 0 0 0 1 0 0 0 2 0 2 0 0 1 1 0 0 0 2 a b c的三元組表示法分別為 a ijv1112 2147 324 1 4322 b i jv1...