云环境下矩阵乘法外包计算方案

合集下载

高精度矩阵乘法

高精度矩阵乘法

高精度矩阵乘法全文共四篇示例,供读者参考第一篇示例:高精度矩阵乘法是一种在计算机科学和数学领域广泛应用的算法,它可以用来计算两个矩阵的乘积,而且可以保持计算精度较高。

在很多领域,特别是科学计算和工程领域,高精度矩阵乘法是一个非常重要的工具,它可以在复杂的计算过程中保持结果的精度,从而避免由于舍入误差导致计算结果不准确的情况发生。

矩阵乘法是一种基础的矩阵运算,它可以用来描述线性变换和线性系统,在很多科学和工程问题中都会涉及到矩阵的乘法运算。

在实际应用中,由于矩阵元素的数值范围很大或者矩阵元素包含小数,常规的矩阵乘法算法往往会出现精度丢失的问题,这就需要使用高精度矩阵乘法算法来解决。

高精度矩阵乘法的基本思想是将矩阵的元素表示为高精度的数值,这样就可以保持计算过程中的精度。

在计算机中,通常可以使用多种方法来实现高精度计算,比如使用任意精度算术库(如GMP库)、或者自行实现高精度运算算法等。

一般来说,采用高精度计算的方法可以避免由于浮点数运算带来的舍入误差,提高计算结果的准确性。

在实际的应用中,高精度矩阵乘法通常会涉及到大规模的矩阵计算,这就需要设计高效的算法来降低计算复杂度。

为了提高计算效率,可以使用分块矩阵乘法的技术,将大规模矩阵的乘法拆分成多个小规模矩阵的乘法,从而减少计算量,提高计算速度。

除了分块矩阵乘法,还有一些其他的优化技术可以应用到高精度矩阵乘法中,比如使用多线程并行计算、优化内存访问模式、以及使用SIMD指令集等。

通过合理地设计算法和利用现代计算机的特性,可以进一步提高高精度矩阵乘法的计算性能。

除了在科学计算和工程领域中的应用,高精度矩阵乘法还可以被用来解决一些数学问题,比如计算大整数的乘法、高次多项式的乘法等。

在密码学领域中,高精度矩阵乘法也扮演着重要的角色,用来设计安全性更强的加密算法。

高精度矩阵乘法是一个非常重要的计算工具,它在各个领域都有着广泛的应用。

通过不断地优化算法和利用计算机的特性,我们可以实现更高效、更准确的高精度矩阵乘法,从而推动科学研究和工程技术的发展。

矩阵乘法优化算法

矩阵乘法优化算法

矩阵乘法优化算法矩阵乘法是计算机科学中的重要算法之一,它在很多领域都有着广泛的应用,如图像处理、机器学习等。

然而,矩阵乘法的计算量非常大,尤其是在大规模数据处理时,会导致运行时间过长。

因此,为了提高矩阵乘法的效率,需要对其进行优化。

本文将介绍矩阵乘法的优化算法。

一、传统矩阵乘法在介绍优化算法之前,先来回顾一下传统的矩阵乘法算法。

假设有两个矩阵A和B,它们的大小分别为m×n和n×p,则它们相乘得到的结果C大小为m×p。

传统的矩阵乘法可以表示为以下代码:```pythondef matrix_multiply(A, B):m, n = A.shapen, p = B.shapeC = np.zeros((m, p))for i in range(m):for j in range(p):for k in range(n):C[i][j] += A[i][k] * B[k][j]return C```这段代码中使用了三重循环来实现矩阵相乘,在数据量较小的情况下可以得到正确的结果,但当数据量变大时运行速度会变得非常慢。

二、矩阵乘法的优化算法为了提高矩阵乘法的效率,可以采用以下几种优化算法:1.分块矩阵乘法分块矩阵乘法是将大矩阵划分成若干个小块,然后对每个小块进行计算。

这种方法可以减少计算量,提高计算效率。

具体实现如下:```pythondef block_matrix_multiply(A, B, block_size):m, n = A.shapen, p = B.shapeC = np.zeros((m, p))for i in range(0, m, block_size):for j in range(0, p, block_size):for k in range(0, n, block_size):C[i:i+block_size,j:j+block_size] +=np.dot(A[i:i+block_size,k:k+block_size],B[k:k+block_size,j:j+block_size])return C```在这段代码中,我们将大矩阵A和B划分成了若干个大小为block_size×block_size的小块,并对每个小块进行计算。

矩阵乘法优化算法

矩阵乘法优化算法

矩阵乘法优化算法矩阵乘法是一种常见的线性代数运算,它的计算复杂度较高,特别是在大规模矩阵相乘时。

为了提高矩阵乘法的性能,可以采用一些优化算法。

本文将介绍几种常见的矩阵乘法优化算法,并提供一些相关的参考内容。

一、基本的矩阵乘法算法首先,我们可以回顾一下基本的矩阵乘法算法。

假设我们有两个矩阵A和B,它们的维度分别为m×n和n×p,我们要计算它们的乘积C=A×B,结果矩阵C的维度为m×p。

具体的计算过程如下:```for i = 1 to mfor j = 1 to pc[i][j] = 0for k = 1 to nc[i][j] += a[i][k] * b[k][j]```这是一个简单的三重循环算法,时间复杂度为O(mnp)。

二、缓存友好的算法矩阵乘法算法的性能很大程度上取决于CPU缓存的使用效率。

缓存友好的算法能够合理地利用CPU缓存,减少缓存未命中的次数,从而提高计算性能。

一种缓存友好的算法是布洛克矩阵乘法算法。

它将矩阵划分成较小的子矩阵,并对子矩阵进行计算。

这样可以提高数据的局部性,减少缓存未命中的次数。

具体的实现方法和相关的优化技巧可以参考以下参考内容:- 参考书籍:《Computer Organization and Design: The Hardware/Software Interface》(第五版)作者:David A. Patterson, John L. Hennessy,该书第4.3.2节介绍了布洛克矩阵乘法的算法和优化原理。

三、并行计算算法另一种优化矩阵乘法的方法是利用并行计算的技术。

在多核CPU或者GPU上进行并行计算,可以将矩阵的计算任务分配给多个处理单元同时执行,从而提高计算性能。

目前,有很多并行计算工具和库可用于矩阵乘法的优化。

以下是一些相关的参考内容:- 参考文献:《High Performance Computing: Modern Systems and Practices》作者:Thomas Sterling,该书第11.4节介绍了在GPU上进行矩阵乘法的并行计算方法,包括CUDA和OpenCL的实现原理和优化技巧。

mali opencl 矩阵乘法

mali opencl 矩阵乘法

mali opencl 矩阵乘法Mali OpenCL 矩阵乘法Mali OpenCL 是 Arm Mali GPU 上的一种异构计算框架,它允许开发者利用 GPU 的并行处理能力来加速各种计算任务。

矩阵乘法是一种广泛用于各种应用中的基本线性代数操作,例如图像处理、科学模拟和机器学习。

利用 Mali OpenCL,可以在 GPU 上高效地执行矩阵乘法,从而显著提高计算速度。

矩阵乘法算法矩阵乘法是一个计算密集型操作,涉及两个矩阵相乘,产生一个新矩阵。

对于两个矩阵 A 和 B,它们的乘积 C 的元素可以通过以下公式计算:```C[i, j] = Σ(A[i, k] B[k, j])```其中 i 和 j 是矩阵 C 中元素的行索引和列索引,而 k 是求和迭代变量。

Mali OpenCL 实现Mali OpenCL 提供了一组函数来执行矩阵乘法。

这些函数针对Mali GPU 架构进行了优化,并利用其并行处理能力来加速计算。

开发人员可以使用这些函数轻松地将矩阵乘法操作集成到他们的OpenCL 程序中。

