智能纪元,简述NVIDIA的伟大航路

NVIDIA后起之秀

说道CUDA架构的发展史,
不得不提它的老东家,NVIDIA的故事。

早在1995年,创始人黄仁勋还在为NVIDIA公司的未来发愁。作为前AMD公司的芯片设计师,估计当时的他心里慌得打鼓。

1993年,三十而立的黄仁勋和两位好友共同创建了NVIDIA,主攻当时仍处在萌芽阶段的图形芯片市场。

公司推出的第一款可以称得上显卡的产品,名字叫NVIDIA STG-2000X,为了方便,我们简称为NV1吧。NV1是NVIDIA公司做的第一件大事,其集成了显卡、声卡、手柄驱动等多种功能,重视芯片的多功能性。它的整体性能也不错,可惜市场反响并不明显。

终究命悬一线,两年时间开发NV1,NVIDIA公司花光了投资,几乎破产。

走投无路之际,游戏公司世嘉伸出了援手。尽管世嘉跟 NVIDIA 的合作最终没有成功,但靠着世嘉的资金,黄仁勋终于熬到了明星公司微软的崛起。

当时微软发布了Direct X 接口,可市面上支持这一标准的图像芯片却寥寥无几。几乎所有的图像芯片厂商都在忙着推广自己的接口,对着明星公司微软的接口嗤之以鼻孔。

而急切的推出新接口,极有可能是新的产品发布。

黄仁勋注意到了这个问题,放弃部分已有的专利,他果断地决定全面支持微软的接口。

同年,微软传奇产品Windows 95发布,对着市场便是一顿狂轰乱炸,疯狂输出。得益于营销手段的高超,以及Windows 95的革命性意义,一时的微软风光无限,一跃成了1995年最耀眼的明星。

好风凭借力,送我上青云。

Windows 95在微机操作系统的疯狂收割,使得NVIDIA公司的未来也逐渐光明。借着微软的东风,NVIDIA公司先后推出了RIVA 128,RIVA 128ZX和RIVA TNT,RIVA TNT2,都取得了相当不错的成果。

可这样的成功并未满足NVIDIA的战略需求,NVIDIA是一家有梦想的公司,它应该做世界上最好的显示芯片。吃饱饭的公司,说话就是硬气。不过话是放出来了,黄仁勋的动作也不含糊。

1999年,NVIDIA推出了跨时代的一款产品GeForce 256。与同时代的其他图像芯片相比,GeForce 256的创新之处在于,大大减少了对CPU的依赖,强化了对 3D 图像的渲染功能,性能上远远地甩开了同期的对手。

虽然这款产品在商业上并未取得多大的成功,但是它宣告了业界,显示芯片进入GPU时代。自此,NVIDIA奠定了图形工业的地位,信仰绿的眼睛,煤气灶的外型,逐渐在图形处理器上杀出一片腥风血雨。

如图1.1所示:
图1.1 NVIDIA之眼
2006年,为了减少开发者的负担,NVIDIA 发布了一个名为CUDA的编程库。通过这套工具,开发者们可以轻松地让 GPU 同时对画面上的每一个像素进行编程,让他们完成一些简单的渲染工作。

有了开发人员的支持,黄教主多年的梦想终于得以实现。旗帜的最后一块拼图终于接上,是时候大展身手了。

CUDA并行编程库

在简述CUDA架构之前,
我们先来了解一下CPU与GPU的区别。

在CPU的逻辑架构中,主要的组成部分有控制器Control,缓存Cache和算术逻辑单元ALU。基于CPU的通用性,它需要同时并很好地支持并行和串行操作。由此需要很强的通用性来处理各种不同的数据类型,同时又要支持复杂通用的逻辑判断,引入大量的分支跳转和中断处理。这些都使得CPU的内部结构异常复杂,计算单元的比重被降低了。

尽管GPU的逻辑架构与CPU相差无几,但GPU面对的则是类型高度统一,相互无依赖的大规模数据。它的计算单一,又不需要处理大量的逻辑,也不用支持各种复杂的判断。因此,GPU的芯片比CPU芯片简单很多,计算单元占了更多的比重。

