200 likes | 526 Views
稀疏矩阵. 组长:吴建堃. 组员:白野 朵宝宝. 研究目的: PG.1. 稀疏矩阵介绍: PG.2. 利用三元组运算稀疏矩阵乘法: PG.3. MapReduce思想: PG.4. Ubuntu下配置JDK: PG.5. 研究目的:. 矩阵乘法运算是一种基本运算。 如果用机器语言来处理大规模稀疏矩阵的乘法,必须做到的是 扩大矩阵乘法的运算规模并降低其运算时间 。 利用 MapReduce并行框架用于分块 稀疏 矩阵乘法, 可以实现大规模稀疏矩阵乘法的运算。. 1. 稀疏矩阵介绍:.
E N D
稀疏矩阵 组长:吴建堃 组员:白野 朵宝宝
研究目的:PG.1 稀疏矩阵介绍: PG.2 利用三元组运算稀疏矩阵乘法: PG.3 MapReduce思想: PG.4 Ubuntu下配置JDK: PG.5
研究目的: 矩阵乘法运算是一种基本运算。 如果用机器语言来处理大规模稀疏矩阵的乘法,必须做到的是 扩大矩阵乘法的运算规模并降低其运算时间。 利用MapReduce并行框架用于分块稀疏矩阵乘法,可以实现大规模稀疏矩阵乘法的运算。 1
稀疏矩阵介绍: 人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。 对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵 1
稀疏矩阵的三元组表示: 当矩阵M、N是稀疏矩阵时,我们可以采用三元组表的表示形式来实现矩阵的相乘。 1
稀疏矩阵的三元组表示: 矩阵M、N、Q的三元组表 1
稀疏矩阵的三元组表示:采用三元组表的方法来实现时,因为三元组只对矩阵的非零元素做存储所以可以采用固定三元组表a中的元素(i,k,Mik)(1≤i≤m1,1≤k≤n1),在三元组表b中找所有行号为k的的对应元素(k,j, Nkj)(1≤k≤m2,1≤j≤n2)进行相乘、 累加,从而得到Q[i][j],即以三元组表a中的元素为基准, 依次求出其与三元组表b的有效乘积。 1
稀疏矩阵的三元组表示: 算法中附设两个向量num[ ]、first[ ],其中num[row]表示三元组表b中第row行非零元素个数(1≤row≤m2), first[row]表示三元组表b中第row行第一个非零元素所在的位置。显然,first[row+1]-1指向三元组表b中第row行最后一个非零元素的位置。 first[1]=1; first[row]=first[row-1]+num[row-1], 2≤row≤m2+1。 这里,first[m2+1]-1表示最后一行最后一个非零元素的存储位置。当三元组表a中第i行非零元素的列号等于三元组表b中非零元素的行号时,则元素相乘并将结果累加。 1
MapReduce思想: 1、 MapRedue 是一个为并行处理大量数据而设计的编程模型,它将工作划分为一个独立任务组成的集合。它是一种并行编程,由某种功能随需应变的云(如 Google 的 BigTable、Hadoop 和Sector)提供支持。 2、特点:具有接口简单,健壮容错的特点。 3、关于map函数和reduce函数 MapReduce的整体架构主要由map 和reduce 这两个函数组。其含义是:Map(映射)和Reduce(化简)。 1
MapReduce思想: 用户输入一组键/值对,首先由map函数生成一批中间的键/值对,然后由reduce 函数将具有相同键的中间值合并,产生最后的结果。在这一过程中,由于MapReduce的数据本地化特性,计算都是在本地节点完成。用户在使MapReduce开发时,只需要关注于应用本身,而不必关心底层的任务分发、并发控制、资源管理、容错等复杂细节。极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上上。因此,可以有效地将大规模矩阵乘法运算引入到MapReduce并行框架中。 1
MapReduce思想: MapReduce与传统并行编程模型的比较: 在传统并行编程过程中,程序员必须花大量的精力去处理进程间通信。Hello被用来统计输入数据中各单词出现的次数。以Hello 为例,以顺序方式完成,会导致统计效率低下。采用并行分类统计能提升效率,即收集各个进程获得的关于某个相同单词的局部统计信息,并将这些信息汇总给某个进程处进行分类统计。然而由于这种实现方式仅确定能产生某个单词统计信息的进程范围,因此会增加编程复杂度。 1
MapReduce思想: 在 MapReduce 模型下,完成单词统计的具体步骤为: (1) 用户编写Map 程序对出现的单词Hello 产生中间结果key/value 偶对,如<Hello,1>。 (2)这些分布产生的中间结果将按key 值的不同进行汇总处理,产生key(word)相同的value 列表,如<Hello,1,1,1,⋯>,并作为Reduce 阶段的输入,这个阶段的工作将MapReduce策略,把对全局(或阶段性)计算结果有影响且有关联的value采用相同key 标志。由于这种策略的简单抽象,因此用户可以较容易地把握局部和全局关系,从而确保问题求解并行实现的正确性,并进一步降低并行分布式编程的难度。 1
Ubuntu下安装JDK: 虚拟机:Oracle VM VirtualBox4.2.4 支持:Solaris、Windows、DOS、Linux、OS/2 Warp、BSD。 Linux版本:Ubuntu 10-10 2010年10月10日发布。 JDK版本:jdk-7u9 JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。 没有JDK的话,无法安装或者运行java程序。(开始准备用JAVA语言编写程序) 1
VirtualBox的介绍 VirtualBox是一款开源虚拟机。相比于其他虚拟机来说,更小巧快,设置简单。一下是其优点: 第一:适用于初学者。 第一:免费使用。 第二:支持跨平台使用,VirtualBox不仅仅支持Windows平台,其他的一些主流平台,如Linux,Unix等等。 第三:支持的操作系统也相当丰富。 1
Ubuntu介绍: 以桌面应用为主题的Linux操作系统。 支持x86、x64和ppc架构。 为什么我们使用Ubuntu? →界面非常友好 →对硬件的支持非常全面 →最适合做桌面系统的Linux发行版本 →容易上手,适合初学者 1
在Ubuntu下安装JDK: 通过U盘,把JDK压缩文件放入Linux系统中。(直接拖拽无效) 打开终端:鼠标右击屏幕可以找到。 在终端下输入:sudo tar zxvf ./jdk-7u9-linux-i586.tar.gz//解压命令。 ④sudo mkdir /usr/lib/jvm 创建文件夹:在usr文件夹下的lib中。 ⑤sudo cp -r ~/jdk1.7.0_09/ /usr/lib/jvm/ 用最高权限将jdk1.7.0_09文件夹复制到第四步创建的jvm文件夹下. ⑥profile使用文本编辑器打开,添加三行代码: export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_09 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH="$JAVA_HOME/bin:$PATH" 保存后关闭 1
在Ubuntu下安装JDK: ⑦终端下输入source ~/.profile 更新 ⑧终端下输入$ sudo update-alternatives --install/usr/bin/java java /usr/lib/jvm/jdk1.7.0_09/bin/java 300 $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_09/bin/javac 300 $ sudo update-alternatives --config java $ sudo update-alternatives --config javac 修改默认的JDK ⑨ 终端下输入:java -version看到下面的代码,说明修改成SUN的JDK: java version "1.7.0_09" OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1) OpenJDK Server VM (build 23.2-b09, mixed 1
Thank You! 谢谢观看 吴建堃 白野 朵宝宝