以下是使用 Mali OpenCL 执行矩阵乘法的示例代码:```// 创建两个矩阵cl_mem matrix_a = clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(float) num_rows_a num_cols_a, input_data_a, &error);cl_mem matrix_b = clCreateBuffer(context,CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, sizeof(float) num_rows_b num_cols_b, input_data_b, &error);// 创建结果矩阵cl_mem result_matrix = clCreateBuffer(context,CL_MEM_WRITE_ONLY, sizeof(float) num_rows_a num_cols_b, NULL, &error);// 创建内核cl_kernel matrix_multiply_kernel =clCreateKernel(program, "matrix_multiply", &error);// 设置内核参数clSetKernelArg(matrix_multiply_kernel, 0,sizeof(cl_mem), &matrix_a);clSetKernelArg(matrix_multiply_kernel, 1,sizeof(cl_mem), &matrix_b);clSetKernelArg(matrix_multiply_kernel, 2,sizeof(cl_mem), &result_matrix);clSetKernelArg(matrix_multiply_kernel, 3, sizeof(int), &num_rows_a);clSetKernelArg(matrix_multiply_kernel, 4, sizeof(int), &num_cols_a);clSetKernelArg(matrix_multiply_kernel, 5, sizeof(int), &num_rows_b);clSetKernelArg(matrix_multiply_kernel, 6, sizeof(int), &num_cols_b);// 执行内核clEnqueueNDRangeKernel(command_queue,matrix_multiply_kernel, 1, NULL, &global_work_size,&local_work_size, 0, NULL, NULL);// 获取结果clEnqueueReadBuffer(command_queue, result_matrix,CL_TRUE, 0, sizeof(float) num_rows_a num_cols_b,output_data, 0, NULL, NULL);```性能优化为了最大限度地提高 Mali OpenCL 矩阵乘法的性能,可以考虑以下优化技术:使用本地内存:本地内存是 GPU 中的一种高速缓存,可以减少对全局内存的访问,从而提高性能。

矩阵的相乘计算方法

矩阵的相乘计算方法

矩阵的相乘计算方法以下是 6 条关于矩阵相乘计算方法的内容:1. 嘿,你知道矩阵相乘其实就像是搭积木一样吗?看啊,比如说有个 2 行 3 列的矩阵 A 和一个 3 行 2 列的矩阵 B,当它们相乘时,就像是把 A 的每一行和 B 的每一列依次匹配搭起来,最后得出新的矩阵。

咱就这么想,不复杂吧?2. 哇塞,矩阵相乘真的很神奇呢!你想想看,就好像是不同的队伍在排列组合。

比如矩阵 C 是 3 行 4 列的,矩阵 D 是 4 行 5 列的,它们相乘的过程不就像是队伍之间巧妙地融合起来,形成全新的力量,这多有意思呀!3. 矩阵相乘啊,那简直就是数学世界里的一场精彩游戏!比如有两个矩阵 E 和 F,E 有 2 行 2 列,F 有 2 行 2 列,它们相乘就像是在玩对对碰,碰出精彩的结果。

还等什么,快来一起探索这场游戏吧!4. 嘿呀,矩阵相乘计算方法真的不难理解呀!就好像给你一堆小方块,让你把它们按照一定规则拼起来。

比如说矩阵 G 是 4 行 3 列,矩阵 H 是 3 行 1 列,它们相乘不就是在摆弄这些小方块,最后得到一个新的形状嘛,超级简单吧?5. 哎呀,矩阵相乘可太有意思啦!就好比是一场接力比赛,一个矩阵跑完一程传给另一个矩阵。

比如矩阵 I 是 3 行 2 列,矩阵 J 是 2 行 4 列,这就像是接力棒依次传递,最终抵达终点,得到结果,很形象吧!6. 矩阵相乘计算方法其实很好玩哦!你试着把它想成是在建造一个神奇的城堡。

矩阵 K 是 3 行 3 列,矩阵 L 是 3 行 2 列,它们相乘就是在一点点添加材料,建成独特的城堡。

是不是很有趣呀?我的观点结论是:矩阵相乘虽然看起来有点神秘,但是只要用形象的方式去理解,真的没那么难,而且还充满了乐趣呢!。

MapReduce实现大矩阵乘法(附源码及详细过程)

MapReduce实现大矩阵乘法(附源码及详细过程)

报告题目: MapReduce实现大矩阵乘法1、题目要求题目介绍:请使用MapReduce编程模型实现矩阵相乘。

要求如下:1. 按照MapReduce框架,对该问题进行剖析,并给出解决思路,要求图文并茂。

2. 展示运行代码并要求注释清晰。

3. 展示算法运行性能(不需要打印最终的矩阵输出结果图),要求分别给出在10^3, 10^4, 10^5维度的矩阵乘法运行时间,map worker和reduce worker的实时运行数量等。

2、系统环境操作系统环境:Linux Centos6.5Hadoop环境:hadoop 2.6.5 完全分布式系统(1个名称节点,1个数据节点)3、解决方案3.1 算法分析假设有两个矩阵A和矩阵B,如下图所示:矩阵乘法的数学公式如下:下图是两个矩阵A和B:A,B在文件中的存储可以是每一行元素占文件的一行,如下图:也可以是列表的形式,如下图:考虑到大矩阵的稀疏且数据量大,HDFS中的文件大小有限制,无法保证一个矩阵只保存在一个文件中,因此采用列表的方式来存储矩阵,其格式为<i,j, Aij>。

在Map阶段,Mapper按行读取矩阵A,B所在文件的数据,并将其转化为某种格式的键值对保存到上下文。

在Shffle阶段,Hadoop自动将相同key的value合并成<key, Iterable(values)>的格式,再将该格式的数据传递给reduce。

在Reduce阶段,Reducer接收Shuffle传递过来的<key, Iterable(values)>,处理数据得到最终的结果,并将结果输出到目标矩阵文件中。

这里的问题关键在于,如何设计Mapper—Shffle—Reducer之间传递的键值对数据。

考虑从目标矩阵出发,将Reducer处理的键值对的<key, Iterable(values)>中的key设置为目标矩阵的行坐标和列坐标,即”i, j”;那么Iterable(values)迭代器中的数据就应该是得到Cij需要的数据,即得到这些数据还需要标注其来自那个矩阵,另外根据公式:相乘的数据需要对应,因此,还需要标记其位置,因此有如下设计:矩阵A:<key, values> = {key:“目标矩阵的行序, 目标矩阵的列序”, value:“源矩阵a, 目标矩阵的行序, 源矩阵a的值”}如:{key:”1,1”, value:”a,1,1”}矩阵B:<key, values> = { key:“目标矩阵的行序, 目标矩阵的列序”, value:“源矩阵b, 标矩阵的列序, 源矩阵b的值”}如:{key:”1,1”, value:”b,1,10”}。

矩阵的乘法计算方法

矩阵的乘法计算方法

矩阵的乘法计算方法嘿,朋友们!今天咱们来聊聊矩阵乘法这个超有趣的东西。

这矩阵乘法啊,就像是一场奇特的数字舞蹈,每个数字都有自己的角色和舞步呢。

想象一下矩阵就是一群小士兵,排成整整齐齐的方阵。

当我们要做矩阵乘法的时候,就像是让这两群小士兵来一场独特的合作表演。

比如说有矩阵A和矩阵B,A就像一群蓝色小士兵,B就像一群红色小士兵。

首先呢,我们要搞清楚规则,这规则可不像普通的加法那么简单。

它有点像一种复杂的对对碰游戏。

对于矩阵A的行和矩阵B的列,就像是两个不同方向来的小队伍要进行对接。

A矩阵的行小士兵们要一个一个地去和B 矩阵列小士兵们握手、互动,这个互动的方式就是把对应的数字相乘再相加,哇,听起来是不是很神奇,就像是每个小士兵之间有着特殊的暗号一样。

要是把矩阵乘法比喻成做菜,那矩阵A的元素就像是各种食材,矩阵B 的元素就像是调料。

按照特定的顺序把食材和调料混合起来,才能做出一道独特的矩阵乘法大餐。

而且这个顺序可不能乱,乱了就像把盐当成糖放进蛋糕里,那可就全毁啦。

在计算的时候,有时候数字就像调皮的小精灵。

比如说一个大矩阵相乘,那里面的数字就像一群在迷宫里乱窜的小精灵,你得小心翼翼地按照规则把它们组合起来。