如图2.1所示:
图2.1 CPU与GPU的结构比较
对于同样的浮点数运算,图形处理和并行计算来说,GPU的速度将完爆CPU。

而GPU有如此强大的计算能力,不利用起来真是暴殄天物。

自此,GPU通用计算开始深入研究。

2006年,NVIDIA发布了针对NVIDIA显卡的Compute Unified Device Architecture统一计算设备架构,即编程模型CUDA。

CUDA作为NVIDIA开发的架构,自然地承担起为开发者们提供计算平台的责任。它包含了CUDA指令集架构ISA以及GPU内部的并行计算引擎,开发人员现在可以使用C语言来为CUDA架构编写程序。

从CUDA体系结构的组成来说,包含了三个部分:开发库,运行初期环境和驱动。

开发库是基于CUDA技术所提供的应用开发库,CUDA的1.1版提供了两个标准的数学运算库:离散快速傅立叶变换CUFFT和离散基本线性计算CUBLAS的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速,方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。

运行初期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算,类型转换,内存管理,设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码Host Code,一种是运行在GPU上的设备代码Device Code。

驱动提供编程接口,不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件,宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行初期环境的编程接口实现各种类型的计算。

简单来说,CUDA的体系结构优化出一种全新计算模式,针对性的大量相似数据的多次重复复杂运算模式。

发展到现在,CUDA已经成了一种非常重要的计算模式,用于解决各种商业,工业以及科学方面的复杂计算问题,深受开发者们的喜爱。

NVIDIA伟大航路

二十世纪的双纪元,得知道人工智能。

人工智能的发展并非一帆风顺,总体呈“三起三落”趋势。不过发展到今天,手里有着大数据和云计算两柄宝剑,人类总算是一只脚迈进了人工智能发展的新时代。

尽管握着两柄利器,直到现在,能像电影世界中,如人类般聪慧,并高效处理问题的机器也没有出现。

不过的的确确的是,在人类探索人工智能的道路上,诞生了许多有意思的产物。例如,对当今科研影响颇深的“专家系统”。

专家系统,通过模拟人类专家的知识和经验,来解决特定领域的问题。尽管,专家系统是个不错的产物,不过,令科研人员头大的却有两个问题。

首先专家系统需要大量的存储容量,来确保领域中的知识数据,其次,在足够容量的同时,需要大量的算力保证计算。

本来这两个问题都不算难事,但对科研人员来说,经费的紧缺,使之如同登天。寻找廉价计算力,GPU进入了科研人员的眼中。巨量算力问题的解决,使得专家系统成了人工智能领域在80年代走向高潮的关键。

大风大浪来的快,去的更快。

世界进入20世纪的尾声,专家系统的缺点也暴露无遗。应用领域狭窄,缺乏常识性知识,知识获取困难,推理方法单一,缺乏分布式功能,兼容性差等多种问题,直接导致专家系统逐渐淡出人工智能的主线。

人们开始寻找,人工智能新的出路。

可惜,这跟NVIDIA公司已经没有多大关系了。早在80年代,它已经证明了GPU的重要意义,大量数据快速处理的廉价算力将与之分不开关系。

单纯的人工智能是不够的,智慧不会凭空产生。

自21世纪10年代后,大数据和云计算的蓬勃发展,终于为人工智能接上了数据量的拼图,它们将作为21世纪新的技术主旋律将在人类的历史上大放异彩。而信息产业的发展,将更多元化。

如图3.1所示:
图3.1 人工智能
而在背后默默支持着主流技术,GPU也将躺着壮大,拥有CUDA技术的NVIDIA公司则在荧幕之外笑开了花。

如今,2020年已经过去一半,我依旧没变成那飞天的猪。不过,能如千万个默默发力的廉价GPU一样,见证时代滚滚的浪潮,做个看客倒也不错。

时代从不美好,但也没那么坏。

黄教主,是时候高举人工智能的旗帜,开启NVIDIA的伟大航路了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值