【導(dǎo)讀】對于機器人而言,什么才最重要?能夠暴力彈跳的復(fù)雜機械裝置?各類價格昂貴的傳感器?不對,最重要的是能在復(fù)雜的環(huán)境中完成特定工作,為了實現(xiàn)這目標,機器人要眼觀六路,耳聽八方,行走天下。而這一切都離不開一顆強勁的大腦——高性能計算平臺和高效算法。
通用處理器在計算性能和能效上越來越難以滿足日益龐大、多樣化的數(shù)據(jù)處理需求。 借助由GPU、FPGA和其他智能引擎等協(xié)處理器與CPU一起組成的異構(gòu)計算平臺來提升計算性能,已成為當下學(xué)術(shù)界和工業(yè)界的研究熱點。 異構(gòu)計算作為一種特殊的并行計算方式,能夠根據(jù)每個計算子系統(tǒng)的結(jié)構(gòu)特點為其分配不同的計算任務(wù),在提高計算性能、能效比和實時性保障方面體現(xiàn)出傳統(tǒng)架構(gòu)所不具備的優(yōu)勢,逐漸在各種計算需求量較大的場合得到應(yīng)用。針對數(shù)據(jù)中心場景,英特爾已經(jīng)宣布要通過Xeon+FPGA平臺和Xeon Phi系列產(chǎn)品來推動異構(gòu)計算的實施。
那么,在我們所關(guān)心的機器人領(lǐng)域,情況又是如何?
一、機器人需要怎樣的計算平臺
機器人是復(fù)雜的機電一體化裝置,綜合運用了機械與精密機械、微電子與計算機、自動控制與驅(qū)動、傳感器與信息處理以及人工智能等多學(xué)科的最新研究成果。
機器人系統(tǒng)和系統(tǒng)中的傳感器
為了將這些成果融合起來,真正形成認知、感受和行動的能力,使機器人能夠理解并應(yīng)對真實的世界,準確完成操作任務(wù),其搭載的計算平臺需滿足多種要求,包括:
1)感知能力:具備豐富的I/O接口,支持USB 3、UART、I2C等多種I/O協(xié)議,用以接收各類傳感器數(shù)據(jù)。
2)控制能力:能夠控制各個運動部位,如底盤、手臂、手指和頭部,完成多個維度的動作,并且具備實時性和安全性方面的保障。
3)計算能力:既要應(yīng)對大量數(shù)據(jù)的處理開銷,更要滿足各類智能算法巨大的計算需求。
4)功耗控制:要在滿足以上能力的同時盡可能降低功耗,避免成為電池殺手。
5)易用性:必須提供友好的編程模型,使機器人的應(yīng)用開發(fā)快速、準確。
現(xiàn)有的計算平臺很難滿足以上需求,搭建適用于機器人的異構(gòu)計算平臺已經(jīng)迫在眉睫!CPU+FPGA的方案以其獨特的優(yōu)勢進入我們眼簾。
二、什么是FPGA
自1985年問世以來,F(xiàn)PGA這種可編程邏輯器件憑借在性能、上市時間、成本、穩(wěn)定性和長期維護方面的優(yōu)勢,在通信、醫(yī)療、工控和安防等領(lǐng)域占有一席之地。特別是近兩年,隨著云計算、高性能計算和人工智能的繁榮,擁有先天優(yōu)勢的FPGA更是得到了前所未有的關(guān)注。
FPGA由六部分組成:可編程輸入/輸出單元、基本可編程邏輯單元、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內(nèi)嵌專用硬核。 英特爾首席執(zhí)行官科再奇曾這樣描述:“你可以把FPGA想象成一堆gate,能夠隨時編程。FPGA可以用作多個領(lǐng)域的加速器,例如在加密的同時進行面部搜索,并能在微秒內(nèi)重新編程。其成本遠低于大規(guī)模單個定制部件,并具有更高的靈活性。”
隨著工藝的發(fā)展,技術(shù)的進步,F(xiàn)PGA的性能、指標都達到了新高度。新的Arria10系列FPGA和SoC功耗比前一代FPGA和SoC低40%,具有業(yè)界唯一的硬核浮點數(shù)字信號處理(DSP)模塊,其速率高達每秒1.5萬億次浮點運算(1.5 TFLOPS)。
FPGA的結(jié)構(gòu)
即便擁有上述優(yōu)勢,傳統(tǒng)上FPGA的開發(fā)難度還是令諸多程序員望而卻步。然而,隨著OpenCL標準的出現(xiàn),F(xiàn)PGA的應(yīng)用門檻正在大幅降低?;贠penCL的開發(fā)框架,用戶可以擺脫傳統(tǒng)的基于硬件描述語言(HDL)的開發(fā)流程,轉(zhuǎn)而采用更高效、也更符合廣大程序員背景的軟件開發(fā)流程。
OpenCL標準是第一個開放、免版稅、統(tǒng)一的編程模型,能夠在異構(gòu)系統(tǒng)上加速算法實現(xiàn),支持使用基于C的編程語言進行跨平臺開發(fā) ,例如CPU、GPU、DSP和FPGA。支持OpenCL的異構(gòu)系統(tǒng)一般通過PCle總線實現(xiàn)主機與硬件加速器(或者一個內(nèi)核與另一個沒有主機控制的內(nèi)核)之間的通信,而這一切并不需要程序開發(fā)者的關(guān)注。相反,開發(fā)者只需了解OpenCL定義的標準化的應(yīng)用程序接口(API)。如今,各個主流的深度學(xué)習(xí)框架都提供OpenCL的支持。英特爾正計劃推出基于FPGA的CNN的多種網(wǎng)絡(luò)實現(xiàn)。
OpenCL的編程模型
三、基于CPU+FPGA的異構(gòu)計算平臺
我們機器人系統(tǒng)實驗室今年的工作重點便是為機器人搭建基于CPU+FPGA的異構(gòu)計算平臺。根據(jù)我們的經(jīng)驗,F(xiàn)PGA能夠在一些關(guān)鍵的機器人應(yīng)用中發(fā)揮極大的價值。例如,我們將機器人自身定位的算法(SLAM)移植到FPGA中執(zhí)行,實現(xiàn)了比CPU高出十多倍的定位頻率,從而允許機器人以雙倍的速度運動,而不會“迷失方向”。
為了打造通用的機器人計算平臺,我們選用了英特爾提供給移動平臺使用的CPU和Arria 10系列的FPGA。 兩者通過高帶寬,低延遲的I/O接口(如PCIe)進行通信。 FPGA中可以包含多種加速模塊。我們會提供一套通用接口,便于模塊開發(fā)者包裝、發(fā)布已有的設(shè)計。
機器人的異構(gòu)計算平臺
在軟件層面,我們會構(gòu)建加速模塊的配置、安裝和消息傳遞機制,便于第三方將所需的加速模塊集成到應(yīng)用中,并設(shè)計一些定位、控制、視覺識別和物體建模的常用模塊,以及軟件的集成包,供用戶作為參考設(shè)計或直接選用。
有了如此智慧的大腦,機器人將變得更加耳聰,眼明,腿快,手穩(wěn),融入我們的日常生活,為人類提供更好的服務(wù)。