程小猿的难处,相信你也(yě)感同身受。
当下,异构计算(suàn)如日中天(tiān),开发者在(zài)同一(yī)个数据(jù)中心里,既需要在(zài)CPU里做虚拟(nǐ)机(jī),又需要在FPGA里做各(gè)种(zhǒng)压缩,还需要(yào)在GPU里做深度学习。
因(yīn)此(cǐ),开发(fā)者得在(zài)数据中心(xīn)里,安装很多硬件、和运行很多软件。这种情况下,开(kāi)发者不加班才怪呢!
如果CPU、FPGA和GPU等,还(hái)是各自为政,当你的应用要扩容(róng)、硬件要升级时,或(huò)者(zhě)哪怕你想做(zuò)出任何改变,成本都非常高(gāo)。
如果架构再发生变化,这等于你之前(qián)的付出,全部白(bái)费(fèi)!
打个比方,某天中午(wǔ),你既想吃天妇罗,还想(xiǎng)吃水煮(zhǔ)鱼,但这一个是(shì)日料、一个(gè)是川菜,你想同时吃到,就得分别去一家日(rì)料(liào)店和(hé)一家川菜馆。
有(yǒu)没有办法(fǎ),可以让(ràng)你在(zài)一家餐厅(tīng),就同时吃到(dào)鹅肝(gān)和水煮鱼呢?
当然有!去自助餐厅就可以(yǐ)。
而前文提到的oneAPI,正(zhèng)是英特尔为了让开发者能够自由享用“自助餐服务(wù)”而推出的(de),赋予开(kāi)发(fā)者灵活选择各种架构进(jìn)行任意组合(hé)的惬(qiè)意(yì)
那(nà)么,oneAPI是一个(gè)怎样(yàng)的产(chǎn)品?
四问oneAPI:是啥、干(gàn)啥(shá)、啥时用、咋用
oneAPI是(shì)啥
在(zài)2019年超级计算大(dà)会上,oneAPI beta产品发布(bù)。
portant;" />
oneAPI beta产(chǎn)品(pǐn),包括(kuò)直接编程工(gōng)具(Data Parallel C++)、基于API的编程工具、以(yǐ)及分析工具和(hé)调试工具等组件。oneAPI beta还可以把这(zhè)些工具,封装为特定领域的工具包。
概(gài)括来说,oneAPI是一个统(tǒng)一和简化(huà)的编(biān)程模型(xíng),它的诞生使命,在于(yú)简化跨多架构(gòu)的开发过程(如(rú)CPU、GPU、FPGA、加速器(qì))。
它(tā)也是英(yīng)特尔首创(chuàng)的自(zì)助餐(cān)式服务(wù)。举个(gè)例子(zǐ),银行、物流、医院、工厂等不同行业的开发(fā)者,他们的需(xū)求(qiú),都不尽相同。在某一(yī)个硬件上,开发者(zhě)用的可能是CPU+FPGA,也(yě)可能是GPU+FPGA。
但(dàn)是跨不同的硬件、CPU、GPU和AI,有比较多复杂硬件的(de)异(yì)构性。而oneAPI提供了更加简(jiǎn)单的方法,来统一编(biān)程框架,让程序员在不同的硬(yìng)件架构(gòu)上,感受到统一的(de)开发体验,这对(duì)于程序员(yuán)来讲工作就会非常(cháng)方便(biàn)。
短短数月内,支持oneAPI的企业和机构已经超过30家。它们中间,既有一(yī)线(xiàn)厂商,还有名牌高校。
portant;" />
oneAPI干啥
它(tā)最重要的作用,就(jiù)是帮你实现异构编程!
打个比方,oneAPI和异构编程的关系,有点像携号转网,当然这个(gè)“转网”,不需要有关部门的(de)批复。
有了oneAPI,你(nǐ)在某一个数据(jù)中心(xīn)里开发的东西,可以(yǐ)从CPU挪到FPGA上,也可(kě)以从NVIDIA的GPU挪到英(yīng)特尔的GPU上。
此外,oneAPI还能简化各种架构的(de)开发(fā)流程;它还可以统一语言和函数库,使(shǐ)其变得更简单,从而有利于表达(dá)并行化;oneAPI还拥有(yǒu)很好的(de)本机高级语言(yán)性能;并(bìng)能够与现有HPC编程模型(xíng)互操作。
oneAPI啥时用
当(dāng)下,oneAPI beta版已(yǐ)经(jīng)发(fā)布。
而oneAPI的库和组件们,要么已经开源,要么即将走(zǒu)向开(kāi)源。
俗(sú)话说,车(chē)马(mǎ)未动,粮草先行。
英特尔已在北京和上海,举(jǔ)办oneAPI beta研讨会,通过开发者的试(shì)用和反馈,来(lái)对oneAPI做出优化(huà)。一年后的2020年四季度,一个准备完美的oneAPI,就会和你见面(miàn)。
oneAPI咋用(yòng)
当下的oneAPI beta版(bǎn),主要面向(xiàng)英特尔(ěr)至强可(kě)扩(kuò)展处(chù)理器、带(dài)集成显卡的英(yīng)特(tè)尔酷(kù)睿处理器,以及英特(tè)尔FPGA。
如(rú)果你感兴趣,可以在Intel oneAPI DevCloud平台下载和试用oneAPI工具(jù)。想了解更多(duō)oneAPI详情,则可以戳software.intel.com/oneAPI。
DPC++:专门为oneAPI设计(jì)的编程语言
好(hǎo)马还要配好鞍,为了(le)让你更丝滑地(dì)使(shǐ)用oneAPI。基于英特尔在架构和编译器(qì)领域积累的(de)多年经验,英特尔专门给(gěi)oneAPI,设计了(le)一款(kuǎn)名叫DPC++的编程语言。
portant;" />
它的全(quán)称(chēng)叫Data Parallel C++,Data Parallel是数据并行的(de)意思。它基于C和C++,并融合SYCL(OpenCL的高级编程模型)。
三剑(jiàn)合一(yī),让DPC++能支(zhī)持跨(kuà)CPU、跨加速器的数(shù)据并行,并能让你实现异(yì)构编程(chéng)。
可以说,DPC++存在的意(yì)义,正是为了(le)简化(huà)编程(chéng)、提(tí)高(gāo)代(dài)码(mǎ)在不同硬件上的可重用性。此(cǐ)外,它还能根据特定的加(jiā)速器进行调优。
未来可期:开(kāi)发(fā)者如何享受oneAPI利(lì)好?
oneAPI大(dà)部分都是开(kāi)源的,你可以按照自己(jǐ)的想法,在上面做拓展。
此外,oneAPI的诞生原因(yīn)之一,便是为了减轻开发者工作(zuò)量、以(yǐ)及方便开发者进行跨架构(gòu)编程。
正因为oneAPI的是开(kāi)源的(de),所以它也是(shì)瞬息万变的。
而(ér)它(tā)的变化(huà),正取(qǔ)决于开发者对于oneAPI生态的贡献。
英特尔通过投入(rù)大量人力(lì)、物力,已经给oneAPI设(shè)立好起点。
接(jiē)下来,就需要(yào)开(kāi)发者和英特尔一(yī)起,来将oneAPI推得(dé)更高(gāo)!
然后,水涨船高后,受益者就是你。
话说回来(lái),谁说(shuō)程序员工(gōng)资高,都是加班加(jiā)出来(lái)的?工(gōng)具用得好,下班回家早!oneAPI用起来!