美文网首页
异构并行编程本质

异构并行编程本质

作者: 半笔闪 | 来源:发表于2020-02-25 15:49 被阅读0次

不同架构的计算机适合处理的工作负载具有不同类型,但是计算机本质上是利用应用中不同层次的并行性,如指令集并行、数据并行和线程级并行。另外现代计算机设计中提升单机硬件性能的两大主要手段就是多核并行和SIMD并行,多核并行编程通常需要使用线程级并行API,而SIMD并行则需要利用应用中的数据并行。

异构并行计算架构包含两个方面的内容:异构和并行。异构是指计算系统上具有两种或两种以上不同特点的处理器。目前来说,异构主要是指CPU+加速器;CPU主要指X86、Power、Arm等,加速器主要指GPU、FPGA、TPU等众核处理器。并行是指无论是要发挥CPU的峰值性能,还是要发挥加速器的峰值性能,都要使用并行的编程方式,因为绝大多数的加速器都是众核处理器。由于异构系统具有多种不同架构的处理器,不同架构处理器具有不同的特点,因此如果要发挥处理器的峰值性能,编程时算法映射也会有所不同。

由于制造工艺和提升主频遇到了挑战,摩尔定律的逐渐失效,目前计算机提升性能的方式主要时将多个单核的处理器集成在一起。为了增加多个单核处理器间协作的性能,集成起来的多个单核处理器会共享一些组件,比如缓存、执行单元等。由于协作导致的通信消耗,是的不能无休止地集成处理器。在通过多核提升性能的同时,单核里还会集成多个向量处理单元来提升性能,每个向量中的不同处理单元必须执行相同的逻辑路径,这称为SIMD。对多核处理器来说,每个处理器可独立执行不同的任务,而SIMD单元却必须共同执行同一操作。故要发挥多核向量处理器的性能,则必须同时考虑多核并行和SIMD并行。现代的GPU具有多个计算单元(SM,CU),而每个计算单元又是一个SIMD处理器。GPU和X86 CPU的不同在于:在基于GPU编程时无需知道SIMD的单元的宽度。

相关文章

  • 异构并行编程本质

    不同架构的计算机适合处理的工作负载具有不同类型,但是计算机本质上是利用应用中不同层次的并行性,如指令集并行、数据并...

  • C#并行和多线程编程

    —— 第二天 并行集合和PLinq我们学习了Parallel的用法。并行编程,本质上是多线程的编程,那么当多个线程...

  • 死锁

    一、什么是死锁 并发编程的本质是将串行执行的代码编程并行执行。并发编程的目的是为了加快程序的运行速度,但是...

  • flag

    立个flag:1年内成为异构并行加速计算专家。

  • OpenCL简介

    OpenCL是一个异构计算平台,Khronos Group将OpenCL的异构并行计算架构划分为平台模型(plat...

  • 《深入理解并行编程》整理笔记

    目录 1.并发编程的目标 2.并行访问控制 - 是什么使并行编程变得复杂? 3.关于硬件 - 对并行编程造成的障碍...

  • [转]并发和并行有什么区别

    做并发编程之前,必须首先理解什么是并发,什么是并行,什么是并发编程,什么是并行编程。 并发(concurrency...

  • SHELL并发编程

    SHELL的并行编程:通过启用多个并行的后台子进程,实现任务的并行处理。 并发编程的模式: 简单模式 批处理模式 ...

  • 01-并发概述

    并发编程由来: 串行与并行 并发编程目的 并发编程的场景

  • iOS 并行编程

    前言: 所有的语言都会涉及到并行编程。并行就是多任务同时运行。在iOS开发中,并行编程主要用于提升APP的运行性能...

网友评论

      本文标题:异构并行编程本质

      本文链接:https://www.haomeiwen.com/subject/iofnfhtx.html