英特尔oneAPI——矩阵乘法并行化实现

英特尔oneAPI简介

Intel oneAPI是一个跨行业、开放、基于标准的统一的编程模型,旨在提供一个适用于各类计算架构的统一编程模型和应用程序接口。也就是说,应用程序的开发者只需要开发一次代码,就可以让代码在跨平台的异构系统上执行,底层的硬件架构可以是CPU、GPU、FPGA、神经网络处理器等。由此可见,使用oneAPI编写的程序既可以利用加速器提高程序性能,又具有可移植性。

一个oneAPI运行环境由一个主机和一系列设备组成。主机通常是一个多核CPU,而设备是一个或多个GPU、FPGA,或是其他加速器。主机的处理器也可以进行并行计算。

oneAPI为一系列的数据并行加速器提供了一个通用的开发者接口。

英特尔DevCloud简介

英特尔DevCloud是一个可以在线开发oneAPI程序的平台,DevCloud除了预装了oneAPI开发套件之外,还提供了有关oneAPI的教程,并且免费提供GPU、FPGA等加速器资源供我们使用,因此我们可以很方便地在DevCloud上学习oneAPI知识,并测试我们自己开发的oneAPI程序。

问题描述

有两个矩阵A,B
若A矩阵和B矩阵可以做乘法运算则必须满足A矩阵的列的数量等于B矩阵的行的数量
运算规则:结果矩阵中某行某列的数据为A的该行中的每个数字对应乘以B的该列的每个数字把结果相加
如今不妨假设两者都为n*n的矩阵,可得代码如下:

for(int i=0;i<n;i++)
	for(int j=0;j<n;j++)
		for(int k=0;k<n;k++)
			c[i][j]+=a[i][k]*b[k][j];

很容易发现,算法的时间复杂度为O(n^3),这使得当n来到1000这个数量级时花费时间就已经很难让人接受,考虑优化。
考虑并行化优化,可以看到一共三重循环,对于最里层循环,对结果产生的影响是不会相互关联的,此时便可通过英特尔oneAPI中给出方法将最内层循环进行并行处理,以达成O(n^2)的矩阵乘法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值