如果不小心弄错了一个数字的计算,那就像在一场音乐会里,一个乐手突然奏错了音符,整个和谐就被打破了。

而且矩阵乘法还有一些特别神奇的性质。

就像魔法一样,有时候两个矩阵相乘的结果和你预期的完全不一样。

这就好比你以为把红色和蓝色混合会得到紫色,结果却得到了一种全新的、谁也没见过的颜色。

有时候矩阵乘法还会让数字变得超级大或者超级小,就像一个小蚂蚁突然被放大成了大象,或者一个巨人突然缩小成了小矮人。

这完全取决于矩阵里的数字和它们之间的组合方式。

总的来说,矩阵乘法虽然有点复杂,但就像一场充满惊喜的冒险。

每一次计算都是一次新的探索,你永远不知道最后的结果会是怎样一个奇妙的数字组合。

就像打开一个神秘的宝盒,里面可能是闪闪发光的宝藏,也可能是一些让你挠头的小怪物数字。

矩阵乘法转置运算法则

矩阵乘法转置运算法则

矩阵乘法转置运算法则在这个信息爆炸的时代,大家都在追求效率,而矩阵乘法转置运算法则就是一个非常实用的工具,嘿,听起来是不是有点高深?其实不然,让我们一起深入探讨一下这个话题,轻松愉快地聊聊。

矩阵乘法嘛,想象一下你在厨房忙碌,得先把食材准备好,再来一场丰盛的盛宴。

每个矩阵就像是一个食材,必须按照一定的顺序和方式组合在一起,才能做出美味的佳肴。

比如说,A和B两个矩阵相乘,就像把鸡蛋和面粉混合,结果能做出松软的蛋糕。

但是,如果你想要转置这个矩阵,嘿,就是说把鸡蛋和面粉的位置换一换,听起来是不是有点儿意思?说到转置,简单来说,就是把行变成列,列变成行。

就像把一张椅子翻过来,你坐的感觉会不一样。

这种变化可不是随便来的,要遵循一些规则,尤其是在乘法的时候,转置的运算法则可是有趣得很。

我们先来看看两个矩阵的乘法,A乘以B,再转置。

这个时候,不是简单地把A和B翻个面哦,而是得先把B转置,再乘以A的转置。

听起来有点复杂,但其实就像你在准备一场大派对,得先把请柬发出去,再准备食物,这样一来,大家都能开心聚会。

转置运算的美妙之处在于它能让我们在处理数据的时候,游刃有余。

想象一下,你在办公室里整理文件,文件夹乱成一团。

突然,一个转身,文件夹按照字母顺序排列好,工作效率瞬间翻倍,哈哈,这种感觉真不错!就像数学里,矩阵的转置也能让我们更清晰地看到数据之间的关系。

比如,想要计算不同变量之间的关系,转置的运算能让我们迅速理清头绪。

别小看这转置,很多实际应用中都能见到它的身影。

无论是图像处理、机器学习,还是物理模型,转置矩阵都是个好帮手。

就像一个得力助手,默默地在背后支持你。

当你面对复杂的数据时,转置能够让你轻松找到解决方案。

这就像是从迷宫中走出来,豁然开朗,哇,原来前面还有一片大海等着我呢。

对于很多人来说,矩阵乘法转置可能是个陌生的概念,但只要好好琢磨,绝对能抓住其中的精髓。

我们经常会在生活中用到类似的逻辑,想象一下你的朋友们在聚会上,各自有各自的特点和风格,经过一次转置后,大家的互动和交流变得更加有趣,情感的交流也更加深入。

矩阵相乘的快速算法共9页word资料

矩阵相乘的快速算法共9页word资料

矩阵相乘的快速算法算法介绍矩阵相乘在进行3D变换的时候是经常用到的。

在应用中常用矩阵相乘的定义算法对其进行计算。

这个算法用到了大量的循环和相乘运算,这使得算法效率不高。

而矩阵相乘的计算效率很大程度上的影响了整个程序的运行速度,所以对矩阵相乘算法进行一些改进是必要的。

这里要介绍的矩阵算法称为斯特拉森方法,它是由v.斯特拉森在1969年提出的一个方法。

我们先讨论二阶矩阵的计算方法。

对于二阶矩阵a11 a12 b11 b12A = a21 a22B = b21 b22先计算下面7个量(1)x1 = (a11 + a22) * (b11 + b22);x2 = (a21 + a22) * b11;x3 = a11 * (b12 - b22);x4 = a22 * (b21 - b11);x5 = (a11 + a12) * b22;x6 = (a21 - a11) * (b11 + b12);x7 = (a12 - a22) * (b21 + b22);再设C = AB。

根据矩阵相乘的规则,C的各元素为(2)c11 = a11 * b11 + a12 * b21c12 = a11 * b12 + a12 * b22c21 = a21 * b11 + a22 * b21c22 = a21 * b12 + a22 * b22比较(1)(2),C的各元素可以表示为(3)c11 = x1 + x4 - x5 + x7c12 = x3 + x5c21 = x2 + x4c22 = x1 + x3 - x2 + x6根据以上的方法,我们就可以计算4阶矩阵了,先将4阶矩阵A和B划分成四块2阶矩阵,分别利用公式计算它们的乘积,再使用(1)(3)来计算出最后结果。

ma11 ma12 mb11 mb12A4 = ma21 ma22 B4 = mb21 mb22其中a11 a12 a13 a14 b11 b12 b13 b14ma11 = a21 a22 ma12 = a23 a24 mb11 = b21 b22 mb12 = b23 b24a31 a32 a33 a34 b31 b32 b33 b34ma21 = a41 a42 ma22 = a43 a44 mb21 = b41 b42 mb22 = b43 b44实现// 计算2X2矩阵void Multiply2X2(float& fOut_11, float& fOut_12, float& fOut_21, float& fOut_22,float f1_11, float f1_12, float f1_21, float f1_22,float f2_11, float f2_12, float f2_21, float f2_22){const float x1((f1_11 + f1_22) * (f2_11 + f2_22));const float x2((f1_21 + f1_22) * f2_11);const float x3(f1_11 * (f2_12 - f2_22));const float x4(f1_22 * (f2_21 - f2_11));const float x5((f1_11 + f1_12) * f2_22);const float x6((f1_21 - f1_11) * (f2_11 + f2_12));const float x7((f1_12 - f1_22) * (f2_21 + f2_22));fOut_11 = x1 + x4 - x5 + x7;fOut_12 = x3 + x5;fOut_21 = x2 + x4;fOut_22 = x1 - x2 + x3 + x6;}// 计算4X4矩阵void Multiply(CLAYMATRIX& mOut, const CLAYMATRIX& m1, const CLAYMATRIX& m2) {float fTmp[7][4];// (ma11 + ma22) * (mb11 + mb22)Multiply2X2(fTmp[0][0], fTmp[0][1], fTmp[0][2], fTmp[0][3],m1._11 + m1._33, m1._12 + m1._34, m1._21 + m1._43, m1._22 + m1._44,m2._11 + m2._33, m2._12 + m2._34, m2._21 + m2._43, m2._22 + m2._44);// (ma21 + ma22) * mb11Multiply2X2(fTmp[1][0], fTmp[1][1], fTmp[1][2], fTmp[1][3],m1._31 + m1._33, m1._32 + m1._34, m1._41 + m1._43, m1._42 + m1._44,m2._11, m2._12, m2._21, m2._22);// ma11 * (mb12 - mb22)Multiply2X2(fTmp[2][0], fTmp[2][1], fTmp[2][2], fTmp[2][3],m1._11, m1._12, m1._21, m1._22,m2._13 - m2._33, m2._14 - m2._34, m2._23 - m2._43, m2._24 - m2._44);// ma22 * (mb21 - mb11)Multiply2X2(fTmp[3][0], fTmp[3][1], fTmp[3][2], fTmp[3][3],m1._33, m1._34, m1._43, m1._44,m2._31 - m2._11, m2._32 - m2._12, m2._41 - m2._21, m2._42 - m2._22);// (ma11 + ma12) * mb22Multiply2X2(fTmp[4][0], fTmp[4][1], fTmp[4][2], fTmp[4][3],m1._11 + m1._13, m1._12 + m1._14, m1._21 + m1._23, m1._22 + m1._24,m2._33, m2._34, m2._43, m2._44);// (ma21 - ma11) * (mb11 + mb12)Multiply2X2(fTmp[5][0], fTmp[5][1], fTmp[5][2], fTmp[5][3],m1._31 - m1._11, m1._32 - m1._12, m1._41 - m1._21, m1._42 - m1._22,m2._11 + m2._13, m2._12 + m2._14, m2._21 + m2._23, m2._22 + m2._24);// (ma12 - ma22) * (mb21 + mb22)Multiply2X2(fTmp[6][0], fTmp[6][1], fTmp[6][2], fTmp[6][3],m1._13 - m1._33, m1._14 - m1._34, m1._23 - m1._43, m1._24 - m1._44,m2._31 + m2._33, m2._32 + m2._34, m2._41 + m2._43, m2._42 + m2._44);// 第一块mOut._11 = fTmp[0][0] + fTmp[3][0] - fTmp[4][0] + fTmp[6][0];mOut._12 = fTmp[0][1] + fTmp[3][1] - fTmp[4][1] + fTmp[6][1];mOut._21 = fTmp[0][2] + fTmp[3][2] - fTmp[4][2] + fTmp[6][2];mOut._22 = fTmp[0][3] + fTmp[3][3] - fTmp[4][3] + fTmp[6][3];// 第二块mOut._13 = fTmp[2][0] + fTmp[4][0];mOut._14 = fTmp[2][1] + fTmp[4][1];mOut._23 = fTmp[2][2] + fTmp[4][2];mOut._24 = fTmp[2][3] + fTmp[4][3];// 第三块mOut._31 = fTmp[1][0] + fTmp[3][0];mOut._32 = fTmp[1][1] + fTmp[3][1];mOut._41 = fTmp[1][2] + fTmp[3][2];mOut._42 = fTmp[1][3] + fTmp[3][3];// 第四块mOut._33 = fTmp[0][0] - fTmp[1][0] + fTmp[2][0] + fTmp[5][0];mOut._34 = fTmp[0][1] - fTmp[1][1] + fTmp[2][1] + fTmp[5][1];mOut._43 = fTmp[0][2] - fTmp[1][2] + fTmp[2][2] + fTmp[5][2];mOut._44 = fTmp[0][3] - fTmp[1][3] + fTmp[2][3] + fTmp[5][3];}比较在标准的定义算法中我们需要进行n * n * n次乘法运算,新算法中我们需要进行7log2n次乘法,对于最常用的4阶矩阵:原算法新算法加法次数 48 72(48次加法,24次减法)乘法次数 64 49需要额外空间 16 * sizeof(float) 28 * sizeof(float)新算法要比原算法多了24次减法运算,少了15次乘法。

