矩阵乘法(串行与并行)

矩阵乘法

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值