NVLink技术及影响解析

1繁华的背面

    最新GPU架构Pascal,能自己开上舞台的Audi A7,超过700名与会专家学者及技术人员,近百场学术会议和科研分享,连续两晚的happy hour、酒会和GTC Party……在一片喧嚣和欢乐当中,2014年度的GTC大会降下了帷幕。对于GPU及并行运算相关领域的技术人员和科研工作者来说,GTC大会带给他们的也许是获得技术信息的满足感和充实的幸福,但对于普通的玩家和GPU爱好者而言,今年的GTC大会似乎有那么点……“不务正业”……

GTC喧嚣后的思考 NVLink技术及影响解析

    对于显卡爱好者而言,每年的GTC大会最期待的便是老黄那“饱含重料”的开幕式keynote,NVIDIA即将发布的各种新品,都将在keynote当中悉数登场。但除了多少有些遥远的Pascal架构之外,核弹元勋今年的keynote看上去都和桌面GPU关系不大。老黄花大力气铺陈的各种技术规范和标准,好像都是些超算啊工业啊科学研究啊之类的领域才会用到的东西,很难快速的引起GPU爱好者的共鸣。用我一位朋友的原话来形容,这届GTC“毫无新意,讲的都是些不着边际的事”。

    难道是NVIDIA变了么?会不会是毫无压力的竞争态势让NVIDIA变得松懈和慵懒,进而失去了在GPU领域创新和开拓的动力呢?

GTC喧嚣后的思考 NVLink技术及影响解析
看似不着边际的老黄Keynote——“CUDA EVERYWHERE”

    我们曾经说过,相对于“NVIDIA正在做什么”,我们更应该关注“NVIDIA为什么要这样做”以及“NVIDIA即将做什么”。无论GTC的喧嚣还是“毫无新意”,甚至是老黄keynote的“不着边际”,背后所隐藏的真相才是需要被挖掘的。那么在今天的文字当中,就让我们一起来重新审视一下这届GTC大会的技术细节,看一看隐藏在“不着边际”背后的真相吧。

 

2西线无战事?

 

    ● 西线无战事?

    平心而论,“毫无新意”这种描述似乎也不是完全有错,因为除了朦胧的Pascal架构之外,GTC2014技术大会乍看之下好像跟GPU没有任何直接的关联。莫名的不实感以及当前明显不对称的图形市场竞争环境,让大部分爱好者看待本届GTC大会的眼光中都带上了浓浓的“西线无战事”的意味——好一幅歌舞升平的景象啊,不仅没有新品,连新架构都是那么的云里雾里,难道是因为竞争对手的不给力,让NVIDIA放松了在图形领域和GPU架构层面的努力了么?

    不如这样,让我们先回顾一下本届GTC大会上NVIDIA所公布的各项新技术和新的解决方案吧。

GTC喧嚣后的思考 NVLink技术及影响解析
老黄现场展示的Pascal架构原型

    GTC2014大会最重要组成部分便是开幕式的keynote,在这场主题为CUDA EVERYWHERE的Keynote分享当中,黄仁勋先生为与会者带来了包括NVLink、3D memory、Pascal架构、IRAY VCA、JETSON TK1、Erista GPU、基于Tegra的驾驶员辅助系统,还有新一代单卡双芯卡皇Titan Z。黄仁勋先生在现场展示了大量实物,其中就包括了Pascal架构产品的原型。

永不停止的脚步 GTC2014黄仁勋主题演讲
JETSON TK1为移动领域带来了CUDA解决方案

    如果按照技术关联度划分,技术又可以被划分成三大部分,即GPU相关的NVLink、3D memory、Pascal架构和Titan Z,与运算及云渲染架构相关的集群解决方案IRAY VCA,以及与移动智能平台及SoC领域相关的JETSON TK1、Erista GPU和基于Tegra的驾驶员辅助系统。近2个小时的Keynote被几乎等分成了上述三个部分,彼此的比例是相当的。

