关于并行计算的相关总结

  • 1. 定义
  • 2. 特征及层次
  • 3. 应用举例
    • 3.1 基于CUDA 的K-Means 多级并行优化方法
    • 3.2 面向GPU的直方图统计图像增强并行算法
    • 3.3 基于FPGA的多核可扩展卷积加速器设计

1. 定义

并行计算或称平行计算是相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台的独立计算机构成的集群。通过并行计算集群完成数据的处理,再将处理的结果返回给用户。

2. 特征及层次

为利用并行计算,通常计算问题表现为以下特征:
(1)将工作分离成离散部分,有助于同时解决;
(2)随时并及时地执行多个程序指令;
(3)多计算资源下解决问题的耗时要少于单个计算资源下的耗时。
数字图像处理算法多种多样,但从数据处理的层面来考虑,可以分为:像素级处理、特征级处理和目标级处理三个层次。
(1)像素级图像处理
像素级处理,即由一幅像素图像产生另一幅像素图像,处理数据大部分是几何的、规则的和局部的。根据处理过程中的数据相关性,像素级处理又可进一步分为点运算、局部运算和全局运算。
(2)特征级图像处理
特征级处理是在像素图像产生的一系列特征上进行的操作。常用的特征包括:形状特征、纹理特征、梯度特征和三维特征等,一般采用统一的测度,如:均值、方差等,来进行描述和处理,具有在特征域内进行并行处理的可能性。但是,由于其特征具有象征意义和非局部特性,在局部区域并行的基础上,需要对总体进行处理。利用GPU实现并行化处理的难度比较大。
(3)目标级图像处理
目标级处理是对由一系列特征产生的目标进行操作。由于目标信息具有象征意义和复杂性,通常是利用相关知识进行推理,得到对图像的描述、理解、解释以及识别。由于其数据之间相关性强,且算法涉及到较多的知识和人工干预,并行处理的难度也比较大。

3. 应用举例

3.1 基于CUDA 的K-Means 多级并行优化方法

聚类分析也是数据分类的一种,但与分类技术还存在一定的差别,最大不同之处在于聚类处理数据的所属类是未知的,它是一个无监督过程。是在没有相关经验的基础上,对数据进行处理,分析出数据间内在关联并找出规律,将样本点间距离较近的数据分配到相同的聚类中,反之,将样本点间距离较远的数据分配到不同的聚类中。目前常用的聚类算法分别是基于密度、网格、层次、划分和模型的聚类算法。
CUDA( Compute Unified Device Architecture) 是由显卡厂商NVIDIA 推出的运算平台,是一种通用的并行计算架构,其能充分结合CPU 和GPU 的优点。其中,CPU 为主处理器( host) 执行逻辑事务处理和串行计算,GPU 作为协处理器( device) 执行高度并行化的计算任务。GPU 的计算核心均匀划分到多个流多处理器( stream multiprocessor,SM) 中。同时,GPU 还有不同的存储机制。其中,设备内存可接受来自CPU 的数据; 共享内存可供SM 中的所有线程块block 公用;寄存器被分配的thread 单独使用。

3.2 面向GPU的直方图统计图像增强并行算法