云计算中大型矩阵运算的安全外包方案研究

云计算中大型矩阵运算的安全外包方案研究

云计算中大型矩阵运算的安全外包方案研究随着云计算的发展,外包计算得到了广泛应用。

外包计算使计算资源有限的客户端能够将繁重复杂的计算任务外包给具有强大计算能力的云服务器。

外包计算在飞速发展的同时也面临着挑战:(1)数据的隐私性:客户端外包给云服务器的数据是敏感的,比如商业机密、医疗数据等等,云服务器可能会泄露这些隐私数据;(2)计算结果的可验证性:云服务都是由第三方企业提供的,云服务器可能会为了节省计算开销而随机返回一个结果给客户端,客户端需要对云服务器返回的结果进行验证;(3)高效性:当客户端选择将计算任务外包时,希望外包能够帮助降低计算开销,因此要求外包后的计算开销低于原来的开销。

矩阵运算的外包属于外包计算的研究热点,本文围绕矩阵运算外包计算方案,主要进行了如下研究:1.本文构造了一个可验证的、安全的、高效的大型矩阵乘法外包计算方案(VEPP)。

方案中利用大素数、随机数对矩阵的元素进行盲化,云服务器对加密矩阵执行乘法运算,客户端巧妙地利用中国剩余定理的性质,只需要一次解密就可以得到矩阵的元素,效率比较高;我们通过形式化的安全性证明有效说明了方案的高安全性:输入隐私是信息论安全的,输出隐私在随机预言机模型下能够抵抗适应性选择密文攻击;对云服务器返回的结果进行了验证。

2.在矩阵乘法外包计算方案的研究基础上,我们提出了一个大型矩阵求逆外包计算方案(MIOC)。

我们引入了随机矩阵B来盲化需要求逆的矩阵A,保护了外包数据的隐私,最后利用性质:(AB)-1=B-1A-1得到逆矩阵A-1;方案中客户端会对云服务器返回的计算结果进行有效验证,以防止遭受第三方攻击而被篡改或者云服务器本身的不诚信;我们给出了详细的理论和实验分析,证明了方案是相对高效的。

3.我们将矩阵求逆外包计算方案应用在求解线性方程组场景下,提出了一个线性方程组外包计算方案(LSEOC)。

LSEOC方案继承了MIOC方案的可验证性、安全性、高效性等优点,客户端的计算开销为O(n2)。

云环境下矩阵乘法外包计算方案

云环境下矩阵乘法外包计算方案

云环境下矩阵乘法外包计算方案聂恒太;王少辉【摘要】在外包计算模式中,资源受限的用户可以将繁重的计算工作外包到远程云服务器上进行,这在降低终端主机计算负担的同时,也带来了新的安全问题和挑战,其中最主要的两个问题是用户输入、输出信息的保护和计算结果的正确性验证.为了解决这两个问题,Gang Sheng等提出了一种可公开验证的矩阵乘法外包方案MD-VCMatrix,但是该方案主要侧重于外包结果的正确性验证,对于用户输入信息和输出信息隐私的保护没有设计具体的保护方案.为了防止用户敏感信息泄露,同时解决结果的正确性验证问题,在MD-VCMatrix基础上,文中利用稀疏矩阵对用户的敏感数据进行保护,提出了一种满足输入输出信息保护和高可验证概率的矩阵乘法外包方案.通过与现有方案比较,该方案不仅能够有效保护用户的敏感信息,而且在执行效率或可验证概率等方面优于现有方案.【期刊名称】《计算机技术与发展》【年(卷),期】2018(028)008【总页数】5页(P119-123)【关键词】云计算;外包计算;矩阵乘法;公开验证【作者】聂恒太;王少辉【作者单位】南京邮电大学计算机学院,江苏南京 210003;江苏省无线传感网高技术研究重点实验室,江苏南京 210003;江苏省大数据安全与智能处理重点实验室,江苏南京 210023;南京邮电大学计算机学院,江苏南京 210003;江苏省无线传感网高技术研究重点实验室,江苏南京 210003;江苏省大数据安全与智能处理重点实验室,江苏南京 210023【正文语种】中文【中图分类】TP3011 概述云计算作为一种新的计算模式,允许公司、组织和个人从服务提供商租用计算和云存储资源[1-2]在云服务器完成对本地的计算任务。

介于云计算强大的计算能力,计算能力薄弱的客户端或设备可以外包它们繁重的计算任务和数据(例如,大矩阵乘法或代数计算)给云服务器计算,尽可能减少用户端计算成本。

近年来,外包计算[3-9]受到广泛关注,已经成为一个热门的研究课题。

MapReduce实现大矩阵乘法(附源码及详细过程)

MapReduce实现大矩阵乘法(附源码及详细过程)

报告题目: MapReduce实现大矩阵乘法1、题目要求题目介绍:请使用MapReduce编程模型实现矩阵相乘。

要求如下:1. 按照MapReduce框架,对该问题进行剖析,并给出解决思路,要求图文并茂。

2. 展示运行代码并要求注释清晰。

3. 展示算法运行性能(不需要打印最终的矩阵输出结果图),要求分别给出在10^3, 10^4, 10^5维度的矩阵乘法运行时间,map worker和reduce worker的实时运行数量等。