GTC喧嚣后的思考 NVLink技术及影响解析
密集云渲染解决方案IRAY VCA

    如此一来,今年的GTC大会是不是“毫无新意”就应该算是一目了然了——NVIDIA仍旧在传统的GPU领域铺陈了不少于1/3的篇幅,用以介绍最新技术以及最新的图形/运算架构细节,这一比例与往届并未有明显不同,而且也完全可以说明NVIDIA的业务划分模式,那就是以桌面GPU架构技术为核心,向外分别辐射至大型化的HPC/工业高性能并行运算/大规模集群渲染平台以及小型化的移动智能/车载SoC平台。老黄并没有倦怠,NVIDIA也没有因为竞争环境的改变以及压力的松懈而停止对GPU技术及架构进步的推动。

    那究竟是什么,让关注GTC大会的爱好者有了“毫无新意”的不实感呢?

永不停止的脚步 GTC2014黄仁勋主题演讲  永不停止的脚步 GTC2014黄仁勋主题演讲

永不停止的脚步 GTC2014黄仁勋主题演讲  永不停止的脚步 GTC2014黄仁勋主题演讲
由Tegra K1驱动的无人驾驶系统(点击查看原图)

    一方面,老黄本次的Keynote内容衔接的确实不太理想,放在GPU架构后面的关于超级计算机集群逻辑能力训练的内容技术倾向过强而且名头太大,这部分内容用浓厚的技术和哲学色彩成功的达到了喧宾夺主的歪楼作用,与会者大多沉浸在人工智能及逻辑学相关的激烈思考当中,进而有意无意的忽略了之前关于GPU架构及技术的内容。另一方面,这届GTC大会上公布的最重要的新技术——NVLink以及3D memory,尤其是NVLink并没有得到进一步的深度解析,所有与会者都需要一番思考,才会发现这项技术背后的深意,以及它对未来GPU,乃至整个NVIDIA发展所带来的影响。

    那么,究竟什么是NVLink?

 

3NVLink到底link了谁

● NVLink到底link了谁

    在解析NVLink技术之前,简明的总览介绍是必须的。简单来说,这是一个能够在GPU-GPU以及GPU-CPU之间实现高速大带宽直连通讯的快速互联机制

    NVLink基于点对点传输形式,编程模式与PCIE总线相同,作为基本传输单元出现的“block”(区块)包含八条通道,每条通道20Gbps,每个block合计带宽20GB/s,这一带宽数值已经大大超出了PCIE 3.0的水平。不仅如此,多个block还可以组合在一起来达到提供更高带宽或者连接更多设备的目的。

永不停止的脚步 GTC2014黄仁勋主题演讲
NVLink技术

    NVLink采用了中间接口(mezzanine connector)设计,这种接口多见于扩展子卡领域,著名的GeForce 7950 GX2以及GeForce GTX 295的两张PCB也是如此组装在一起的。这种接口能够提供更强的供电能力,但缺点是接口形式与PCIE不兼容,必须针对需求单独设计。这种不兼容还带来了一个麻烦,初期NVLink的部分指令和通讯过程仍旧要依赖PCIE,所以设计者必须在两者之间设计必要的联系机制。

    NVLink的受众相当广泛,不仅可以依据不同需求完成GPU-GPU节点内部的高速互联,同时还能在GPU-CPU甚至CPU-CPU之间形成高速互联。它既可以像PCIE,也可以像QPI。所有多GPU并行工作的场合,无论是价值数亿美元的Tesla超级计算机集群还是桌面的SLI都将会从中获得更高的并行通讯带宽。与CPU直连的特性让其成为了未来沟通Denver和GPU架构,充当NV异构计算架构内部高速总线的备选互联方案。另外,它还能够在其他基于NVIDIA GPU+第三方CPU的异构并行计算架构当中充当互联方案。从作用上来看,它确实有取代PCIE总线的意味。

