第一篇:gpu编程技术的发展历程及现状

穆晨 穆晨     2022-08-16     557

关键词:

前言

       本文通过介绍 GPU 编程技术的发展历程,让大家初步地了解 GPU 编程,走进 GPU 编程的世界。

冯诺依曼计算机架构的瓶颈

       曾经,几乎所有的处理器都是以冯诺依曼计算机架构为基础的。该系统架构简单来说就是处理器从存储器中不断取指,解码,执行

       但如今这种系统架构遇到了瓶颈:内存的读写速度跟不上 CPU 时钟频率。具有此特征的系统被称为内存受限型系统,目前的绝大多数计算机系统都属于此类型。

       为了解决此问题,传统解决方案是使用缓存技术。通过给 CPU 设立多级缓存,能大大地降低存储系统的压力:

       然而随着缓存容量的增大,使用更大缓存所带来的收益增速会迅速下降,这也就意味着我们要寻找新的办法了。

对 GPU 编程技术发展具有启发意义的几件事

1. 70年代末期,克雷系列超级计算机研制成功 (克雷1当年耗资800万美元)。

       此类计算机采用若干内存条的共享内存结构,即这些内存条可以与多个处理器相连接,从而发展成今天的对称多处理器系统 (SMD)。

       克雷2是向量机 - 一个操作处理多个操作数。

       如今的 GPU 设备的核心也正是向量处理器。

2. 80年代初期,一家公司设计并研制了一种被称为连接机的计算机系统。

       该系统具有16个 CPU 核,采用的是标准的单指令多数据 (SIMD) 并行处理。连接机通过这种设计能够消除多余的访存操作,并将内存读写周期变为原来的 1/16 。

3. CELL 处理器的发明

       这类处理器很有意思,其架构大致如下图所示:

       在此结构中,一个 PPC 处理器作为监管处理器,与大量的 SPE流处理器相连通,组成了一个工作流水线。

       对于一个图形处理过程来说,某个 SPE 可负责提取数据,另一个 SPE 负责变换,再另一个负责存回。这样可构成一道完完整整的流水线,大大提高了处理速度。

       顺便提一句,2010年超级计算机排名第三的计算机就是基于这种设计理念实现的,占地面积达560平方米,耗资 1.25 亿美元。

多点计算模型

       集群计算是指通过将多个性能一般的计算机组成一个运算网络,达到高性能计算的目的。这是一种典型的多点计算模型

       而 GPU 的本质,也同样是多点计算模型。其相对于当今比较火的Hadoop/Spark集群来说:“点”由单个计算机变成了 单个SM (流处理器簇),通过网络互连变成了通过显存互连 (多点计算模型中点之间的通信永远是要考虑的重要问题)。

GPU 解决方案

       随着 CPU "功耗墙" 问题的产生,GPU 解决方案开始正式走上舞台。

       GPU 特别适合用于并行计算浮点类型的情况,下图展示了这种情况下 GPU 和 CPU 计算能力的差别:

       但这可不能说明 GPU 比 CPU 更好,CPU应当被淘汰。 上图的测试是在计算可完全并行的情况下进行的。

       对于逻辑更灵活复杂的串行程序,GPU 执行起来则远不如 CPU 高效 (没有分支预测等高级机制)。

       另外,GPU 的应用早已不局限于图像处理。事实上 CUDA 目前的高端板卡 Tesla 系列就是专门用来进行科学计算的,它们连 VGA 接口都没。

几款新的显卡及其配置 (仅列 N 卡)

       注:

       1. 各参数的具体含义将在以后的文章中做细致分析

       2. 当前显卡的具体参数信息可通过调试工具获取到 (方法略)

主流 GPU 编程接口

       1. CUDA

       是英伟达公司推出的,专门针对 N 卡进行 GPU 编程的接口。文档资料很齐全,几乎适用于所有 N 卡。

       本专栏讲述的 GPU 编程技术均基于此接口。

       2. Open CL

       开源的 GPU 编程接口,使用范围最广,几乎适用于所有的显卡。

       但相对 CUDA,其掌握较难一些,建议先学 CUDA,在此基础上进行 Open CL 的学习则会非常简单轻松。

       3. DirectCompute

       微软开发出来的 GPU 编程接口。功能很强大,学习起来也最为简单,但只能用于 Windows 系统,在许多高端服务器都是 UNIX 系统无法使用。

       总结,这几种接口各有优劣,需要根据实际情况选用。但它们使用起来方法非常相近,掌握了其中一种再学习其他两种会很容易。

学习 GPU 编程的意义

       1. 不单能学会如何使用 GPU 解决问题,更让我们更加深入地了解并行编程思想,为以后全面地掌握各种并行技术打下铺垫。

       2. 并行计算相关知识的研究与发展势必会成为未来IT业界与学界的一大热点。

关于国产项目apachekylin发展历程及背后的那些事

...贡献到Apache的顶级项目。ApacheKylin现状如何?背后有怎样的技术团队?接下来又会有什么规划和动作?本期,来自Kyligence的联合创始人兼CTO、ApacheKylin联合创建者李扬,跟大家分享ApacheKylin的开源历程、发展方向以及背后团队的故事。... 查看详情

slam技术的应用及发展现状

近年来,由于扫地机的出现使得SLAM技术名声大噪,如今,已在机器人、无人机、AVG等领域相继出现它的身影,今天就来跟大家聊一聊SLAM的应用及发展现状。SLAM的多领域应用SLAM应用领域广泛,按其应用行业也可分为两大类,即... 查看详情

