oneAPI是一個統(tǒng)一編程模型,可以簡化我們在不同的體系結(jié)構(gòu)中進行異構(gòu)計算的開發(fā)流程,充分發(fā)掘性能來滿足各種不同負載的需求。在開源社區(qū),英特爾為oneAPI絕大部分內(nèi)容建立開放代碼項目,為了鼓勵協(xié)作,英特爾還發(fā)布了Devcloud,開發(fā)測試工作負載,以便更多的使用者體驗oneAPI編程。
多架構(gòu)編程所面臨的問題是,如今大多數(shù)追求性能表現(xiàn)的編程都針對單一架構(gòu),不容易在其他架構(gòu)上重復使用已有的代碼。這限制了開發(fā)者的選擇,使得在新的硬件產(chǎn)品出現(xiàn)時,過往的開發(fā)投入無法被重復利用。與此同時,高性能計算環(huán)境正利用多種計算設備,包括CPU、GPU以及其他的硬件加速器,由于存在如此多的異構(gòu)平臺為這些不同架構(gòu)開發(fā)高效軟件,編程開發(fā)自然面臨許多挑戰(zhàn)。
每種硬件計算設備都需要使用不同的語言和庫進行編程,針對這些計算軟件需要維護的代碼庫,在中間件和框架層我們進行了大量重復操作來發(fā)掘不同硬件體系結(jié)構(gòu)的差異化優(yōu)勢,滿足我們的計算需求,這嚴重地降低了我們的開發(fā)效率。
為了解決上述多架構(gòu)編程所帶來的問題,英特爾提出了oneAPI這個解決方案,該項目旨在提供統(tǒng)一的軟件開發(fā)環(huán)境。oneAPI行業(yè)倡議基于行業(yè)標準和開放式規(guī)范,對用戶提供多種硬件廠商選擇,提供統(tǒng)一編程語言和庫來做并行化計算,使得在各種硬件上寫程序都能達到應有的性能。這種靈活性以及對以往代碼的重用,使得開發(fā)者能夠使用到最佳的處理器和加速器,更好地滿足工作負載對性能、成本和功耗的需求。
oneAPI屬于貼近底層硬件的基礎編程層級,可以使各中間件和框架來指示CPU以及多種加速器,用戶可以直接利用中間件和框架或者使用oneAPI自帶的高級編程語言,oneAPI編程模型可以與其他現(xiàn)存的模型進行互操作。
oneAPI行業(yè)技術的提出是基于標準行業(yè)規(guī)范,替代了原有單一供應商解決方案,使得用戶獲得更加廣闊創(chuàng)新的開發(fā)系統(tǒng)。oneAPI可以簡化跨多種類型的CPU和加速器開發(fā),并不限于英特爾公司出品的硬件。oneAPI規(guī)范包括三個部分:第一部分是直接編程,提供了基于開放標準的編程語言DPC++;第二部分是基于API編程,提供一組充分發(fā)掘硬件性能的庫,為所有支持平臺提供與本機一致的性能;第三部分是底層硬件接口,可為供應商提供硬件抽象層。這些組件大多數(shù)都是開源的,以鼓勵開發(fā)社區(qū)協(xié)作并幫助構(gòu)建新功能,并且這個開源范圍還在繼續(xù)擴展中。
基于oneAPI的規(guī)范,英特爾oneAPI實現(xiàn)了包括基礎功能套件以及針對特定領域的補充工具套件?;A工具套件除了oneAPI規(guī)范中提到的三個之外,還提供了英特爾DPC++兼容性工具。
首先,我們來仔細看看基礎工具套件里面有哪些內(nèi)容。除了DPC++兼容性工具分析和調(diào)試性工具外,基礎工具套件里面有一些數(shù)學歷程、矩陣代數(shù)、I數(shù)據(jù)分析庫(包含機器學習和數(shù)據(jù)分析功能)、oneAPI深度神經(jīng)網(wǎng)絡庫、深度學習訓練和推理的神經(jīng)網(wǎng)絡功能以及oneAPI視頻處理庫,里面有實時的視頻解碼、編碼、轉(zhuǎn)碼的處理功能。
其次,我們來看一下oneAPI技術工具套件里面的組件。第一是DPC++編譯器,英特爾通過工作組以及社區(qū)協(xié)作,使其更貼近行業(yè)現(xiàn)狀。在基礎工具套件里面,我們要看的第二個組件是DPC++兼容性工具,該組件將已有的程序遷移到DPC++,但是不能完全替代開發(fā)人員工作。第三個基礎工具套件還包含了增強版的Vtune,在英特爾長期投入研發(fā)領先的分析工具基礎上提供了增強版本,以支持一系列空間架構(gòu)。第四個技術功能套件里面還提供了孕育在CPU和其他加速器上進行代碼調(diào)試的高級語言調(diào)試器、基于行業(yè)標準開源的GDB調(diào)試器。
英特爾將大力投資一系列計劃,以推動DPC++語言,這些計劃包括廣泛的開發(fā)者支持計劃。英特爾推出oneAPI的目的就是簡化處理器和加速器的開發(fā),并不僅僅局限于英特爾的問卷。
由于oneAPI作為包含直接編程和基于oneAPI的標準組件,集成廣泛的創(chuàng)新,在戰(zhàn)略行業(yè)協(xié)作之中以及第三方參與該計劃的公司,均可以使用oneAPI開放規(guī)范來構(gòu)建自己。
最后,我們鼓勵第三方公司為其他廠商開發(fā)符合oneAPI規(guī)范的商業(yè)產(chǎn)品。第三方和OEM廠商可以根據(jù)自身情況決定發(fā)布形式。我們來看一下英特爾的Devcloud,開發(fā)人員可以下載英特爾oneAPI測試工具包以供本地使用,也可以通過云端英特爾工具包快速入門,可以跨多種英特爾架構(gòu)工作負載。該項目可以通過安裝和設置節(jié)省時間,并且可以靈活地適用不同硬件,而無需耗費搭建開發(fā)平臺的成本。
需要指出的是,英特爾Devcloud所提供的人工環(huán)境是真實的物理平臺,不是虛擬機。用戶在注冊了Devcloud賬號以后可以在120天之內(nèi)免費地使用安裝oneAPI測試版軟件以及英特爾各種支持oneAPI硬件的社會平臺,時間期限到了之后還可以進行續(xù)期申請。