永不停止的脚步 GTC2014黄仁勋主题演讲
NVLink也可以作用于多GPU之间

    NVLink的出现其实颇为令人玩味,因为NVIDIA本身是PCI-SIG的成员之一,PCIE总线虽然近年来确实受人诟病,但其32G的双向带宽在满足现有硬件及常规应用的需求时似乎并不困难。究竟是什么因素促使NVIDIA在此时放下手中的工作,尽心尽力的去开发一款高速互联解决方案呢?

    来自NVIDIA自身的现实需求是NVLink出现的原因之一。早在2011年,NVIDIA便在CUDA4.0当中加入了GPUDirect2.0、Unified Virtual Addressing(CUDA UVA)以及Unified Memory Pool的概念,CUDA UVA允许多个GPU节点之间在一定程度上合并并共享彼此的显存空间,同时允许GPU直接访问并利用系统内存空间,这一系列操作都是通过PCIE总线来完成的。当某个GPU节点在应用中出现本地显存空间不足时(题外话:实际上单节点本地内存不足的现象在GPU大规模并行计算中相当常见,而且已经成了困扰并行化进程的一大瓶颈,亦即“存储墙”,无论NVIDIA的Tesla还是Intel的PHI都未能“免俗”,而包括3D memory技术在内的一系列堆叠式显存应用的出现,也有相当的应对该问题的意味。存储墙问题相对复杂,在此不多赘述。),它可以利用GPUDirect2.0特性,透过PCIE总线来使用和操作其他节点的显存以及系统主存。显而易见的,根据短板原则,即便此时系统主存还有其他节点显存的带宽能够达到几百乃至数千GB,该节点能够获得的有效带宽也依旧只能是PCIE总线带宽。越来越频繁的跨节点操作所催生的通信带宽需求,让NVIDIA有了开发NVLink来应对跨节点内存操作以及存储墙问题的需求。

GTC喧嚣后的思考 NVLink技术及影响解析
受制于PCIE总线带宽的CUDA UVA

    翻越存储墙并不是催生NVLink的全部理由,强大的外部压力和竞争态势同样是NVLink诞生的重要诱因。这一强大的外部压力,来自Intel。

 

4蓝色的阴影

 

● 蓝色的阴影

    尽管老黄嘴上一直不肯承认,但对于目前的NVIDIA而言,眼前最大的对手已不再是昔日里硅谷斗士领导下的红色劲旅,而是一直高高在上的“另一位蓝色巨人”——Intel。两者的战场,也已经从单纯的HPC整体解决方案领域蔓延到了高性能并行计算节点层面。

GTC喧嚣之后的思考 NV未来发展脉络解析
Intel一直没有停止在逻辑结构层面的研发

    随着大数据以及智慧城市概念的日趋火热,超大规模并行计算能力正日益受到各方的重视,甚至连五角大楼都跑来用EXA狠狠的刷了一把存在感。这是一个总量无法估算的庞大领域,其中所能够产生的资源和利润空间诱惑是任何一家半导体芯片供应商都无法抗拒的。当前HPC领域的需求大多集中在大规模并行计算层面,而Intel在该领域的竞争力,显然是毋庸置疑的。它不仅拥有完整的独立CPU以及CPU+GPU异构架构解决方案,其最新推出的PHI计算卡更是表现出了强悍的理论性能和实际效率。除此之外,Intel对HPC领域的投入也十分巨大,大量基于大规模并行计算的研究项目,背后都有Intel的身影。

GTC喧嚣之后的思考 NV未来发展脉络解析
IVY Town采用的新结构Ringbus

    无独有偶,Intel也在积极改进自己的高速逻辑互联机制,在最新的ISSCC以及IEEE2014上,Intel详细展示了新一代ringbus技术。新的Ringbus改变了vring在多核心之间的布置和互联形式,通过路径优化达到了用最少的ring覆盖最多核心,并让数据在ring之间快速跳转的目的。这种新的Ringbus改善了多核心数据共享的延迟情况,提升了多核心并行运算时的整体任务效率,如果被应用在新一代PHI计算卡当中,将会使其运算效率得到进一步提升。

GTC喧嚣之后的思考 NV未来发展脉络解析
两种可能的新Ringbus互联模式(图片源自后藤弘茂先生)

    与NVIDIA相比,尽管Intel也同样会面对来自存储墙的压力,但更为优秀的MC设计能力以及无图形负担等众多优势让其能够更为轻松的扩展PHI的本地内存容量,事实上Intel也确实正在做着这样的事,PHI多达8GB的本地显存在容量上是明显超过Tesla方案的。再加上Intel“天生”对PCIE总线的深入了解以及其所带来的优化可能,对于Intel而言,来自PCIE总线带宽的压力并没有NVIDIA那么紧迫和明显。它只需要做好运算效率的提升以及编程环境的改善,便可以让下一代计算卡解决方案保持良好的竞争力。

