异构计算架构的基本知识

了解异构计算架构
一、并行计算
通俗地讲就是将一个大的问题分解成多个小问题,然后在不同的计算资源上并行处理这些小问题。并行计算通常涉及到两个不同的计算技术领域:计算机架构并行程序设计
1、计算机架构关注的是在结构级别上支持并行性,并行程序设计关注的是充分使用计算机架构的计算能力来并发地解决问题。
对于计算机体系结构,大学里都会学到冯诺依曼体系结构。这里就主要介绍一下哈弗体系结构,它主要由3个部分组成:内存,中央处理器和输入输出接口。如下图所示:
在这里插入图片描述

  • 内存:指令内存和数据内存
  • 中央处理器:控制单元和算术逻辑单元
  • 输入/输出接口
    高性能计算的关键部分就是中央处理单元,也称为计算机的核心。现在计算机一般是多核处理器,指的是将多个核心集成到一个单一的处理器上,以在体系结构级别支持并行性。
    2、并行程序设计
    可以理解为将一个问题的计算分配给可用的核心来实现并行的过程。要了解并行程序设计,我们先了解串行和并行编程。
    2.1串行编程和并行编程
    串行编程是大多数人在编程时最容易想到和运用到的。通常在面对一个问题,我们很自然的就会将这个问题划分成许多的执行小块,然后依次执行这些小块,最终解决问题。如下图所示:
    在这里插入图片描述
    串行编程是有执行次序的,若没有执行次序的要求则可以用并行编程。当然一个程序中即可以有串行也可以有并行。如下图所示:
    在这里插入图片描述** 当我们在编写程序时,什么时候用串行什么时候用并行呢?**我们在计算一个问题时,将问题划分成许多的小的计算单元后,每一计算单元就是一个任务,我们要知道在一个任务中,单独的指令负责处理输入和调用一个函数并产生输出,若一个指令处理前一个指令产生的数据时,就有了数据相关性的概念,所以我们在区分两个任务之间的依赖关系,如果没有依赖那就独立,独立就可以使用并行计算。
    2.2并行性
    下面介绍在应用程序中的两个基本并行类型:任务并行和数据并行。
  • 任务并行就是当许多任务或函数可以独立地、大规模地并行执行。重点就是利用多核系统对任务进行分配。
  • 数据并行就是当可以同时处理许多数据,重点就是利用多核系统对数据进行分配。CUDA编程就非常适合解决数据并行计算的问题。
    二、异构计算
    1、异构架构
    一个典型的异构计算节点包括两个多核CPU插槽和两个或更多个的众核GPU。GPU不是一个独立运行的平台而是CPU的协处理器。GPU必须通过PCIe总线与基于CPU的主机相连来进行操作。我们将CPU所在的位置称为主机端,GPU所在的位置成为设备端。如下图所示:
    在这里插入图片描述
    异构平台上执行的应用通常由CPU初始化,在设备端加载大量数据前,CPU代码负责管理设备端的环境、代码和数据。GPU就用来处理计算数据和提高数据的执行速度。
    我们可以同时使用CPU和GPU来执行程序,在CPU上执行串行部分或任务并行部分,在GPU上执行数据密集型并行部分,如下图所示:
    在这里插入图片描述
    (未完…刚学习完CUDA编程,准备出一系列关于CUDA编程的知识作为巩固和深入,每三天更新一篇,若写的有不对的欢迎指正。)
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值