1 / 20

稀疏矩阵

稀疏矩阵. 组长:吴建堃. 组员:白野 朵宝宝. 研究目的: PG.1. 稀疏矩阵介绍: PG.2. 利用三元组运算稀疏矩阵乘法: PG.3. MapReduce思想: PG.4. Ubuntu下配置JDK: PG.5. 研究目的:.  矩阵乘法运算是一种基本运算。 如果用机器语言来处理大规模稀疏矩阵的乘法,必须做到的是 扩大矩阵乘法的运算规模并降低其运算时间 。 利用 MapReduce并行框架用于分块 稀疏 矩阵乘法, 可以实现大规模稀疏矩阵乘法的运算。. 1. 稀疏矩阵介绍:.

Download Presentation

稀疏矩阵

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 稀疏矩阵 组长:吴建堃 组员:白野 朵宝宝

  2. 研究目的:PG.1 稀疏矩阵介绍: PG.2 利用三元组运算稀疏矩阵乘法: PG.3 MapReduce思想: PG.4 Ubuntu下配置JDK: PG.5

  3. 研究目的: 矩阵乘法运算是一种基本运算。 如果用机器语言来处理大规模稀疏矩阵的乘法,必须做到的是 扩大矩阵乘法的运算规模并降低其运算时间。 利用MapReduce并行框架用于分块稀疏矩阵乘法,可以实现大规模稀疏矩阵乘法的运算。 1

  4. 稀疏矩阵介绍: 人们无法给出稀疏矩阵的确切定义,一般都只是凭个人的直觉来理解这个概念,即矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素没有分布规律。 对于那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵 1

  5. 稀疏矩阵的三元组表示: 当矩阵M、N是稀疏矩阵时,我们可以采用三元组表的表示形式来实现矩阵的相乘。 1

  6. 稀疏矩阵的三元组表示: 矩阵M、N、Q的三元组表 1

  7. 稀疏矩阵的三元组表示:采用三元组表的方法来实现时,因为三元组只对矩阵的非零元素做存储所以可以采用固定三元组表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

  8. 稀疏矩阵的三元组表示: 算法中附设两个向量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

  9. MapReduce思想: 1、 MapRedue 是一个为并行处理大量数据而设计的编程模型,它将工作划分为一个独立任务组成的集合。它是一种并行编程,由某种功能随需应变的云(如 Google 的 BigTable、Hadoop 和Sector)提供支持。 2、特点:具有接口简单,健壮容错的特点。 3、关于map函数和reduce函数 MapReduce的整体架构主要由map 和reduce 这两个函数组。其含义是:Map(映射)和Reduce(化简)。 1

  10. MapReduce思想: 用户输入一组键/值对,首先由map函数生成一批中间的键/值对,然后由reduce 函数将具有相同键的中间值合并,产生最后的结果。在这一过程中,由于MapReduce的数据本地化特性,计算都是在本地节点完成。用户在使MapReduce开发时,只需要关注于应用本身,而不必关心底层的任务分发、并发控制、资源管理、容错等复杂细节。极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上上。因此,可以有效地将大规模矩阵乘法运算引入到MapReduce并行框架中。 1

  11. MapReduce思想: 1

  12. MapReduce思想: MapReduce与传统并行编程模型的比较: 在传统并行编程过程中,程序员必须花大量的精力去处理进程间通信。Hello被用来统计输入数据中各单词出现的次数。以Hello 为例,以顺序方式完成,会导致统计效率低下。采用并行分类统计能提升效率,即收集各个进程获得的关于某个相同单词的局部统计信息,并将这些信息汇总给某个进程处进行分类统计。然而由于这种实现方式仅确定能产生某个单词统计信息的进程范围,因此会增加编程复杂度。 1

  13. MapReduce思想: 在 MapReduce 模型下,完成单词统计的具体步骤为: (1) 用户编写Map 程序对出现的单词Hello 产生中间结果key/value 偶对,如<Hello,1>。 (2)这些分布产生的中间结果将按key 值的不同进行汇总处理,产生key(word)相同的value 列表,如<Hello,1,1,1,⋯>,并作为Reduce 阶段的输入,这个阶段的工作将MapReduce策略,把对全局(或阶段性)计算结果有影响且有关联的value采用相同key 标志。由于这种策略的简单抽象,因此用户可以较容易地把握局部和全局关系,从而确保问题求解并行实现的正确性,并进一步降低并行分布式编程的难度。 1

  14. MapReduce思想: 1

  15. 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

  16. VirtualBox的介绍 VirtualBox是一款开源虚拟机。相比于其他虚拟机来说,更小巧快,设置简单。一下是其优点: 第一:适用于初学者。 第一:免费使用。 第二:支持跨平台使用,VirtualBox不仅仅支持Windows平台,其他的一些主流平台,如Linux,Unix等等。 第三:支持的操作系统也相当丰富。 1

  17. Ubuntu介绍: 以桌面应用为主题的Linux操作系统。 支持x86、x64和ppc架构。 为什么我们使用Ubuntu? →界面非常友好 →对硬件的支持非常全面 →最适合做桌面系统的Linux发行版本 →容易上手,适合初学者 1

  18. 在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

  19. 在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

  20. Thank You! 谢谢观看 吴建堃 白野 朵宝宝

More Related