GTC喧嚣后的思考 NVLink技术及影响解析
如适当应用新型Ringbus,新一代PHI的效率将进一步提升

    显而易见,这样的竞争环境对于希望在HPC领域有一番作为的NVIDIA是不利并且压力巨大的。它不仅缺乏作为HPC基础的通用处理器节点解决方案,同时还受制于PCIE总线的困扰,如果不寻求一个突破口,无论EXA还是其他大规模高性能并行计算,NVIDIA的竞争力都将会受到影响。

    要继续增强自身的竞争力,要在HPC领域承受来自Intel的,尤其是PHI的冲击,要解决包括存储墙在内的一系列问题,NVLink便是在这样的需求背景下诞生并于本届GTC大会上来到大家面前的。问题是这一技术要如何来增强NVIDIA的竞争力呢?我们已经解析过了,NVIDIA需要依赖其他通用CPU节点,而NVLink是一款能够沟通GPU以及CPU节点的互联机制,所以它背后所link的CPU节点,正是可以帮助NVIDIA填补处理器这一重要环节缺失的靠山。这位靠山,就是原教旨的蓝色巨人,IBM。

 

5合纵还是连横?

 

● 合纵还是连横

    Intel,NVIDIA和IBM,这三位在HPC领域的态势以及彼此的关系其实是相当微妙的。它们不仅彼此竞争,同时也彼此依赖。

GTC喧嚣后的思考 NVLink技术及影响解析
NVIDIA的新盟友——IBM

    Intel曾经是传统意义上的CPU节点方案供应者,在并行计算兴起以及传统CPU节点的规模拓展遇到瓶颈之后,Intel凭借PHI完成了华丽的转身,眼下的Intel拥有完整的CPU节点、GPU节点异构解决方案。但由于缺乏生态环境的支持以及完全放弃了MMX/XMM/YMM等常规指令集,尽管拥有相对简便的软件平移和开发环境,可是PHI计算卡依旧缺乏业界的接纳。PHI计算卡出现之后一年时间里瞬间飙升但又马上归于沉寂的被关注度和装机总量,就是这种现状的最好说明。在这种情况下,Intel更多地还是要与NVIDIA的Tesla进行配合,共同打造满足客户需求的HPC解决方案。

    IBM的处境更加尴尬,它曾经是HPC领域无可撼动的王者,基于Power架构的超级计算机集群代表了HPC领域运算效率的最高水平,同时也仍旧是Top500前列的常客,但IBM面前的瓶颈是非常明显的。尽管实际效率要明显高于异构方案,但纯CPU方案的痼疾,诸如难以释放规模、性能功耗比较低以及成本更高等缺点正在困扰着IBM,基于单纯CPU解决方案的超级计算机集群正变得稀少,在当前的HPC业界,能够更轻松的拓展规模,同时拥有良好性能功耗比的CPU+GPU异构解决方案是更受欢迎的,而暂时无法独立提供异构解决方案的IBM处境无疑是困难的。2014年第一季度利润同比下滑21%,应该已经或多或少的反映出了IBM当前的境遇。

GTC喧嚣后的思考 NVLink技术及影响解析
基于Power7的超算虽然效率超高,但代价不菲

    NVIDIA一直都是异构并行计算的忠实支持者,同时也已经凭借经营多年的CUDA生态体系建立了属于自己的GPU异构并行计算生态圈,这一生态圈的稳固度相当高,已经达到了足以暂时屏退Intel攻势的程度。但是NVIDIA的问题同样明显,那就是它只能提供GPU解决方案。无论是赖以完成调度管理工作的CPU节点,还是沟通异构架构的高速数据总线,NVIDIA都是不具备的。所以在当前的HPC业界,NVIDIA必须与其他CPU及高速总线供应商达成合作才能生存。

    很明显,以三足鼎立之势而言,NVIDIA处在可以联合Intel与IBM当中的某一方的位置上,摆在NVIDIA面前的是一道合纵还是连横的选择题。而且就目前看来,这道选择题似乎并不难做——如果选择Intel,NVIDIA虽然可以在短期内避免同Intel“翻脸”并维持现有的相对稳定安逸的竞争环境,但无论PHI的威胁还是PCIE总线的限制显然都将会在IBM日渐式微之后被Intel当作反攻的利器。所以对于当前的NVIDIA来说,联合IBM共同对抗Intel,利用一切机会跳脱出能够被Intel制衡的环境,并且在保持必要独立性的前提下维持三足鼎立的相对均势,是当前环境下最理想的选择。而NVLink,就是这个选择的结果。