直方图统计在图像增强和目标检测等领域有着重要的应用。然而,随着图像规模不断增大、实时性要求越来越高时,直方图统计局部增强算法的处理过程较慢,达不到预期满意的速度。首先,通过充分利用统一计算设备架构(CUDA)活动线程块和活动线程来并行处理不同的子图像块和像素点,提升了数据访问的效率。然后,采用内核配置参数优化和数据并行计算技术,实现了直方图统计图像增强算法在GPU平台上的并行化。最后,采用主机端和设备端间高效的数据传输模式,进一步缩短了系统在异构计算平台上的执行时间。研究表明,对于像幅大小不同的图像,图像直方图统计并行算法的处理速度相比于CPU串行算法均有两个数量级的提高,处理一幅像幅大小为3241×3685 的图像需要787.11ms,并行算法的处理速度提高了261.35倍。为实现实时大规模图像处理奠定了良好基础。
CUDA 的应用系统是GPU 和CPU 的混合代码系统。在执行CUDA 系统时,主机端执行的二进制代码在调用核函数时需要将设备端代码通过CUDA API 传给设备端。GPU 传给CUDA API 的设备端代码不一定是二进制代码CUBIN,也可能是运行于JIT动态编译器上的汇编形式的PTX(Parallel Thread Execution)代码。最后传到设备上的是适合具体GPU 的二进制代码,其中的信息多于PTX 或者CUBIN,这是因为CUBIN 或者PTX 只包含了线程块一级的信息,而不包括整个网格的信息。目前,在GPU 上可以运行的指令长度仍然有限制,不能超过两百万条PTX 指令。GPU 端二进制代码主要包括网格的维度和线程块的维度,每个线程块使用的资源数量,要运行的指令以及常数存储器中的数据。
算法包含三级并行性:
(1)像素点级并行:为了对图像中包含的隐含特征进行局部增强,需要将图像进行直方图统计,对每一幅图像的每一个像素点的处理是相互独立的,可以并行执行;
(2)均值和方差值级并行:每个像素点的局部均值和局部方差的计算是相互独立的,可以并行执行;
(3)窗口级并行:每个局部统计窗口的处理是相互独立的,可以并行处理。
数字图像本质上就是一个二维数组,每个像素的处理过程是相互独立并且完全
一样的计算过程。因此,可以在GPU 集群上采用MPI 和CUDA 相结合的技术,由MPI 完成更大图像块之间的并行,由每个节点上的GPU 完成图像块内的并行,通过GPU 集群可以使处理速度更快,争取能够在更短的时间内完成更大尺寸的图像处理工作。

3.3 基于FPGA的多核可扩展卷积加速器设计

为解决卷积神经网络计算效率和能效较低的问题,提出并设计一种使用定点数据作为输入的卷积加速器。加速器支持动态量化的8Bits定点数据的卷积计算,通过采用分块计算的策略和改进的循环计算顺序,有效提高计算效率;支持激活、批标准化(BN)、池化和全连接等计算;基于软硬件协同设计的思路,设计包含卷积加速器和ARM处理器在内的SOC系统。提出一种将加速器进行多核扩展的方法,提高算力和移植便捷性。将加速器部署在Xilinx ZCU102开发板上,其中单核加速器的算力达到了153.6GOP/s,在计算核数目增加到4个和8个的情况下,算力分别增至614.4 GOP/s和1024 GOP/s。
对于FPGA平台中实现的卷积加速设计,主要围绕以下思路来展开:基于CNN网络中输入特征映射和卷积核多通道的特性,设计乘加阵列进行并行计算;基于有限的片上存储资源,对输入和权重数据进行分块,并通过设置片上缓存来暂时存储分块数据以减少加速器与片外存储之间的数据访存次数;通过设计特定的循环展开计算顺序,实现片上缓存数据的复用以及高效的并行计算效率。
加速器主要由计算单元、片上缓存以及控制器组成。计算单元主要由乘加模块、累加模块、BN计算模块、定点处理模块、激活模块以及池化模块组成,是完成加速计算的关键部分。片上缓存调用FPGA的BRAM资源,将来自片外的输入特征映射、权重数据以及卷积计算结果暂存。而控制器主要产生一些控制卷积计算过程的信号,保证计算准确有序进行。

