一般說(shuō)來(lái),異構(gòu)計(jì)算的核心目的是解決特定應(yīng)用場(chǎng)景下算力不足的問(wèn)題,并且大幅度提升整體系統(tǒng)的計(jì)算性能。在整體架構(gòu)上,它的分層邏輯從應(yīng)用場(chǎng)景出發(fā),通過(guò)上層的需求來(lái)定義下層的功能,而每一層是對(duì)特定功能的抽象與封裝。在定義每一層功能時(shí),要達(dá)到以下幾個(gè)目標(biāo):
各層職責(zé)單一
層間邊界清晰
層內(nèi)功能實(shí)現(xiàn)獨(dú)立
靈活易擴(kuò)展
基于上述目標(biāo),將一個(gè)異構(gòu)計(jì)算的系統(tǒng)抽象為五層(如下圖所示),自下而上分別是:1)DSA設(shè)備層(DSA Device Layer),2)DSA操作層 (DSA Operating Layer),3)計(jì)算引擎層(Scheduling Operating Layer),4)應(yīng)用服務(wù)層(Application Service Layer)和5)業(yè)務(wù)開(kāi)發(fā)層 (Business Development Layer),詳述如下。
圖異構(gòu)計(jì)算系統(tǒng)抽象模型一、DSA設(shè)備層
DSA設(shè)備層代表的是執(zhí)行異構(gòu)計(jì)算的DSA處理器以及集成了該處理器的硬件設(shè)備,例如,以DPU或GPU為處理器的異構(gòu)計(jì)算設(shè)備。異構(gòu)計(jì)算設(shè)備需要具備以下兩個(gè)核心能力:1)提供支持專(zhuān)用計(jì)算操作的指令集(Instruction Set),2)CPU或其他DSA設(shè)備的標(biāo)準(zhǔn)通信接口,如PCIe數(shù)據(jù)傳輸標(biāo)準(zhǔn)。
二、DSA操作層
DSA操作層是對(duì)DSA處理器的指令集的管理以及基礎(chǔ)開(kāi)發(fā)平臺(tái)的整合,該層完成了對(duì)硬件資源的抽象,從而使上層軟件對(duì)底層設(shè)備透明;DSA操作層是對(duì)DSA設(shè)備層計(jì)算設(shè)備的抽象和計(jì)算資源的封裝,是軟件與硬件、邏輯與物理的邊界。它基于如DPU芯片等DSA處理器提供的指令集,以更加抽象和編程友好的方式對(duì)上層提供了異構(gòu)計(jì)算開(kāi)發(fā)和訪問(wèn)的軟件接口、以及設(shè)備監(jiān)控管理的接口。該層內(nèi)部有四個(gè)必要的模塊,分別是設(shè)備驅(qū)動(dòng)器,指令集管理器,資源訪問(wèn)接口,開(kāi)發(fā)和管理平臺(tái)。
- 設(shè)備驅(qū)動(dòng)器:設(shè)備驅(qū)動(dòng)器是硬件設(shè)備的軟件抽象,它基于操作系統(tǒng)標(biāo)準(zhǔn)的驅(qū)動(dòng)框架及PCIe協(xié)議,實(shí)現(xiàn)了對(duì)計(jì)算設(shè)備的物理訪問(wèn),主要包括設(shè)備處理器的指令執(zhí)行和設(shè)備存儲(chǔ)的讀寫(xiě)。
- 指令集管理器:指令管理器的作用是對(duì)計(jì)算設(shè)備所提供的指令集進(jìn)行統(tǒng)一管理,通過(guò)對(duì)指令集的封裝及組合,提供更加友好的編程接口。
- 資源訪問(wèn)接口:基于設(shè)備驅(qū)動(dòng)器和指令集管理器的功能,該模塊完成對(duì)整個(gè)計(jì)算資源訪問(wèn)的抽象和封裝,它以編程接口的方式對(duì)上層提供資源訪問(wèn)入口,服務(wù)于上層計(jì)算邏輯和控制邏輯的執(zhí)行。
- 開(kāi)發(fā)和管理平臺(tái):除了上述運(yùn)行時(shí)所需的能力外,還需要針對(duì)開(kāi)發(fā)人員提供友好的編程工具,如指令集編譯工具、監(jiān)控管理工具、日志工具、異構(gòu)計(jì)算卡模擬器等。
三、計(jì)算引擎層
計(jì)算引擎層是對(duì)計(jì)算邏輯的封裝,為上層提供通用的計(jì)算能力。與DSA操作層的對(duì)計(jì)算資源封裝不同,計(jì)算引擎層是對(duì)計(jì)算邏輯的封裝,它基于DSA操作層提供的資源訪問(wèn)接口,根據(jù)上層應(yīng)用層軟件對(duì)算力的需求,提供了可復(fù)用的算子集合及執(zhí)行接口。
算子抽象
算子定義為實(shí)現(xiàn)某一特定功能或算法的函數(shù)或獨(dú)立的服務(wù),它是對(duì)計(jì)算邏輯的抽象。例如,根據(jù)指定條件對(duì)數(shù)據(jù)進(jìn)行過(guò)濾的函數(shù)可以是一個(gè)算子,稱(chēng)它為“過(guò)濾算子”。在標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)軟件中,它的算子有Scan, Join, GroupBy等,而在網(wǎng)絡(luò)處理軟件中,特有的算子會(huì)是以BSD Socket,NVMe等標(biāo)準(zhǔn)服務(wù)的形式呈現(xiàn)。由于異構(gòu)計(jì)算的“異構(gòu)”特性,每個(gè)算子在不同設(shè)備上的具體實(shí)現(xiàn)有所不同,所以針對(duì)每一個(gè)支持的算子,都要有多種不同設(shè)備平臺(tái)上的實(shí)現(xiàn),如ScanOnDPU、ScanOnGPU。
計(jì)算優(yōu)化器
異構(gòu)計(jì)算追求的是計(jì)算性能的提升,相應(yīng)的需要一個(gè)計(jì)算優(yōu)化器來(lái)對(duì)上層的計(jì)算請(qǐng)求做優(yōu)化。它的基本策略是根據(jù)應(yīng)用場(chǎng)景、上下文、數(shù)據(jù)規(guī)模等因素來(lái)動(dòng)態(tài)的選擇最優(yōu)的算子實(shí)現(xiàn)進(jìn)行計(jì)算。
四、應(yīng)用服務(wù)層
應(yīng)用服務(wù)層是數(shù)據(jù)處理的應(yīng)用服務(wù)軟件,也是算力的需求側(cè)。應(yīng)用服務(wù)層代表具有通用功能的軟件系統(tǒng),這些軟件系統(tǒng)可以利用計(jì)算引擎提供的算子進(jìn)行異構(gòu)計(jì)算,從而達(dá)到計(jì)算性能提升的目的。常見(jiàn)的應(yīng)用層軟件系統(tǒng)有分布式計(jì)算領(lǐng)域的Spark, Flink, Hadoop;數(shù)據(jù)庫(kù)領(lǐng)域的PostgreSQL, MySQL;分布式網(wǎng)絡(luò)中的gPRC,Network Gateway,Nginx;以及存儲(chǔ)服務(wù)中的Ceph等等,基本上通用服務(wù)型的系統(tǒng)都屬于該層的范疇。
在實(shí)際開(kāi)發(fā)中,針對(duì)應(yīng)用服務(wù)層中的軟件,需要解決以下幾個(gè)關(guān)鍵問(wèn)題:
- 性能瓶頸的識(shí)別:通常應(yīng)用軟件的性能瓶頸會(huì)在高并發(fā)、大吞吐的情況下出現(xiàn),這些瓶頸一般源于CPU計(jì)算資源的競(jìng)爭(zhēng)、CPU計(jì)算性能的不足、網(wǎng)絡(luò)傳輸?shù)难舆t以及磁盤(pán)I/O的延遲等。識(shí)別出應(yīng)用軟件的性能瓶頸是算力卸載的第一步。
- 異構(gòu)計(jì)算的有效性邊界:在定位到軟件的性能瓶頸后,需要從中識(shí)別出哪些是可以通過(guò)異構(gòu)計(jì)算來(lái)解決的。通常,CPU成為瓶頸的原因會(huì)有兩類(lèi),一類(lèi)是算力的問(wèn)題,另一類(lèi)是算法的問(wèn)題。針對(duì)算力的問(wèn)題,可以通過(guò)異構(gòu)計(jì)算來(lái)解決,而算法的問(wèn)題則不然。
- 算子的高效調(diào)用:算子是異構(gòu)計(jì)算的執(zhí)行單元,只有把算子集成到應(yīng)用軟件的執(zhí)行路徑中,算力卸載才算完成。考慮到性能的優(yōu)化,還需要根據(jù)實(shí)際情況優(yōu)化算子的執(zhí)行策略,例如,數(shù)據(jù)在主機(jī)端與設(shè)備端內(nèi)存之間的數(shù)據(jù)拷貝策略、各算子執(zhí)行序列的編排策略等等。
- 應(yīng)用軟件的向前兼容性:在整合應(yīng)用軟件與異構(gòu)計(jì)算的算子時(shí),要確保應(yīng)用軟件的向前兼容性,以保證應(yīng)用服務(wù)層的軟件迭代對(duì)正在運(yùn)行的上層業(yè)務(wù)系統(tǒng)是透明的,從而提高整個(gè)架構(gòu)的穩(wěn)定性與可維護(hù)性。
五、業(yè)務(wù)開(kāi)發(fā)層
業(yè)務(wù)開(kāi)發(fā)層是在某特定領(lǐng)域的業(yè)務(wù)系統(tǒng)。業(yè)務(wù)開(kāi)發(fā)層是最貼近實(shí)際業(yè)務(wù)場(chǎng)景的軟件系統(tǒng),通常它是針對(duì)某個(gè)特定行業(yè)的具體業(yè)務(wù)需求定制的軟件系統(tǒng),如金融行業(yè)的交易系統(tǒng),互聯(lián)網(wǎng)行業(yè)的數(shù)據(jù)分析系統(tǒng)等等。整個(gè)異構(gòu)計(jì)算架構(gòu)本質(zhì)上就是解決業(yè)務(wù)層的性能瓶頸問(wèn)題,所以在實(shí)際開(kāi)發(fā)過(guò)程中,應(yīng)該從業(yè)務(wù)端出發(fā),尋找要解決的根本問(wèn)題,然后驅(qū)動(dòng)整個(gè)異構(gòu)系統(tǒng)的構(gòu)建。同時(shí),整體架構(gòu)也要保證底層構(gòu)建對(duì)具體的業(yè)務(wù)系統(tǒng)完全透明,達(dá)到對(duì)各行業(yè)業(yè)務(wù)軟件系統(tǒng)的無(wú)縫支撐和業(yè)務(wù)邏輯開(kāi)發(fā)的隔離。
-
DPU
+關(guān)注
關(guān)注
0文章
343瀏覽量
24044
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論