GTC喧嚣后的思考 NVLink技术及影响解析
NVIDIA的异构解决方案离不开通用处理器

    所以,我们看到了能够连接其他CPU节点的NVLink,同时看到的还有背后蓝色巨人的身影——IBM全程参与了NVLink的开发过程,并在GTC大会的同时以官方声明的方式宣布下一代Power架构将加入NVLink的支持,这也是NVIDIA加入OpenPower联盟以来最重要的一次实际行动。与蓝色巨人的联合,其实才是本届GTC大会最重要的猛料。

    现在,您还会觉得NV已经西线无战事,整个GTC大会只说了一些“毫无新意”的东西么?

 

6再看无战事的西线

 

● 再看无战事的西线

    NVLink技术无论对NVIDIA还是对IBM而言,都将产生相当深远的影响。它不仅改变了HPC领域原本三家各自为战的局面,同时也深远的影响了NVIDIA和IBM。

    对于IBM而言,NVLink的出现为其打开了一扇快速且相对便捷的通往异构计算架构的大门。NVLink带来的NVIDIA GPU架构不仅让IBM无需投入大规模的资源进行新的GPU并行架构研发,而且还拥有了提供异构计算架构解决方案的能力。打通异构架构的联系不仅为IBM提供了一片更为广阔的市场和利润空间,Power架构的进入也为异构并行方案带来了更为高效的管理机制,这无论对于受困于CPU单线作战的IBM,还是受困于有效运算效率难以提升的异构并行运算界而言而言,无疑都是相当有利的前景。

GTC喧嚣后的思考 NVLink技术及影响解析
有了NVLink,Power架构也有了异构计算的条件

    对于NVIDIA来说,与IBM的合作为自己带来了更多可能性。它既可以以更深入的形式获得Intel之外的更为高效的通用处理器节点支持,又可以收获一条PCIE之外的全新的GPU高速互联机制,这在很大程度上减轻了NVIDIA对Intel的依赖性,同时增加了它的竞争筹码。在此基础上,聪明的NVIDIA也并没有彻底摒弃对PCIE总线的支持,NVLink与PCIE总线想通的编程模式以及部分共用的指令,都显示了NVIDIA试图平衡竞争态势,并在其中保持更多自由和弹性的意图。

GTC喧嚣后的思考 NVLink技术及影响解析
突破CUDA生态环境的“包围”是Intel亟待努力的方向之一

    Intel的处境同样发生了相应的变化,当自己的两个最重要对手联合在一起之后,先前Intel对IBM所拥有的CPU+GPU异构计算架构的优势将不再明显,NVIDIA对它的依赖也进一步减轻,在自己所面临的软件及开发生态环境相对欠缺的问题没有得到改善之前,Intel所面临的来自正面的竞争压力无疑将会变得更大。一个对手的能力有了提升,另一个对自己还有依赖的潜在对手现在也不在那么依赖自己,Intel的压力是可想而知的。可以预见,Intel势必会在未来继续加大自己在HPC领域的投入,推出更强大的PHI后续产品的同时开发更多更新且更有竞争力的技术。

    AMD的状态也许真的让西线处在无战事的状态下,但很明显的,NVLink为我们带来了另一条战线的火药味。

 

7关联性问题

 

