矩阵乘法
1. 需求
矩阵乘法AB=C。其中,A,B,C均为20482048双精度浮点方阵,A,B初始值为[-1,1]的随机数。
2.串行和OpenMP并行代码
#include <iostream>
#include <stdlib.h>
#include <ctime>
#include "hpc_helpers.hpp"
using namespace std;
#define NUM 2048 //表示数组的长度
//由于数组过大,所以需要定义全局变量,否则容量不够
double A[NUM][NUM];
double B[NUM][NUM];
double C[NUM][NUM];
//初始化
void init (double A[][NUM] , double B[][NUM]) {
srand ((unsigned int)time (NULL));
for ( int row = 0; row < NUM; row++ ) {
for ( int col = 0; col < NUM; col++ ) {
//x + 1.0 * rand() / RAND_MAX * ( y - x )
//随机生成[-1,1]的随机双精度浮点数
A[row][col] = -1.0 + 1.0 * rand () / RAND_MAX * 2;
A[row][col] = -1.0 + 1.0 * rand () / RAND_MAX * 2;
}
}
}
//计算(矩阵乘法)
void mult (double A[][NUM] , double B[][NUM] , double C[][NUM] , bool parallel , int num_thread) {
#pragma omp parallel for num_th

最低0.47元/天 解锁文章
1万+

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