slam技术的应用及发展现状

近年来,由于扫地机的出现使得SLAM技术名声大噪,如今,已在机器人、无人机、AVG等领域相继出现它的身影,今天就来跟大家聊一聊SLAM的应用及发展现状。SLAM的多领域应用SLAM应用领域广泛,按其应用行业也可分为两大类,即... 查看详情

javascript夯实基础第一课:初学者必须要了解的javascript发展历程及语言规范特性(代码片段)

文章目录前言一、什么是ECMAScript?1.1、ECMAScript的三种具体表现1.2、ECMAScript表述的内容1.3、ECMAScript语言版本发展历程二、JavaScript简介2.1、JavaScript的发展历程2.2、ECMAScript在JavaScript中的位置2.3、JavaScript语言特点2.4、JavaScript和... 查看详情

javascript夯实基础第一课:初学者必须要了解的javascript发展历程及语言规范特性(代码片段)

文章目录前言一、什么是ECMAScript?1.1、ECMAScript的三种具体表现1.2、ECMAScript表述的内容1.3、ECMAScript语言版本发展历程二、JavaScript简介2.1、JavaScript的发展历程2.2、ECMAScript在JavaScript中的位置2.3、JavaScript语言特点2.4、JavaScript和... 查看详情

数字化孪生技术现状分析及发展趋势探讨

今年的技术趋势报告继续在开头回顾了11年来技术趋势的发展,显示了技术趋势时间演变的全过程、最新的宏观科学技术力量为业务变革基础带来的共生利益和不久的未来新兴科学技术力量。随着企业应对不断变化的技术并迅速... 查看详情

2021年云原生技术发展现状及未来趋势

...C云原生专场的侧记,管中窥豹,以观2021年云原生技术发展现状及未来一段时间内的趋势。作者|于雨本人有幸担任了2021年GIAC会议云原生 查看详情

焦虑的bat不安的编程语言,揭秘程序员技术圈生存现状!

...技术圈中,仅在过去的一个月期间,我们见证了有史以来第一张黑洞照片的诞生;经历了为让人义愤填膺的996;思考了作为程序员的年龄之槛;膜拜了技术大神的成长历程;追逐了如编程语言、人工智能和区块链的热门技术;探... 查看详情

《python快速编程入门(第2版)》#学习笔记01#|第一章:python概述(python发展历程开发工具模块)(代码片段)

...网络爬虫、数据分析、机器学习、游戏开发等众多领域。第一章Python概述目录01认识Python02Python解释器的安装与Python程序运行03Python开发工具04Python模块1.1.1Python的发展历程计算机目前 查看详情

货币发展历程及比特币的产生

第一阶段:物物交换在原始社会,人们用自己所拥有的物资去交换其他的物资,以满足更多的物资需求,比如用一头羊换一把石斧,这便是“物物交换”,在《易经·系辞下》有着“日中为市,致天下之民,聚天下之货,交易而... 查看详情

深入剖析物联网行业现状及发展

...?大佬都在发力,我们该何去何从?阿里物联网生态系统技术大解密”1234”战略,定位于物联网基础设施搭建者天猫精灵,智能插座、智能灯泡、智能遥控器物联网的未来如何做的更好如何迎接面对未来加入物联网行业需要具... 查看详情

serverless的初心现状和未来

作者|不瞋?阿里云高级技术专家导读:Serverless是如何产生的?当前有哪些落地场景?Serverless的未来又将如何?本文分享了阿里云高级技术专家不瞋对于Serverless的看法,回顾其发展历程,并对Serverless的发展趋势做出预测。源起回... 查看详情

serverless的初心现状和未来

作者|不瞋?阿里云高级技术专家导读:Serverless是如何产生的?当前有哪些落地场景?Serverless的未来又将如何?本文分享了阿里云高级技术专家不瞋对于Serverless的看法,回顾其发展历程,并对Serverless的发展趋势做出预测。源起回... 查看详情

2018云计算行业现状及2020年云计算发展趋势

...,推动“中国制造2025”战略落地。云计算作为三大核心技术之一,2018年云计算行业现状如何?2020年云计算发展趋势又是怎样呢?在伴随着“互联网+”及“中国制造2025”进程的推进,各个行业开始着手转型升级。未来云计算不断... 查看详情

[从零开始学习fpga编程-47]:视野篇-第三代半导体技术现状与发展趋势

目录前言:一、第三代半导体概述1.1定义与分类1.2第三代半导体的特出特征 查看详情

2017年中国智能卡行业发展现状分析及市场发展前景预测

...储、传递、处理等功能。IC卡是大规模集成电路、计算机技术和信息安全技术发展的产物,IC卡出现之前主要使用磁条卡。IC卡与磁条卡的主要区别在于,磁条卡通过卡面表面的磁性记录介质记录信息;而IC卡则 查看详情

2020年版中国软件开发行业深度调研及发展趋势分析报告

...展动向、制定发展战略不可或缺的专业性报告。  第一章软件开发产业概述中  第一节软件开发定义和分类国  第二节软件开发行业特点产  第三节软件开发发展历程业 第二章中国软件开发行业运行环境分析调... 查看详情

2021-2027中国自动驾驶运载工具市场现状及未来发展趋势

无人驾驶车也叫智能车、自动驾驶车,它利用传感器技术、信号处理技术、通讯技术和计算机技术等,通过集成规范、激光雷达、超声波传感器、微波雷达、GPS、里程计、磁罗盘等多种车载传感器来识别汽车所处的环境... 查看详情