● 关联性问题

    看到这里,也许您会认为我们今天所进行的还是一次“不着边际”的思考过程。在铺着了数千字的篇幅之后,GTC大会上所呈现的我们认为最重要的技术,好像还是一团跟桌面GPU以及显卡没什么直观联系的“阳春白雪”。“老黄这不还是因为AMD不给力而变得懈怠,变得不重视GPU和显卡了么?”

    其实不然,NVLink技术以及整个NVIDIA的发展核心,其实依旧是与GPU以及显卡息息相关的。

GTC喧嚣后的思考 NVLink技术及影响解析
NVLink与PCIE总线对比

    首先,NVLink技术并不是一个“HPC only”的高端技术,它完全可以被用来强化现有的图形应用场景,其所带来的更大的GPU之间与CPU的互联带宽可以让SLI场合,尤其是多卡SLI以及单卡多芯场合从中获益。NVIDIA未来的单卡双芯卡皇,将有可能优先以NVLink作为卡上双芯通讯机制,先通过NVLink完成双芯通讯,然后再汇总至PCIE总线,会是未来单卡双芯解决方案的一个理想选择。

    单显卡游戏应用目前对总线带宽的敏感程度虽然不及多卡,但随着更大尺寸材质的应用以及运算量的攀升,为桌面GPU提供更大带宽总线的需求迟早会出现,NVLink显然是理想的选择。不过话分两头,如何在桌面推广NVLink技术,或者尽可能的将其同当前的PCIE总线结合在一起,是这一切实现的基础。

GTC喧嚣后的思考 NVLink技术及影响解析
集成NVLink技术的Pascal架构

    接下来,NVLink技术对NVIDIA接下来的GPU架构同样有着重要的价值。异构结构和Project Denver是NVIDIA GPU架构发展的两个重要节点,NVLink的出现为两者的结合带来了一种新的互联选择。如果NVIDIA能够提供高于现有Xbar方案的带宽/晶体管比例,那么NVLink在GPU内部充当ALU团簇同LOC之间的互联总线,将会是一个相当不错的选择。

GTC喧嚣后的思考 NVLink技术及影响解析
NVLink同样可以为Tegra提供帮助

    最后,NVLink还为NVIDIA的Tegra以及移动GPU带来了更多可能性,无论是ARM还是Denver处理器,都将可以通过NVLink连接到新一代架构移动GPU上。NVIDIA对自有总线的优化,无疑将会进一步提升未来Tegra处理器的效率和竞争力。

    随着完整版Maxwell架构的临近以及Pascal架构的公布,NVIDIA正式进入单GPU异构结构的步伐正在加快。NVLink技术的出现,无疑给NVIDIA未来的GPU架构及显卡产品带来了更多可能。

 

8绿色的未来

 

● 绿色的未来

    至此,您还会觉得老黄在GTC2014上的表现是因为西线无战事而导致的不务正业么?NVIDIA并没有因为竞争环境的松懈而跟着松懈。也许AMD确实已经无法在对NVIDIA的GPU架构研发施加有效的压力,但技术的进步依旧在NVIDIA内部不断的出现着。

GTC喧嚣后的思考 NVLink技术及影响解析
并未“不务正业”的GTC2014

    诚然,也许催生这些进步的动力并非直接来自桌面及图形领域的需求,但来自HPC及大规模并行计算领域的推动同样可以有效的促进NVIDIA推进技术的前行。运算和图形本就是一家,DirectX 11出现之后,两者间原本无奈的界限已经变得模糊,而且还将在未来变得更加模糊。图形操作和运算将越来越多的建立在大规模并行化运算的基础之上,图形就是运算,运算就是图形。以并行运算为基础进行的技术进步,将会越来越直接且方便的为显卡进步带来好处。

GTC喧嚣后的思考 NVLink技术及影响解析
原教旨的并行化计算

    其实不用提什么API和操作,只要我们以稍微宏观一些的眼光去看待现有的超级计算机集群,将其中的每一颗CPU及每一块计算卡都看做是一个点,就会很方便的发现它们与单颗GPU之间的相似性。大量计算节点的并行多任务处理过程,与大量ALU的并行多线程处理在数学模型上存在很多等价的部分,针对大规模并行计算架构进行的开发,是不可能对早已基于大规模并行架构进行设计的GPU产生不了影响的。

