隨著大數(shù)據(jù)、人工智能的崛起,算力需求進(jìn)一步提升,異構(gòu)架構(gòu)得到大量應(yīng)用,多種算法涌現(xiàn),軟件和硬件的結(jié)合越來(lái)越緊密,尤其隨著科技創(chuàng)新速度的加快,對(duì)硬件的自適應(yīng)性要求越來(lái)越高。業(yè)界急需一款綜合平臺(tái),打通軟件設(shè)計(jì)和硬件設(shè)計(jì)之間的壁壘,讓兩者更快融合,從而提升系統(tǒng)設(shè)計(jì)效率。
在賽靈思大中華區(qū)銷售副總裁唐曉蕾看來(lái),軟件定義硬件、自適應(yīng)計(jì)算成為未來(lái)的發(fā)展趨勢(shì),而賽靈思也一直在順應(yīng)并推動(dòng)這一趨勢(shì)的發(fā)展。從 Vivado 設(shè)計(jì)套件、SDNet 軟件定義規(guī)范環(huán)境,到針對(duì)數(shù)據(jù)中心的 SDAccel 開(kāi)發(fā)環(huán)境、面向 SoC/MPSoC 嵌入式 C/C++應(yīng)用開(kāi)發(fā)的 SDSoC,再到面向云端應(yīng)用的可重配置加速堆棧的 reVISION 堆棧,賽靈思向著“All-Programmable”一路狂奔。近期,賽靈思新推出的 Vitis 統(tǒng)一軟件平臺(tái)進(jìn)一步加深了軟件設(shè)計(jì)和硬件設(shè)計(jì)的融合,讓軟件工程師“摸著黑”就能做好項(xiàng)目設(shè)計(jì)。
?
順應(yīng)三大趨勢(shì),Vitis 應(yīng)運(yùn)而生
Vitis 一詞如何定義?唐曉蕾解釋,Vitis 是由法文單詞 Vite(快速的)和 vitality(有活力的)構(gòu)成,合在一起的寓意是“至關(guān)重要的生命力”。Vitis 是公司內(nèi)在的驅(qū)動(dòng)力和未來(lái)成長(zhǎng)的基石,賽靈思希望用有生命力的產(chǎn)品帶給用戶有機(jī)且有生命力的成長(zhǎng)。
左:賽靈思大中華區(qū)銷售副總裁唐曉蕾;右:賽靈思軟件和人工智能高級(jí)經(jīng)理羅霖
關(guān)于 Vitis 的誕生背景,唐曉蕾分析了三大行業(yè)趨勢(shì):第一是云端到邊緣的統(tǒng)一化,原來(lái)在云端進(jìn)行的計(jì)算開(kāi)始向邊緣端轉(zhuǎn)移,在轉(zhuǎn)移的過(guò)程中發(fā)現(xiàn)功耗、計(jì)算力是重要因素,但是很多時(shí)候難以準(zhǔn)確定義到底是在云還是在邊緣處理,所以需要一個(gè)從云到端的統(tǒng)一解決方案;第二是 AI 激增,隨著數(shù)據(jù)量的激增,如果我們想讓產(chǎn)品產(chǎn)生價(jià)值就需要 AI 分析,AI 激增帶來(lái)場(chǎng)景的激增,也需要統(tǒng)一的平臺(tái);第三是異構(gòu)計(jì)算,數(shù)據(jù)增加對(duì)計(jì)算力要求越來(lái)越高,單核算力已經(jīng)難以滿足需求,因此出現(xiàn) CPU+GPU、CPU+FPGA 等異構(gòu)計(jì)算,賽靈思提出了自適應(yīng)異構(gòu),和傳統(tǒng)異構(gòu)不同,叫做軟件感知異構(gòu),它通過(guò)應(yīng)用場(chǎng)景決定采用的硬件平臺(tái),通過(guò)軟件做定向動(dòng)態(tài)應(yīng)用。
唐曉蕾表示,我們可以感知到用戶是在做人臉識(shí)別、語(yǔ)音識(shí)別,然后在不改硬件平臺(tái)的情況下進(jìn)行處理,完全用軟件感知架構(gòu),其實(shí)就是我們?nèi)ツ晔峦瞥龅能浖赃m應(yīng)計(jì)算加速平臺(tái)(ACAP),為了配合 ACAP,我們推出了 Vitis,Vitis 統(tǒng)一平臺(tái)可以說(shuō)是應(yīng)運(yùn)而生。
Vitis 統(tǒng)一軟件平臺(tái)是賽靈思?xì)v經(jīng)五年、投入總計(jì) 1000 個(gè)人工年而打造,無(wú)需用戶深入掌握硬件專業(yè)知識(shí),即可根據(jù)軟件或算法代碼自動(dòng)適配和使用賽靈思硬件架構(gòu)。此外,Vitis 平臺(tái)不限制使用專有開(kāi)發(fā)環(huán)境,而是可以插入到通用的軟件開(kāi)發(fā)工具中,并利用豐富的優(yōu)化過(guò)的開(kāi)源庫(kù),使開(kāi)發(fā)者能夠?qū)W⒂谒惴ǖ拈_(kāi)發(fā)。
四層設(shè)計(jì),Vitis打破軟硬件壁壘
Vitis 平臺(tái)構(gòu)建在基于堆棧的架構(gòu)之上,該架構(gòu)可以無(wú)縫插入到開(kāi)源的標(biāo)準(zhǔn)開(kāi)發(fā)系統(tǒng)與構(gòu)建環(huán)境,而且最重要的是,它包含一套豐富的標(biāo)準(zhǔn)庫(kù)。
第一層即基礎(chǔ)層,是 Vitis 目標(biāo)平臺(tái),該平臺(tái)由電路板和預(yù)編程 I/O 構(gòu)成。第二層稱為 Vitis 核心開(kāi)發(fā)套件,覆蓋開(kāi)源賽靈思運(yùn)行時(shí)庫(kù),以管理不同域間的數(shù)據(jù)移動(dòng),包括子系統(tǒng)、即將發(fā)布的 Versal ACAP? 內(nèi)的 AI 引擎和必要的外部主機(jī)。此外,該層也提供編譯器、分析器和調(diào)試器等核心開(kāi)發(fā)工具。雖然賽靈思提供的是世界一流的設(shè)計(jì)環(huán)境,但是這些工具設(shè)計(jì)的目的是能與業(yè)界標(biāo)準(zhǔn)的構(gòu)建系統(tǒng)與開(kāi)發(fā)環(huán)境無(wú)縫集成。
在第三層,8 個(gè) Vitis 庫(kù)提供 400 余種優(yōu)化的開(kāi)源應(yīng)用。這 8 個(gè)庫(kù)分別是:Vitis 基本線性代數(shù)子程序(BLAS)庫(kù)、Vitis 求解器庫(kù)、Vitis 安全庫(kù)、Vitis 視覺(jué)庫(kù)、Vitis 數(shù)據(jù)壓縮庫(kù)、Vitis 計(jì)量金融庫(kù)、Vitis 數(shù)據(jù)庫(kù)集和 Vitis AI 庫(kù)。借助這些庫(kù),軟件開(kāi)發(fā)者可以使用標(biāo)準(zhǔn)的應(yīng)用編程接口(API)來(lái)實(shí)現(xiàn)硬件加速。
Vitis 平臺(tái)的第 4 層,也是最具有變革意義的一層是 Vitis AI。它集成了特定領(lǐng)域架構(gòu)(DSA)。DSA 提供了針對(duì) AI 模型的硬件實(shí)現(xiàn),開(kāi)發(fā)者可以使用包括 TensorFlow 和 Caffe 等業(yè)界領(lǐng)先框架對(duì)其進(jìn)行配置與編程。Vitis AI 提供的工具鏈能在數(shù)分鐘內(nèi)完成優(yōu)化、量化和編譯操作,在賽靈思器件上高效地運(yùn)行預(yù)先訓(xùn)練好的 AI 模型。此外,它也為從邊緣到云端的部署提供了專用 API,實(shí)現(xiàn)業(yè)界一流的推斷性能與效率。賽靈思很快還將推出另一個(gè) DSA(Vitis Video),支持從 FFmpeg 直接進(jìn)行編碼并提供同樣超級(jí)簡(jiǎn)單且功能極強(qiáng)大的端到端視頻解決方案。
跳過(guò)軟硬件互通問(wèn)題,賦能軟件開(kāi)發(fā)人員
用戶最關(guān)心的莫過(guò)于如何通過(guò) Vitis 實(shí)現(xiàn)軟硬件互通?賽靈思軟件和人工智能高級(jí)經(jīng)理羅霖以智慧城市為例進(jìn)行了詳細(xì)分析。在智慧城市中,最典型的應(yīng)用場(chǎng)景就是在一個(gè)十字路口實(shí)時(shí)統(tǒng)計(jì)交通流量,包括汽車流量、人流量,用戶在系統(tǒng)前端可以采用大量攝像頭,實(shí)時(shí)捕捉視頻。在攝像頭前端完成部分特征提取工作后,把提取信息傳到云端,在云端提取更高層次的信息。
在這一應(yīng)用中,硬件包括攝像頭或邊緣服務(wù)器,硬件開(kāi)發(fā)人員通過(guò)賽靈思的板卡可以完成部分 IP 開(kāi)發(fā),然后交給嵌入式工程師,他們基于賽靈思提供的 Shell 和 Runtime 進(jìn)行修改,應(yīng)用工程師可以使用賽靈思經(jīng)過(guò)優(yōu)化的庫(kù),包括 CNN 加速庫(kù)、數(shù)據(jù)分析庫(kù)、數(shù)據(jù)加速庫(kù)完成應(yīng)用開(kāi)發(fā)。算法工程師需要檢測(cè)到車或者人,他們需要采用 Tensorflow 訓(xùn)練模型。在智慧城市系統(tǒng)里,通過(guò) Vitis 平臺(tái)可以讓所有開(kāi)發(fā)人員在統(tǒng)一平臺(tái)上協(xié)同工作,提升整體開(kāi)發(fā)效率。
到底基于 Vitis 怎樣能夠?qū)崿F(xiàn)客戶的目標(biāo)性能?第一步,軟件開(kāi)發(fā)人員把整個(gè)算法以及前后處理在 CPU 上完成,這部分不需要底層硬件開(kāi)發(fā)人員的幫助,采用 Vitis 可以達(dá)到每秒 6 幀;第二,把 DPU 放在殼里加速,性能從每秒 6 幀提升到每秒 30 幀。另外,通過(guò)一些技巧提升端到端的性能,比如預(yù)處理是設(shè)計(jì)空間轉(zhuǎn)換或者視頻縮放,采用 Vitis 庫(kù)提供一個(gè)前處理的優(yōu)化,把性能從 30FPS 提升到 40FPS,后面可以從 40FPS 再提升到 80FPS。在這一過(guò)程中,軟件工程師不需要專門(mén)插入芯片間隙或者插入數(shù)據(jù)監(jiān)測(cè)器來(lái)獲取相關(guān)信息,Vitis 可以通過(guò)詳細(xì)的分析報(bào)告以友好的圖形界面方式呈現(xiàn)。
另外一個(gè)重要?jiǎng)?chuàng)新是,賽靈思給用戶提供了一個(gè)集成開(kāi)發(fā)環(huán)境,客戶可以把里面一些功能完全插入到自己的 IDE 里,調(diào)用賽靈思的編譯器和調(diào)試工具。同時(shí)客戶也可以使用腳本完成整個(gè)應(yīng)用的開(kāi)發(fā)。賽靈思把工具交給客戶,讓他們可以無(wú)縫集成在自己的開(kāi)發(fā)環(huán)境里。羅霖強(qiáng)調(diào),我們的目的是賦能軟件開(kāi)發(fā)人員,讓他們?cè)谧赃m應(yīng)開(kāi)發(fā)平臺(tái)上釋放自己創(chuàng)新力的開(kāi)發(fā)工具。我們采用業(yè)界熟悉的標(biāo)準(zhǔn),同時(shí)把工具、資源、代碼開(kāi)放給客戶,讓客戶直接使用。
軟硬件廠商的互相“入侵”
為了加強(qiáng)軟硬件設(shè)計(jì)融合,英特爾計(jì)劃在年底發(fā)布 One API 測(cè)試版本,可以跨不同架構(gòu)、不同廠商完全開(kāi)放,可以看出,硬件廠商都非常重視軟件平臺(tái)建設(shè)。羅霖認(rèn)為,業(yè)界側(cè)重軟件開(kāi)發(fā)工具是大勢(shì)所趨,特別是從端到云,針對(duì)不同的應(yīng)用場(chǎng)景,要用軟件定義硬件,而不是為特定的硬件去優(yōu)化軟件。這就意味著硬件必須是可適應(yīng)的、靈活多變。賽靈思的架構(gòu)和器件可以應(yīng)對(duì)這一挑戰(zhàn)。同時(shí)我們也提供云端,針對(duì)不同的 Runtime、不同應(yīng)用底層硬件的 shell,包括超級(jí)延時(shí)的、超高吞吐量的,多通道的,還有針對(duì) STM、MLP 的。雖然它是高度適應(yīng)的,但是必須提供一個(gè)靈活豐富的硬件給軟件工程師,通過(guò)高程的 API 去調(diào)用下面的東西,這個(gè)理念是一致的,只是不同廠商有不同的實(shí)現(xiàn)手段。
另外,阿里、亞馬遜、百度等互聯(lián)網(wǎng)公司,除了開(kāi)發(fā)算法也要根據(jù)自己的應(yīng)用場(chǎng)景設(shè)計(jì) AI 芯片,軟件公司也開(kāi)始關(guān)心硬件性能。針對(duì)這一現(xiàn)象,唐曉蕾表示,這是他們的業(yè)務(wù)需求,因?yàn)榇笮突ヂ?lián)網(wǎng)公司面臨的場(chǎng)景越來(lái)越復(fù)雜,促使他們開(kāi)發(fā) ASIC 應(yīng)用的 AI 加速芯片。但是,當(dāng)它的 AI 算法改變的時(shí)候,還是需要一個(gè)過(guò)渡的平臺(tái),當(dāng)它的算法穩(wěn)定下來(lái)以后,才有能力,有固定的應(yīng)用支持它用 ASIC。我們面對(duì)的是所有的開(kāi)發(fā)者,所有的跟 FPGA 應(yīng)用相關(guān)的客戶。不管是大型公有云的運(yùn)營(yíng)公司,還是互聯(lián)網(wǎng)巨頭,仍然是我們非常重要的合作伙伴,F(xiàn)PGA、ASIC、ASSP 是一個(gè)循環(huán)重復(fù)的趨勢(shì)。由于摩爾定律慢慢地失效和硬件成本的提升,對(duì) FPGA 是最有利的時(shí)代。
Vivado和Vitis如何共存?
用戶都知道,賽靈思幾年前已經(jīng)推出了 Vivado 設(shè)計(jì)套件,那么,Vitis 是否可以完全替代 Vivado??jī)烧吒髯杂兄鯓拥亩ㄎ??羅霖解釋,Vivado 針對(duì)硬件開(kāi)發(fā),Vitis 針對(duì)軟件開(kāi)發(fā),但是軟件開(kāi)發(fā)需要硬件承載,因?yàn)橛脩舻能浖傄\(yùn)行在特定的硬件平臺(tái)上,過(guò)去用 Vivado 來(lái)實(shí)現(xiàn)硬件,現(xiàn)在可以在 Vitis 平臺(tái)里選用已經(jīng)設(shè)計(jì)好的 Shell,但是這些 Shell 也是用 Vivado 預(yù)先生成的,用戶直接調(diào)用即可,所以 Vitis 獨(dú)立于 Vivado 設(shè)計(jì)套件,后者仍然繼續(xù)為希望使用硬件代碼進(jìn)行編程的用戶提供支持。Vitis 能夠通過(guò)將硬件模塊封裝成軟件可調(diào)用的函數(shù),兩者還是相輔相成的關(guān)系。
唐曉蕾總結(jié),Vitis 是一款面向所有開(kāi)發(fā)者的平臺(tái),硬件開(kāi)發(fā)者可以在 Vivado 上做開(kāi)發(fā),軟件開(kāi)發(fā)者不需要弄懂 RTL 和 I/O 的使用,通過(guò) Vitis 直接進(jìn)行設(shè)計(jì)。AI 科學(xué)家專注于 AI 設(shè)計(jì),我們提供了 Vitis AI 工具。