2、系统环境操作系统环境:Linux Centos6.5Hadoop环境:hadoop 2.6.5 完全分布式系统(1个名称节点,1个数据节点)3、解决方案3.1 算法分析假设有两个矩阵A和矩阵B,如下图所示:矩阵乘法的数学公式如下:下图是两个矩阵A和B:A,B在文件中的存储可以是每一行元素占文件的一行,如下图:也可以是列表的形式,如下图:考虑到大矩阵的稀疏且数据量大,HDFS中的文件大小有限制,无法保证一个矩阵只保存在一个文件中,因此采用列表的方式来存储矩阵,其格式为<i,j, Aij>。

在Map阶段,Mapper按行读取矩阵A,B所在文件的数据,并将其转化为某种格式的键值对保存到上下文。

在Shffle阶段,Hadoop自动将相同key的value合并成<key, Iterable(values)>的格式,再将该格式的数据传递给reduce。

在Reduce阶段,Reducer接收Shuffle传递过来的<key, Iterable(values)>,处理数据得到最终的结果,并将结果输出到目标矩阵文件中。

这里的问题关键在于,如何设计Mapper—Shffle—Reducer之间传递的键值对数据。

考虑从目标矩阵出发,将Reducer处理的键值对的<key, Iterable(values)>中的key设置为目标矩阵的行坐标和列坐标,即”i, j”;那么Iterable(values)迭代器中的数据就应该是得到Cij需要的数据,即得到这些数据还需要标注其来自那个矩阵,另外根据公式:相乘的数据需要对应,因此,还需要标记其位置,因此有如下设计:矩阵A:<key, values> = {key:“目标矩阵的行序, 目标矩阵的列序”, value:“源矩阵a, 目标矩阵的行序, 源矩阵a的值”}如:{key:”1,1”, value:”a,1,1”}矩阵B:<key, values> = { key:“目标矩阵的行序, 目标矩阵的列序”, value:“源矩阵b, 标矩阵的列序, 源矩阵b的值”}如:{key:”1,1”, value:”b,1,10”}。

可验证的安全矩阵行列式计算云外包协议

可验证的安全矩阵行列式计算云外包协议

可验证的安全矩阵行列式计算云外包协议申银杰【期刊名称】《计算机与现代化》【年(卷),期】2015(000)005【摘要】云计算外包越来越流行的同时也带来了新的安全问题和挑战:输入/输出数据的隐私性和结果的可验证性。

本文围绕云计算环境下的安全矩阵行列式计算外包展开研究,构建一个适用于大矩阵行列式计算的可验证的安全云外包协议,在客户端将原始矩阵盲化加密后传送到云服务器端执行计算,云服务器将计算结果和验证值返回给客户端进行解密和验证。

理论分析表明,在恶意云的安全模型下协议满足正确性、输入/输出私密性、高效性和结果可验证性。

%Computation outsourcing to the cloud has become a popular application .This computing paradigm brings in some new security concerns and challenges , such as input/output privacy and result verifiability .A protocol is designed to enable secure , robust cheating resistant , and efficient outsourcing of matrix determinant computation to a maliciouscloud .Client encrypts the o-riginal matrix and then transfers it to cloud server to compute .Analysis shows that the proposed protocol is correct , secure, and robust cheating resistant .Extensive theoretical analysis also shows its high-efficiency .【总页数】4页(P103-106)【作者】申银杰【作者单位】北京工业大学计算机学院,北京 100124【正文语种】中文【中图分类】TP309【相关文献】1.安全高效的大矩阵行列式计算云外包协议 [J], 任晓霞;黄宏宇2.矩阵乘积的高效可验证安全外包计算 [J], 杨波;武朵朵;来齐齐3.安全可验证的行列式云外包计算及其电子交易方案 [J], 孙瑞;田有亮4.安全可验证的行列式云外包计算及其电子交易方案 [J], 孙瑞;田有亮;;5.安全可验证的行列式云外包计算及其电子交易方案 [J], 孙瑞;田有亮;;因版权原因,仅展示原文概要,查看原文内容请购买。

云环境下基于大规模矩阵QR分解的外包计算

云环境下基于大规模矩阵QR分解的外包计算

云环境下基于大规模矩阵QR分解的外包计算
吴宏锋;任桓枢
【期刊名称】《信息网络安全》
【年(卷),期】2018(0)3
【摘要】把运算耗时的计算任务交给非可信的云服务器进行外包计算是目前云计算背景下的热点问题之一.大型方程组的求解外包计算协议不仅要求高效性,也要满足计算结果的可验证性和避免客户信息泄露等.文章利用大规模矩阵的QR分解设计了可验证的外包计算协议.和其他方案相较,该协议没有基于任何密码学假设,可高效求解大规模线性方程组.此外,该协议将原始矩阵盲化后外包给云服务器进行QR 分解,增加了协议的隐私性.文章还提供了简单的运算,以验证结果的正确性.
【总页数】5页(P86-90)
【作者】吴宏锋;任桓枢
【作者单位】北方工业大学理学院,北京100144;北方工业大学理学院,北京100144
【正文语种】中文
【中图分类】TP309
【相关文献】
1.云环境下矩阵乘法外包计算方案 [J], 聂恒太;王少辉
2.基于大规模矩阵Jordan分解的外包计算 [J], 吴宏锋;闫晶晶
3.基于大规模矩阵Jordan分解的外包计算 [J], 吴宏锋;闫晶晶;
4.云环境下大规模分布式计算数据感知的调度系统 [J], 刘汪根; 郑淮城; 荣国平
5.云环境下大规模分布式计算数据感知的调度系统 [J], 刘汪根;郑淮城;荣国平因版权原因,仅展示原文概要,查看原文内容请购买。

cvxpy矩阵乘法

cvxpy矩阵乘法

cvxpy矩阵乘法矩阵乘法是线性代数中的重要概念,它在数学和工程领域中具有广泛的应用。

而cvxpy是一个用于凸优化的Python库,它可以用来求解各种优化问题,其中包括矩阵乘法。

矩阵乘法是指将两个矩阵相乘得到一个新的矩阵的运算。

在cvxpy 中,矩阵乘法可以通过使用乘法运算符“@”来实现。

下面我们将通过一个具体的例子来说明如何使用cvxpy进行矩阵乘法。

假设我们有两个矩阵A和B,它们的维度分别为n×m和m×p。

我们想要求解它们的乘积C=A×B,即得到一个新的矩阵C,它的维度为n×p。

在cvxpy中,我们可以使用以下代码来实现这个计算过程:```pythonimport cvxpy as cpimport numpy as np# 定义矩阵A和BA = np.random.rand(n, m)B = np.random.rand(m, p)# 定义变量C = cp.Variable((n, p))# 定义约束条件constraints = [C == A @ B]# 定义目标函数objective = cp.Minimize(cp.sum(C))# 定义优化问题problem = cp.Problem(objective, constraints)# 求解优化问题problem.solve()```在上述代码中,我们首先导入了cvxpy库,并且使用numpy生成了两个随机矩阵A和B。

然后,我们定义了一个变量C,它的维度与乘积矩阵C相同。

接下来,我们使用约束条件C == A @ B来表示矩阵乘法的关系。

最后,我们定义了一个目标函数和一个优化问题,并使用problem.solve()来求解优化问题。

求解完成后,我们可以通过C.value来获取解的值。

cvxpy库不仅可以用来求解矩阵乘法,还可以用来求解其他各种优化问题。

它提供了丰富的优化工具和算法,可以应对不同类型的优化问题。

操作系统实验(进程)多线程实现矩阵乘法

操作系统实验(进程)多线程实现矩阵乘法

多线程编程实现矩阵乘法
一、实验目的
通过实验,熟悉基于Win32线程库和Pthread线程库的编程环境,掌握利用Windows API和Pthread API进行多线程编程的方法,进一步加深对线程概念以及多线程编程相关事项的理解。

二、实验内容
1. 在Windows操作系统上,利用Windows API编写应用程序实现矩阵乘法。

2. 在Linux操作系统上,利用Pthread API编写应用程序实现矩阵乘法。

3. 在上述两种环境下,实现相乘操作的两个矩阵均作为应用程序的输入参数动态生成,并输出计算结果。