GTC喧嚣后的思考 NVLink技术及影响解析
值得期待的Pascal

    无论进步的动力源自何处,NVIDIA继续推动GPU架构及相关技术进步的努力应该都不会停止。不断提升GPU架构的性能功耗比以及绝对性能,在未来相当长一段时间内都将成为NVIDIA的核心任务。NVLink技术所带来的更大规模的带宽以及更高效的节点通讯能力显然有助于这一目标的实现,而且还能改变HPC及其他领域的一系列竞争格局的变化。这样富有积极意义的技术出现在GTC技术大会当中,我想应该可以被当做NVIDIA“诚意”的表现了。

GTC喧嚣后的思考 NVLink技术及影响解析
同样值得期待的NVIDIA

    NVLink等本届GTC大会上释出的技术,大多会在Maxwell之后的Pascal架构当中正式来到众人的面前。没有展示更多完整版Maxwell架构的细节是本届GTC大会的一大遗憾,但技术的进步以及未来业界格局的变化仍然给我们带来了许多新的希望。大家稍安勿躁,让我们一起期待这些进步和变化的到来吧。

 

 

作为视觉计算的龙头公司——NVIDIA,每年都会举办盛大的GTC盛会,但在盛会之后我们进入了深深的思考,这样的技术、那样的产品,有着怎样的意义?且听本文作者为你一一道来。

林光楠

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

转载于:https://www.cnblogs.com/skiwnchiwns/p/10345173.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022年结束了

在去年这个时候,我刚好也写了一篇这样的文章。再往前是2020年的总结年终了,肿一下斗转星移,我的这个公众号也陪伴着我经过了4年的时间,明年后,我也正式进入35岁程序员的行列,随时会受到命运对我的锤炼。庆幸…

STL容器之deque

双端队列&#xff1b;序列式容器(deque/vector)&#xff1b;底层分段连续 支持从双端进行插入和删除&#xff1b; 综合了vector和list的优点&#xff1b; 插入、删除、查找的平均时间复杂度都是O(1) 部分deque的操作如下&#xff1a; #include <stdlib.h> #include …

varnish-cache使用

Varnish Cache是一个web加速软件&#xff0c;用作web服务加速的反向代理&#xff0c;与Squid不同的是它建立在较新的系统内核调用上&#xff0c;并且主要是使用内存作为缓存&#xff0c;它现有的使用者有facebook等&#xff0c;据使用者反馈&#xff0c;其与Squid相比&#xff…

2020年文章汇总

据悉&#xff0c;深圳某工程师沦为C语言笔试枪手修改cmdline 把内存改成512MB上拉电阻的作用剖析C语言是如何画出这样的三角形的c语言画谢宾斯基三角形Linux字符设备驱动实例哦&#xff0c;这是桶排序回答一个微信好友的创业问题Linux-C编程 / 多线程 / 如何终止某个线程&#…

2018年文章汇总

Android ANR 实例分析Linux kernel计算某段代码运行时间Linux Kernel 发展和内核特点C/C函数指针与指针函数(二)老王带你理解算法复杂度O(1),O(N),O(N^2)Android NDK Tombstone/Crash 分析堆和栈的区别&#xff08;转过无数次的文章&#xff09;C语言scanf-周末杂想C语言-scanf…

Angular CLI的简单使用(1)

参考地址: https://v2.angular.cn/docs/ts/latest/cli-quickstart.html Angular CLI是一个命令行界面工具&#xff0c;它可以创建项目、添加文件以及执行一大堆开发任务&#xff0c;比如测试、打包和发布。 1. 请先在终端/控制台窗口中运行命令 node -v 和 npm -v, 如下图,没有…

在没有数据集的情况下使用数据表