关于并行计算的相关总结相关推荐

  1. 基于GPU的K-Means聚类算法

    聚类是信息检索.数据挖掘中的一类重要技术,是分析数据并从中发现有用信息的一种有效手段.它将数据对象分组成为多个类或簇,使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别很大.作为统计学的 ...

  2. MapReduce综合学习含Wordcount案例

    文章目录 MapReduce简介 MapTask ReduceTask Mapper阶段解读 Reducer阶段解读 MapReduce适用的问题 MapReduce的特点 MapReduce基本思想 ...

  3. 什么是集群?集群分为哪几类?

    高可用集群技术 下面针对高可用性集群,介绍一下它的工作原理. 在微软的MSCS(Microsoft Cluster Server)术语中,所有的应用程序.数据文件.磁盘.网络IP地址等都被称为 资源, ...

  4. 一个大数据架构师应该掌握的技能

    硬能力 一:平台建设 1.行业平台 1)大平台 谷歌云 亚马逊云 阿里云 腾讯云 网易云 华为云 2)小平台 国云 国双 青云 勤思 3)专业工具平台 海致BDP 永洪 易观 4)APP分析平台 mi ...

  5. 干货 | 大数据处理技术的总结与分析

    一 .数据分析处理需求分类 1.事务型处理 在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统.12306网站火车票交易系统.超市POS系统等都属于事务型数据处理系统. 这类系统数据 ...

  6. VASP输入INCAR文件

    欢迎来到我的博客!坚持比努力重要. 文章目录 欢迎来到我的博客!坚持比努力重要. 目录 VASP输入INCAR文件 初始I/O设置(读入.读出) Electronic Relaxation(电子步) ...

  7. 大数据架构师应该做到的

    ---- github地址 ---- 关于软实力部分同步会更新场景落地 ---- 直接访问ProcessOn脑图 请点击 ---- 高清大图 ---- 脑图文件 技能图 大数据架构师该掌握的技能 主要 ...

  8. 2023年高性能计算就业及实习岗位大爆料

    关于高性能计算能做什么?未来的就业前景如何?薪资如何? 只要是计算密集型的软件,必然需要HPC工程师.最近火热的行业和技术领域,包括深度学习计算机视觉,自然语言处理,自动驾驶,Al for Scien ...

  9. 什么是UNIX/LINUX

    因为4.3是周一所以根据拖延症还是在周一的晚期开始写blog了.本blog计划至少持续到七月底,至于之后就在看之后的情况吧.Blog将会关注机器学习包括机器翻译,并行计算或者相关的知识整理或总结,如果 ...

最新文章

  1. 【网络流24题】飞行员配对方案问题
  2. python 步进电机_【Applied Motion Products】伺服电机|步进电机也可以python编程啦
  3. 每隔一定时间执行一次函数_python — 轮询执行某函数的方法
  4. Confluence 6 使用一个页面为站点的默认页面
  5. JVM内存模型及垃圾收集策略解析(一)
  6. linux服务器历险之linux性能监控
  7. Servlet详解之两个init方法的作用
  8. 数据结构探险——线性表篇
  9. Rockchip USB转485
  10. 7-4 sdut-求两个整数之和(II)
  11. File Operation
  12. 主题:jsoup使用
  13. php 串行化与json(转)--很不错的文章
  14. webpack5学习与实战-(十三)-postcss处理css3兼容性前缀
  15. 小程序商城源码,小程序源码带前端+后台+数据库 ,免费分享
  16. 1分钟恢复损坏的Excel文件
  17. 汉印HPRT HY80BT 打印机驱动
  18. bzoj2456瞎搞
  19. flea-db使用之JPA分库分表实现
  20. GC日志详解[乐乐独记]

热门文章

  1. 测试一下文章行内代码的显示
  2. matlab模拟小游戏,基于MATLAB的小游戏(puzzle)
  3. 指纹识别应用开发笔记
  4. 谷歌搜索引擎排名规则(谷歌 seo 外链重要还是内容重要)
  5. AS9100航空航天质量管理体系认证
  6. python win32选取文件夹_python小工具 | Excel的xls和xlsx格式文件转换
  7. 漏洞挖掘论文常用数据集
  8. java编写的王八程序_利用JAVA多线程技术模拟龟兔赛跑.doc
  9. [乡土民间故事_徐苟三传奇]第五回_黄知县对联丢尽脸
  10. 宁波大学计算机王老师,赵杰煜_宁波大学研究生导师信息