4. 在程序实现过程中,要求每个乘积矩阵元素的计算过程均由一个独立的线程实现。

三、实验步骤
1、windows上:打开codeblocks IDE,创建新C++项目,在新文件中输入如下代码,并编译运行。

2、linux上
打开gedit输入下面的代码,保存为Thread.c,在终端进入文档保存的目录并输入
gcc –c Thread.c
gcc –o Thread Thread.o –lpthread
./Thread 得到输出结果。

四、程序运行时的初值和运行结果
1、在Windows操作系统上,利用Windows API实现矩阵乘法,程序运行结果
2. 在Linux操作系统上,利用Pthread API实现矩阵乘法程序运行结果
Pthread_create()
第一个参数为指向线程标识符的指针。

第二个参数用来设置线程属性。

第三个参数是线程运行函数的起始地址。

最后一个参数是运行函数的参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2017-07-17 修回日期:2017-11-08 网络出版时间:2018-03-07基金项目:国家自然科学基金(61572260);江苏省科技支撑计划项目(BE 2015702)作者简介:聂恒太(1992-),男,硕士研究生,研究方向为信息系统的安全与隐私保护;王少辉,博士,副教授,研究方向为信息安全㊁密码学㊂网络出版地址:http :// /kcms /detail /61.1450.TP.20180307.1422.026.html云环境下矩阵乘法外包计算方案聂恒太1,2,3,王少辉1,2,3(1.南京邮电大学计算机学院,江苏南京210003;2.江苏省无线传感网高技术研究重点实验室,江苏南京210003;3.江苏省大数据安全与智能处理重点实验室,江苏南京210023)摘 要:在外包计算模式中,资源受限的用户可以将繁重的计算工作外包到远程云服务器上进行,这在降低终端主机计算负担的同时,也带来了新的安全问题和挑战,其中最主要的两个问题是用户输入㊁输出信息的保护和计算结果的正确性验证㊂为了解决这两个问题,Gang Sheng 等提出了一种可公开验证的矩阵乘法外包方案MD -VC Matrix ,但是该方案主要侧重于外包结果的正确性验证,对于用户输入信息和输出信息隐私的保护没有设计具体的保护方案㊂为了防止用户敏感信息泄露,同时解决结果的正确性验证问题,在MD -VC Matrix 基础上,文中利用稀疏矩阵对用户的敏感数据进行保护,提出了一种满足输入输出信息保护和高可验证概率的矩阵乘法外包方案㊂通过与现有方案比较,该方案不仅能够有效保护用户的敏感信息,而且在执行效率或可验证概率等方面优于现有方案㊂关键词:云计算;外包计算;矩阵乘法;公开验证中图分类号:TP 301 文献标识码:A 文章编号:1673-629X (2018)08-0119-05doi :10.3969/j.issn.1673-629X.2018.08.025A Matrix Multiplication Outsourcing Calculation Scheme inCloud EnvironmentNIE Heng -tai 1,2,3,WANG Shao -hui 1,2,3(1.School of Computer ,Nanjing University of Posts and Telecommunications ,Nanjing 210003,China ;2.Jiangsu High Technology Research Key Laboratory for Wireless Sensor Networks ,Nanjing 210003,China ;3.Jiangsu Key Laboratory of Big Data Security &Intelligent Processing ,Nanjing 210023,China )Abstract :In outsourced computing ,resources -constrained clients can outsource their heavy computation workloads to remote cloud serv⁃er ,which significantly reduce the computational burden at the end host and bring in new security concerns and challenges at the same time.Among them ,the two most important problems are the protection of users ’input and output information and the correctness verifi⁃cation of calculation results.For these two problems ,a scheme for publicly verifiable computation of outsourced matrix multiplication named MD -VC Matrix is proposed by Gang Sheng ,but it mainly focuses on the correctness verification of the outsourcing results without specific protection scheme for users ’input and output information privacy protection.In order to prevent users from leaking sensitive in⁃formation and verify the correctness of the results ,we adopt a random sparse matrix to protect clients ’confidential data ,and propose a more efficient scheme for publicly verifiable computation of outsourced matrix multiplication with high verification probability based on MD -VC Matrix .Compared with the existing schemes ,the result shows that the proposed scheme can not only effectively protect the sensi⁃tive information of users ,but also outperforms the existing schemes in terms of execution efficiency or verification probability.Key words :cloud computing ;outsourced computation ;matrix multiplication ;public verification1 概 述云计算作为一种新的计算模式,允许公司㊁组织和个人从服务提供商租用计算和云存储资源[1-2]在云服务器完成对本地的计算任务㊂介于云计算强大的计算能力,计算能力薄弱的客户端或设备可以外包它们繁重的计算任务和数据(例如,大矩阵乘法或代数计算)给云服务器计算,尽可能减少用户端计算成本㊂近年来,外包计算[3-9]受到广泛关注,已经成为一个热门的第28卷 第8期2018年8月 计算机技术与发展COMPUTER TECHNOLOGY AND DEVELOPMENT Vol.28 No.8Aug. 2018研究课题㊂与外包计算迅速发展相对应的是这种新的计算模型带来的两个主要安全挑战㊂用户面临的第一个挑战是数据隐私㊂外包计算的输入和输出数据通常包含用户不想暴露在云服务器上的敏感信息,而云服务通常假定不完全可信㊂因此,需要对原始数据和计算结果采取诸如数据伪装㊁问题转化和加密等安全措施,以防止用户的信息泄露㊂第二个挑战是计算结果的正确性验证㊂一般除了软件错误或硬件故障外,云服务器可能不按照外包方案的具体程序执行,比如云服务器直接选择难以区分的无效结果返回给用户㊂所以,用户必须具备进行结果正确性验证或者委托第三方验证机构进行结果正确性验证的能力㊂大矩阵运算[10-13]已被广泛应用于当前的计算研究㊁电子应用和3D图像处理等领域㊂因此,如何把高复杂度的矩阵相关运算安全外包给云服务器进行计算是外包计算领域的一个重要内容㊂矩阵相关算法主要包括矩阵乘法㊁矩阵求逆和线性方程组求解等,已经有了大量的研究成果㊂Li Hongwei等[14]在2015年提出了一种可公开验证的矩阵乘法外包算法,算法中采用了伪随机函数方法,在得到计算结果的同时提高了算法效率,但是该方案的验证算法过于复杂,用户端计算量太大,无法达到实际应用的效果㊂2013年,Lei Xinyu等[15]提出了一种大规模矩阵求逆的外包计算方案,该方案利用置换矩阵和稀疏矩阵成功地保护了用户的输入和输出隐私,但是用户在整个算法执行过程中计算负载过高,也无法在实际中使用㊂2013年,Wang Cong等[16]利用数学中的迭代法设计了一种新型的计算大规模线性方程的方法㊂但是,初始迭代向量的选择随机性太大,具有很大的偶然性,而且用户要与云端进行多次的交互致使用户端的时间开销依然很大,所以很难使用㊂2016年,Zhang Jian等[17]提出了一种针对大规模线性方程组的外包方案,通过特殊的置换函数和系数矩阵保护原有矩阵不被窃取,但是同样存在着用户端计算负载过高的问题㊂不管如何设计外包方案,如果用户端在整个协议执行过程中计算所消耗的时间接近或超过了自己直接解决问题所需的时间,那么这种外包方案是没有多大意义的㊂2016年,Gang Sheng等提出了一种矩阵乘法外包方案MD-VC Matrix[18],该方案主要侧重于验证效率的改进,未对输入和输出信息的隐私性进行保护㊂文中在MD-VC Matrix方案的基础上考虑数据隐私保护,提出了一个新的矩阵乘法外包方案,并在执行效率㊁算法的隐私性保护和可验证性等方面与其他方案进行了综合比较㊂2 问题描述2.1 系统模型如图1所示,可公开验证的矩阵乘法计算外包方案由三方协作完成:外包用户㊁云服务器和验证方㊂外包用户一般计算或存储资源受限,将矩阵和向量的乘法运算外包给云服务器㊂云服务器利用其强大的计算能力执行来自外包用户的外包计算业务㊂而验证方主要验证云服务器的临时结果是否正确㊂如果结果正确,将临时结果返回给用户㊂图1 系统模型该方案包括如下五个子算法:(1)KeyGen(1λ)→PK:以安全参数λ作为输入,算法输出公共参数PK㊂(2)ProbGen(M,x)→(BE,VE):用户对原始矩阵M和原始向量x进行盲化处理,将盲化结果BE发送给云服务器,验证数据VE发送给验证方㊂(3)Compute(BE)→(y',v):云服务器计算得到临时结果y'和验证信息v,这两个信息都会发送给验证方㊂(4)Verify(VE,y',v)→true/false:验证方接收到数据y'和v,利用VE,验证方验证结果的正确性,若正确则将结果发送给用户,否则提示用户结果有误㊂(5)Solve(y')→y:用户接收到验证方发送的信息y',计算出矩阵运算的结果M㊃x㊂2.2 攻击模型外包系统模型所面临的安全威胁主要来自于云服务器的恶意行为㊂一般来说,有两种常见的外包模型:半诚实模型和恶意模型[19]㊂在半诚实模型中,云服务器会忠实地执行协议流程,但其还会侦听并分析协议中传输的信息,进而得到诸如用户的输入输出等敏感信息㊂而在恶意模型中,云服务器是主动攻击者,其很有可能会因为软硬件错误或者商业利益的诱导等原因故意发送一个难以区分的无效结果给用户,同时希望恶意行为不被检测出来㊂因此,外包协议必须能够进行结果验证并具有高可验证性㊂文中采用恶意模型即云服务器被假定为恶意的服务器,而验证方认定为诚㊃021㊃ 计算机技术与发展 第28卷实服务器㊂设计目标主要包括以下几点:(1)隐私性:在执行新方案时,云服务器在协议交互的过程中无法获取到用户的输入和输出信息㊂(2)可验证性:云服务器的计算结果必须通过验证方验证成功,否则不会发送给用户㊂错误结果可以通过验证的概率极低,文中方案可验证概率接近于1㊂(3)效率:无论执行效率和内在需求的要求都要尽可能低,以减少客户端的计算负担㊂2.3 数学定义定义1(非对称双线性对):设G 1㊁G 2和G T 是阶为大素数q 的乘法循环群,若满足以下条件,则称e :G 1×G 2→G T 是一个非对称双线性映射㊂(1)双线性:对于任意的a ,b ∈Z q ,g ∈G 1和h ∈G 2,e (g a ,h b )=e (g ,h )ab ㊂(2)非退化性:对于任意的g ∈G 1,若h ∈G 2,e (g ,h )=1,g =1㊂(3)可计算性:对于g ∈G 1,h ∈G 2,存在有效算法计算得出e (g ,h )㊂3 新方案设计新方案的每个子算法依次构建如下:KeyGen (1λ):以安全参数λ作为输入,算法生成双线性对映射(p ,g 1,g 2,G 1,G 2,G T ,e )←G (1λ),其中g 1和g 2分别是G 1和G 2的生成元,用户选择随机数α∈Z p 和向量r ∈Z n p ,计算PK ,其中α和r 均由用户保存㊂PK =(PK 1,PK 2, ,PK n ),PK i =e (g (αr i)1,g 2)ProbGen(M ,x ):给定原始矩阵M ∈Zn ×d p和向量x =(x 1,x 2, ,x d )Τ∈Z d p,用户随机选择每行每列都只有一个非零元素的稀疏矩阵A 1和A 2对输入信息进行盲化,同时选择K =(k 1,k 2, ,k d )∈Z d p㊂用户按照以下公式计算M '㊁m ㊁x '㊁ρx '㊁VK x '和w ㊂M '=A 1㊃M ㊃A -12m =r ㊃M 'x '=A 2㊃xρx '=∏d i =1FK(i )x'iVK x '=e (ρx ',g 2)w =(w 1,w 2, ,w d )其中,w i =g αmi1㊃F K (i ),F K (i )是一个代数伪随机函数,表示如下:F K (i )=g k i 1,i ∈[1,d ]计算结束后,用户将M '㊁w 和x '发送给云服务器,而将VK π′发送给验证方㊂Compute(M ',w ,x '):云服务器计算并发送信息y '和v 给验证方,其中y '=M '㊃x ',v =∏d i =1wx 'i i㊂Verify(VK x ',PK ,y ',v ):验证方验证下面等式是否成立:e (v ,g 2)=∏d i =1(PK i)y 'i㊃VK x'其中,y '=(y '1,y '2, ,y 'i )㊂若等式成立,则把信息y '发送给用户㊂Solve(y ')→y :若用户接收到验证方发来的信息y ',则通过以下公式解密出真正的结果y :y =A -11㊃y '4 方案分析4.1 正确性分析定理1:如果数据PK M '㊁VK x′㊁y '和v 被正确计算,那么文中的验证方案是正确的㊂证明:根据算法KenGen 和Compute ,可以分别得知m =r ㊃M '和y '=M '㊃x ',由此可以推出m ㊃x '=r ㊃y ',即∑d i =1m i x 'i=∑n i =1r iy'i㊂在验证阶段,主要由验证方检验等式e (v ,g 2)=∏d i =1(PK i)y 'i㊃VK x′是否成立,推导过程如下:e (v ,g 2)=e (∏d i =1wx 'ii,g 2)=e (∏d i =1gαm i x 'i 1,g 2)㊃e (∏di =1F K (i )x 'i,g 2)=e (g ∑di =1αm i x 'i1,g2)㊃VK x′=∏n i =1e (gαr i y 'i 1,g 2)㊃VK x′=∏n i =1(PK i )y 'i㊃VK x′由上面的推导过程可知,文中的验证方案正确㊂定理2:如果协议正确执行,那么用户计算的y 是矩阵乘法运算的正确结果㊂证明:根据KenGen ,ProbGen 和Compute 三个阶段的算法,可知:M '=A 1㊃M ㊃A -12;x '=A 2㊃x ;y '=M '㊃x '可以得出:y '=A 1㊃M ㊃A -12㊃A 2㊃x =A 1㊃M ㊃x 从而有:y =M ㊃x =A -11㊃y '因此,只要协议正确执行,计算结果y 是矩阵乘法运算的正确结果㊂4.2 安全性分析(1)输入信息的隐私性㊂在恶意模型下,文中协议能够保护输入矩阵M 和㊃121㊃ 第8期 聂恒太等:云环境下矩阵乘法外包计算方案向量x 的隐私㊂假设矩阵的每个元素是s bit ,所以矩阵A 1大约有ns bit 的信息,故乘法因子A 1共有2ns 种可能㊂同理分析,对于矩阵A 2,共有2ds 种可能㊂而对于原始矩阵M ,每行最多可以有d 个元素,则共存在2dns 种可能㊂因此矩阵M '共有2(d +1)ns +ds 种选择的可能㊂按照以上思路分析,向量x '共有22ds种选择的可能㊂也就是说,已得矩阵M ',想得知矩阵M 的概率为12(d +1)ns +ds,而已得x ',想得知x 的概率为122ds ㊂即使云服务器想要通过蛮力搜索法获得M 和x 需要的期望时间分别是2(d +1)ns +ds 和22ds ,因为是大规模矩阵,所以n 和d 都是很大的数,因此服务器想要通过蛮力搜索法得到M 和x 是不可能的㊂文中方案将初始矩阵M 伪装成M ',将向量x 伪装成x ',有效保护了用户数据隐私㊂(2)输出信息的隐私性㊂本协议中初始矩阵M 伪装成M ',向量x 伪装成x ',这样的加密措施能够有效保护用户数据隐私㊂通过输入信息安全性,可以得知云服务器破解得到矩阵M '和向量x '信息的概率分别为12(d +1)ns +ds和122ds,因此云服务器想得到y 信息的概率为12(d +1)ns +3ds㊂这样的概率足以保护y 的安全性㊂(3)公开验证的安全㊂在验证阶段,只要结果是正确的,肯定能够通过验证等式e (v ,g 2)=∏di =1(PK i )y 'i㊃VK x′㊂服务器伪造数据通过验证的概率极低㊂假设服务器已经得知PK i 和VK x′㊂假设矩阵的每个元素是s bit ,服务器伪造的数据y '必须满足等式∑di =1m i x 'i =∑ni =1r i y 'i ,y '是一个n 维的向量,共有12ns 种可能,所以伪造y '成功的概率则是12(2d +n )s㊂因为n 和d 是很大的数,所以服务器伪造成功的概率很低㊂4.3 性能分析文中协议涉及的运算主要包括整数的加减乘运算㊁双线性运算和模幂运算㊂由于整数的加减运算复杂度较低,在计算算法效率方面只考虑乘法运算㊁双线性运算和模幂运算㊂文中用BC 表示双线性运算,EC 表示模幂运算,MC 表示乘法运算㊂下面将文中算法与现有算法在执行效率㊁可验证概率进行比较,由于云端计算能力强,速度快,只考虑用户的计算负载㊂结果如表1所示㊂从表1可以看出,文中算法的可验证概率远高于Lei Xinyu 等和Fu Shaojing 等提出算法的可验证概率,但是效率低于后者;文中算法的效率高于Li Hongwei 等提出的算法,而且可验证概率接近于1㊂表1 算法比较方案用户负载可验证概率Li Hongwei [9](3d 2+3nd +d +2)㊃MC +(nd +1)㊃EC Lei Xinyu [16](3nd +3n )㊃MC +2d ㊃MC 1-1/2s Fu Shaojing [17](3nd +3n )㊃MC +2d ㊃MC 1-1/2s 文中(2nd +3d +n )㊃MC +d ㊃EC +BC 1-12(d +1)ns +3ds5 结束语提出了一种可验证的安全有效的矩阵乘法外包计算方案,在提供高可验证性的同时,能够提供运算输入输出信息的隐私性保护㊂然而,由于在方案中考虑到了隐私性保护,在一定程度上增加了外包用户的算法执行开销,但这种开销被控制在可接受的范围内㊂与现存方案相比,在执行效率或可验证概率等方面都有较好的表现㊂下一步,将考虑尽量减少用户的计算量,达到高效和高可验证概率并存的目的,同时考虑在多服务器上进行运算外包㊂参考文献:[1] WANG Cong ,WANG Qian ,REN Kui ,et al.Toward secureand dependable storage services in cloud computing [J ].IEEE Transactions on Services Computing ,2012,5(2):220-232.[2] FIORE D ,GENNARO R ,PASTRO V.Efficiently verifiablecomputation on encrypted data [C ]//ACM SIGSAC confer⁃ence on computer and communications security.[s.l.]:ACM ,2014:844-855.[3] LI Hongwei ,DAI Yuanshun ,TIAN Ling ,et al.Identity -based authentication for cloud computing [C ]//International conference on cloud computing.Beijing ,China :[s.n.],2009:157-166.[4] PARNO B ,RAYKOVA M ,VAIKUNTANATHAN V.Howto delegate and verify in public :verifiable computation from attribute -based encryption [C ]//International conference on theory of cryptography.Sicily ,Italy :[s.n.],2012:422-439.[5] GENNARO R ,GENTRY C ,PARNO B.Non -interactiveverifiable computing :outsourcing computation to untrusted㊃221㊃ 计算机技术与发展 第28卷workers [C ]//Proceedings of the 30th annual conference on advances in cryptology.Santa Barbara ,CA ,USA :[s.n.],2010:465-482.[6] BACKES M ,FIORE D ,REISCHUK R M.Verifiable delega⁃tion of computation on outsourced data [C ]//Proceedings ofthe 2013ACM SIGSAC conference on computer &commu⁃nications security.Berlin ,Germany :ACM ,2013:863-874.[7] 任艳丽,丁 宁,王天银,等.可完全验证的双线性对运算外包算法[J ].中国科学信息科学,2016,46(7):855-869.[8] 蒋铁金,任艳丽.基于单个服务器的双线性对运算外包算法[J ].计算机应用,2016,36(7):1866-1869.[9] 黄春水,任艳丽,蔡建兴.可验证模指数批计算外包方案[J ].西安电子科技大学学报:自然科学版,2016,43(4):135-140.[10]FIORE D ,GENNARO R.Publicly verifiable delegation oflarge polynomials and matrix computations with applications [C ]//Proceedings of the 2012ACM conference on comput⁃er and communications security.Raleigh ,North Carolina ,USA :ACM ,2012:501-512.[11]ZHANG Liangfeng ,SAFAVINAINI R.Private outsourcing ofpolynomial evaluation and matrix multiplication using multi⁃linear maps [C ]//International conference on cryptology andnetwork security.[s.l.]:[s.n.],2013:329-348.[12]任晓霞,黄宏宇.安全高效的大矩阵行列式计算云外包协议[J ].计算机工程与应用,2014,50(10):82-86.[13]申银杰.可验证的安全矩阵行列式计算云外包协议[J ].计算机与现代化,2015,21(5):103-106.[14]LI Hongwei ,ZHANG Shenmin ,LUAN T H ,et al.Enablingefficient publicly verifiable outsourcing computation for ma⁃trix multiplication [C ]//International telecommunication net⁃works and applications conference.Sydney ,NSW ,Australia :IEEE ,2015:44-50.[15]LEI Xinyu ,LIAO Xiaofeng ,HUANG Tingwen ,et al.Out⁃sourcing large matrix inversion computation to a public cloud[J ].IEEE Transactions on Cloud Computing ,2013,1(1):1.[16]WANG Cong ,REN Kui ,WANG Jia ,et al.Harnessing thecloud for securely outsourcing large -scale systems of linear equations [J ].IEEE Transactions on Parallel &Distributed Systems ,2013,24(6):1172-1181.[17]ZHANG Jian ,YANG Yang ,WANG Zhibo.Outsourcinglarge -scale systems of linear matrix equations in cloud com⁃puting [C ]//IEEE international conference on parallel anddistributed systems.Wuhan ,China :IEEE ,2016:438-447.[18]SHENG Gang ,TANG Chunming ,GAO Wei ,et al.MD -VC Matrix :an efficient scheme for publicly verifiable computa⁃tion of outsourced matrix multiplication [C ]//International conference on network and system security.[s.l.]:[s.n.],2016:349-362.[19]LINDELL Y ,PINKAS B.Secure multiparty computation forprivacy -preserving data mining [J ].Journal of Privacy &Confidentiality ,2008,25(6):761-766.(上接第118页) for QoS measurement and web service selection sureness [J ].高技术通讯:英文版,2013,19(3):283-289.[10]HU Chunhua ,CHEN Xiaohong ,LIANG Ximing.Dynamicservices selection algorithm in Web services composition supporting cross -enterprises collaboration [J ].中南大学学报:英文版,2009,16(2):269-274.[11]KIM Y ,DOH K G.Quantitative trust management to supportQoS -aware service selection in service -oriented environ⁃ments [C ]//International conference on parallel and distrib⁃uted systems.Seoul ,South Korea :IEEE ,2013:504-509.[12]MEHDI M ,BOUGUILA N ,BENTAHAR J.A QoS -basedtrust approach for service selection and composition viaBayesian networks [C ]//International conference on webservices.Santa Clara ,CA ,USA :IEEE ,2013:211-218.[13]熊润群,罗军舟,宋爱波,等.云计算环境下QoS 偏好感知的副本选择策略[J ].通信学报,2011,32(7):93-102.[14]唐朝刚.基于QoS 的服务选择问题的研究[D ].合肥:中国科学技术大学,2012.[15]姚建华,吴加敏,牛温佳,等.基于可信QoS 聚类的遥感服务发现机制[J ].计算机应用,2013,33(2):587-591.[16]刘昕民,桂卫华,潘迪宏,等.一种基于D -S 证据理论的QoS 可信度评估方法[J ].哈尔滨工业大学学报,2013,45(3):96-101.[17]杨丹榕.基于可信度计算与QoS 相结合的Web 服务组合优化问题研究[D ].南京:东南大学,2016.㊃321㊃ 第8期 聂恒太等:云环境下矩阵乘法外包计算方案。

相关文档
最新文档