使用数据适配器填充数据表 View Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;namespace PopDataTable {class Program{static void Main(string[] args){string connString…

2019年文章汇总

要不要去培训机构深造一下&#xff1f;我一个37岁的程序员朋友Linux内核中的GPIO系统整理的免费资料&#xff0c;帮你年后跳槽C语言&#xff0c;字符串指针做函数参数书籍推荐过年回家抢票攻略C语言&#xff0c;函数不可返回指向栈内存的指针你还会写这段C51程序吗&#xff1f;…

linux下修改max_user_processes和open_file的最大值

从事分布式服务器开发工作的都会遇到&#xff0c;linux下open_file的值默认是1024&#xff1b;max user processes的值默认是4096&#xff0c;在实际用于中&#xff0c;这两个值严重不足&#xff0c;常常需要调整这两个值。默认配置如下&#xff1a; 可以通过以下两种方式修改&…

IP SLA的路径控制

一、定义SLA 服务水平协议&#xff08;简称&#xff1a;SLA&#xff0c;全称&#xff1a;service level agreement&#xff09;是在一定开销下为保障服务的性能和可靠性&#xff0c;服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。简…

【linux】linux系统中常见配置文件及目录说明

1.配置文件/proc/sys/fs/file-nr 里文件里显示三个数字 [rootlocalhost logs]# cat /proc/sys/fs/file-nr 2112 0 2100000已分配文件句柄的数目 已使用文件句柄的数目 文件句柄的最大数目 上面第二项的值为0表示分配的文件…

ptmalloc,tcmalloc和jemalloc内存分配策略研究

转载&#xff1a;https://cloud.tencent.com/developer/article/1173720 操作系统内存布局 各种malloc的内存分配管理方式离不开操作系统的内存布局策略。 32位经典内存布局 32位系统下经典内存布局如上&#xff0c;程序起始的1GB地址为内核空间&#xff0c;接下来是向下增长…

Tcmalloc

Tcmalloc Ptmalloc在性能上还是存在一些问题的&#xff0c;比如不同分配区&#xff08;arena&#xff09;的内存不能交替使用&#xff0c;比如每个内存块分配都要浪费8字节内存等等&#xff0c;所以一般倾向于使用第三方的malloc。 Tcmalloc是Google gperftools里的组件之一。…

JVM自动内存管理机制——Java内存区域(下)

一、虚拟机参数配置 在上一篇《Java自动内存管理机制——Java内存区域&#xff08;上&#xff09;》中介绍了有关的基础知识&#xff0c;这一篇主要是通过一些示例来了解有关虚拟机参数的配置。 1、Java堆参数设置 a&#xff09;下面是一些简单的使用参数 其中最后一个是一个运…

PHP版选择排序法

2019独角兽企业重金招聘Python工程师标准>>> <?php// 选择排序法函数function selection_sort(&$array) {$array_length count($array); // 数组的长度$temp 0; // 交换时用到的临时变量for ($i 0; $i < $array_length - 1; $i) {// 认为数组第$i个元…

boost::stable_vector简单解析

由于vector底层实现的机制是一个动态数组&#xff0c;因此使用std::vector<T>时&#xff0c;如果海量数据量时&#xff0c;会导致vector底层的数组很大很大&#xff0c;这样就会导致database很快就会出现内存不足而导致系统停止运行或卡住&#xff0c;这时就要考虑是否用…

理解zookeeper选举机制

转载&#xff1a;https://www.cnblogs.com/shuaiandjun/p/9383655.html 一、zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的&#xff0c;每个服务器上的数据是相同的&#xff0c;每一个服务器均可以对外提供读和写的服务&#xff0c;这点和red…

使用交互环境

使用交互环境许多脚本语言的解释器都提供了交互环境&#xff0c;我们可通过此环境与计算机沟通交流。为什么叫做交互环境&#xff1f;因为我们在这里通过编程语言与计算机沟通&#xff0c;让它做任何事情&#xff0c;它都会立刻照办并给予我们反馈。运行REBOL 解释器的方式很简…

[原创]K8 cping 3.0大型内网渗透扫描工具

[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器&#xff1f;其实也是插件化&#xff0c;但Cscan不需要编程同样可实现自定义功能&#xff0c;这比单纯插件化更容易实现插件功能Cscan旨在为用户提供一个高…

std::string的resize()与reserve()的区别

std::string的resize()与reserve()的区别: resize()&#xff1a;改变的是size()与capacity()的大小 (1)、比原来的变小之后&#xff0c;后面的会被截断 (2)、比原来的变大之后&#xff0c;后面的会被填充新的东西&#xff0c;不同的编译器可能会不同 reserve()&#xff1a;…