本發(fā)明涉及pcie?switch,具體涉及基于pcie?switch的異構(gòu)計算系統(tǒng)設(shè)備共享裝置及方法。
背景技術(shù):
1、到目前為止,經(jīng)歷了多年來的更新迭代,芯片的性能不斷提高,但受到生產(chǎn)制造等約束,芯片性能的提升已經(jīng)達到瓶頸,短時間內(nèi)很難有較大的突破。并且隨著互聯(lián)網(wǎng)爆炸式的發(fā)展,以及近年來人工智能的崛起,傳統(tǒng)的cpu處理器很難滿足日益增長的算力需求,出現(xiàn)了諸如帶寬不夠、延時高、開銷大等問題。因此搭載gpu/npu/fpga/dpu等加速芯片,構(gòu)建cpu+xpu的異構(gòu)算力網(wǎng)絡(luò)逐漸脫穎而出。相比于單一的計算架構(gòu),異構(gòu)計算通過多節(jié)點互聯(lián)通信技術(shù)來實現(xiàn)不同節(jié)點間的計算、網(wǎng)絡(luò)、存儲三大維度的橫向協(xié)同,從而提高算力性能,降低功耗成本。
2、異構(gòu)計算系統(tǒng)中各節(jié)點的設(shè)備資源池化共享成為首要問題。各節(jié)點之間資源共享、按需使用,可以極大地降低算力成本,這要求每個節(jié)點的中央處理器不僅具備控制自身節(jié)點設(shè)備的能力,同時還具有控制遠端主機節(jié)點設(shè)備的能力。例如,當(dāng)一臺機器需要更多的設(shè)備資源時,可以從其他有多余設(shè)備的機器上動態(tài)借用額外的設(shè)備。這種方法使得設(shè)備資源可以在多臺計算機之間共享,增加了系統(tǒng)的靈活性和資源利用率。這意味著我們可以使用性價比更高的硬件設(shè)備,而不是盲目使用性能更強大且更昂貴的設(shè)備,從而極大地降低算力成本。
3、申請?zhí)枮?02410031395的發(fā)明專利公開了基于pcie的車輛資源共享方法、裝置、設(shè)備、介質(zhì)及車輛,車輛中的第一控制器中創(chuàng)建初始pcie設(shè)備,第一控制器通過ntb獲取第二控制器中被共享pcie設(shè)備的配置信息,被共享pcie設(shè)備為第一控制器和第二控制器需要共享使用的pcie設(shè)備,第一控制器基于配置信息對初始pcie設(shè)備進行配置,得到目標(biāo)pcie設(shè)備,第一控制器通過目標(biāo)pcie設(shè)備訪問被共享pcie設(shè)備。根據(jù)本實施例,可以實現(xiàn)第一控制器與第二控制器之間的pcie設(shè)備共享,從而減少了資源配置的成本,也降低了布線的成本,而且第一控制器在訪問第二控制器中被共享pcie設(shè)備時,訪問方式接近本地訪問,無需進行協(xié)議轉(zhuǎn)換和解析,從而有效降低了數(shù)據(jù)傳輸?shù)难舆t。但該現(xiàn)有技術(shù)仍然存在很多不足之處,具體情況如下所述:
4、(1)缺乏設(shè)備資源動態(tài)靈活調(diào)整能力:在該系統(tǒng)中,第一控制器和第二控制器通過ntb共享設(shè)備,但沒有提到設(shè)備的回收以及再分配。在實際使用場景中,互聯(lián)系統(tǒng)可能非常龐大,設(shè)備需要在所有節(jié)點之間共享,這需要設(shè)備能夠在需要時被正確回收,并根據(jù)當(dāng)前算力需求再分配。
5、(2)缺乏主機節(jié)點動態(tài)加入和退出能力:在該系統(tǒng)中,第一控制器和第二控制器通過ntb共享設(shè)備,但其中一個控制器若發(fā)生故障死機,那么整個系統(tǒng)會發(fā)生癱瘓,這在車載系統(tǒng)中后果是致命的。因此在互聯(lián)系統(tǒng)中的設(shè)備借用方案需要支持主機節(jié)點動態(tài)退出,并保證系統(tǒng)的其他節(jié)點正常運行。另外當(dāng)有其他節(jié)點加入系統(tǒng)時,該節(jié)點的設(shè)備資源也應(yīng)該能夠靈活地加入資源池。
6、(3)使用場景單一:系統(tǒng)應(yīng)用于車輛領(lǐng)域,使用場景相對單一。
技術(shù)實現(xiàn)思路
1、本發(fā)明人在進行基于pcie?switch的異構(gòu)計算系統(tǒng)資源池化和設(shè)備借用方法研究時,發(fā)現(xiàn)該現(xiàn)有技術(shù)并不成熟,缺乏設(shè)備資源動態(tài)靈活調(diào)整能力,沒有考慮設(shè)備資源在各個節(jié)點之間的動態(tài)借用。本技術(shù)發(fā)明人在進行異構(gòu)計算系統(tǒng)的設(shè)備借用方案調(diào)研時,發(fā)現(xiàn)異構(gòu)計算互聯(lián)系統(tǒng)是非常復(fù)雜的,算力的分配可能實時變化,例如某個節(jié)點在某些時刻需要大量的存儲資源,那么該節(jié)點需要借用系統(tǒng)資源池中的存儲設(shè)備,但是一段時間后該節(jié)點空閑,這時原先被占用的存儲設(shè)備資源需要被返回到資源池以供其他節(jié)點使用。另外本發(fā)明人在進行調(diào)研時還發(fā)現(xiàn),復(fù)雜的互聯(lián)系統(tǒng)必須具備動態(tài)加入和退出能力。在單個節(jié)點發(fā)生故障時,故障不應(yīng)該影響系統(tǒng)中的其他節(jié)點的正常運行。同時故障節(jié)點占用的設(shè)備資源應(yīng)該被正確回收,以供系統(tǒng)其他計算節(jié)點使用。當(dāng)有新的計算節(jié)點加入時,該節(jié)點的設(shè)備資源也能夠靈活地被添加到設(shè)備資源池。
2、本發(fā)明的目的在于提供一種基于pcie?switch的異構(gòu)計算系統(tǒng)資源池化和設(shè)備借用方法,用以解決上述技術(shù)中的以下問題:(1)缺乏設(shè)備資源動態(tài)靈活調(diào)整能力;(2)缺乏節(jié)點動態(tài)加入和退出能力;(3)使用場景單一問題。
3、根據(jù)本發(fā)明提出的基于pcie?switch的異構(gòu)計算系統(tǒng)設(shè)備共享裝置,用于對互聯(lián)系統(tǒng)內(nèi)的pcie設(shè)備在所有節(jié)點內(nèi)共享,所述節(jié)點按照借用關(guān)系分為借用方和借出方,其特征在于,所述節(jié)點具有借用模塊、借出模塊和節(jié)點事件動態(tài)監(jiān)測模塊;
4、所述借用模塊用于管理借出方所屬的pcie設(shè)備,包括獲取借出方所屬的pcie設(shè)備狀態(tài),在借出方所屬的pcie設(shè)備可借用時,獲取借出方所屬的pcie設(shè)備配置信息,基于獲取的配置信息創(chuàng)建虛擬pcie設(shè)備,通過所述虛擬pcie設(shè)備訪問借出方所屬的pcie設(shè)備,并在退出訪問后歸還釋放借出方所屬的pcie設(shè)備資源;
5、所述借出模塊用于管理本地的pcie設(shè)備,包括通知借用方本地的pcie設(shè)備狀態(tài),并在借用方退出訪問pcie設(shè)備后回收所出借的pcie設(shè)備資源;
6、所述節(jié)點事件動態(tài)監(jiān)測模塊用于監(jiān)測互聯(lián)系統(tǒng)內(nèi)的節(jié)點狀態(tài),對新加入的節(jié)點與之建立握手連接,對退出的節(jié)點判斷與之是否存在連接關(guān)系,并根據(jù)判斷結(jié)果進行包括退出連接或回收所出借的pcie設(shè)備資源的處理。
7、更進一步的改進,在發(fā)生節(jié)點加入的事件中,本地節(jié)點通過底層反饋的新加入的節(jié)點id,向新加入的節(jié)點發(fā)送握手消息,新加入的節(jié)點收到握手消息后,在消息回調(diào)函數(shù)中返回回復(fù)消息,以形成新加入的節(jié)點與本地節(jié)點的握手連接。
8、更進一步的改進,在發(fā)生節(jié)點退出的事件中,本地節(jié)點首先遍歷所有的instance實例,根據(jù)instance?id判斷該節(jié)點是否與故障節(jié)點有連接關(guān)系,如果沒有對應(yīng)的instanceid,代表連接已經(jīng)不存在,這時直接退出即可,當(dāng)有連接關(guān)系時,則進行資源回收處理。
9、本發(fā)明還提出了一種基于pcie?switch的異構(gòu)計算系統(tǒng)設(shè)備共享方法,包括以下步驟:
10、借出方與借用方互發(fā)消息,建立握手連接,并創(chuàng)建對端的instance實例;
11、借出方將可共享的pcie設(shè)備添加到設(shè)備池,并設(shè)置可共享的pcie?設(shè)備的狀態(tài)為可使用狀態(tài);
12、借出方主動連接借用方,創(chuàng)建共享內(nèi)存區(qū),以便雙方交互pcie?設(shè)備狀態(tài);
13、借出方廣播pcie?設(shè)備狀態(tài),通知借用方;
14、借用方發(fā)起對某個pcie?設(shè)備的借用請求,借出方返回該pcie?設(shè)備的配置信息;
15、借用方基于借出方返回的配置信息創(chuàng)建虛擬pcie設(shè)備,借用方對虛擬pcie設(shè)備的訪問被透明地轉(zhuǎn)發(fā)到借出方的pcie設(shè)備中;
16、借用方取得借出方所屬的pcie設(shè)備的控制權(quán)后,借出方將該pcie設(shè)備的狀態(tài)標(biāo)記為正在使用,并阻止互聯(lián)系統(tǒng)中的其他節(jié)點對該pcie設(shè)備的訪問;
17、借用方退出對借出方所屬的pcie設(shè)備的訪問后,借出方將該pcie設(shè)備的狀態(tài)標(biāo)記為可使用,互聯(lián)系統(tǒng)內(nèi)的其他主機可以借用該pcie設(shè)備。
18、更進一步的改進,借用方發(fā)起某個pcie?設(shè)備的借用請求過程中,借用方主動攔截對該pcie設(shè)備的配置讀寫方法,并通過rpc遠程調(diào)用的方式,將該pcie設(shè)備的配置讀寫請求轉(zhuǎn)移到借出方,由借出方進行對該pcie設(shè)備配置空間的訪問。
19、更進一步的改進,當(dāng)借用方發(fā)起某個pcie設(shè)備的借用請求時,借用方通過鉤子函數(shù)中判斷該pcie設(shè)備的bdf,如果訪問的是遠端設(shè)備,則發(fā)起rpc遠程調(diào)用,從而完成對pcie設(shè)備真實配置的讀寫,同時借用方在本地內(nèi)存緩沖中維護該pcie設(shè)備的配置空間,在不需要遠程調(diào)用的情況下,直接從本地緩存中讀取。
20、更進一步的改進,所述配置信息包括配置空間參數(shù)、存儲器地址空間參數(shù)。
21、更進一步的改進,所述虛擬pcie設(shè)備的配置信息與被共享的pcie設(shè)備的配置信息內(nèi)容相同。
22、更進一步的改進,被共享的pcie設(shè)備的配置讀請求攔截流程包括以下步驟:
23、借用方主機發(fā)出對共享設(shè)備的配置空間訪問讀請求,在先前注冊的鉤子函數(shù)中通過設(shè)備的bdf號判斷設(shè)備是否為共享設(shè)備,如果不是共享設(shè)備,則使用原始配置讀方法;如果是共享設(shè)備,借用方發(fā)起rpc遠程調(diào)用,通知借出方主機完成設(shè)備配置空間的讀操作,借出方主機讀取數(shù)據(jù)并將結(jié)果返回給借用方主機,借用方主機將返回值保存在本地緩存中。
24、更進一步的改進,被共享的pcie設(shè)備的配置寫請求攔截流程包括以下步驟:
25、借用方主機發(fā)出對共享設(shè)備的配置空間訪問寫請求,在先前注冊的鉤子函數(shù)中通過設(shè)備的bdf號判斷設(shè)備是否為共享設(shè)備,如果不是共享設(shè)備,則使用原始配置寫方法;如果是共享設(shè)備,首先將數(shù)據(jù)寫入本地緩存,接著借用方發(fā)起rpc遠程調(diào)用,通知借出方主機完成設(shè)備配置空間的寫操作,借出方主機收到請求并將數(shù)據(jù)寫入到設(shè)備的配置空間。
26、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
27、本技術(shù)與現(xiàn)有技術(shù)相比,所述設(shè)備借用軟件方案允許互聯(lián)系統(tǒng)內(nèi)的設(shè)備在所有節(jié)點內(nèi)共享,并且不需要借助任何軟件中間層。設(shè)備驅(qū)動程序運行在與設(shè)備物理分離的機器上,可以直接控制遠端設(shè)備,就像設(shè)備和驅(qū)動程序在同一臺機器上一樣,并且無需修改驅(qū)動程序,真正實現(xiàn)了軟件無感知。