運(yùn)行管理器是神經(jīng)網(wǎng)絡(luò)軟件任務(wù)流向系統(tǒng)硬件資源的大壩系統(tǒng)閘門(mén),專門(mén)為神經(jīng)網(wǎng)絡(luò)的任務(wù)分配提供了資源管理通道。昇騰AI處理器通過(guò)運(yùn)行管理器為應(yīng)用程序提供了存儲(chǔ)(Memory)管理、設(shè)備(Device)管理、執(zhí)行流(Stream)管理、事件(Event)管理、核函數(shù)(Kernel)執(zhí)行等功能。
運(yùn)行管理器在軟件棧中上下文關(guān)系如上圖所示,在運(yùn)行管理器上層為T(mén)BE提供的TBE標(biāo)準(zhǔn)算子庫(kù)和離線模型執(zhí)行器。TBE標(biāo)準(zhǔn)算子庫(kù)為昇騰AI處理器提供神經(jīng)網(wǎng)絡(luò)需要使用到的算子,離線模型執(zhí)行器專門(mén)用來(lái)進(jìn)行離線模型的加載和執(zhí)行。運(yùn)行管理器下層是驅(qū)動(dòng),與昇騰AI處理器進(jìn)行底層交互。
運(yùn)行管理器對(duì)外提供各種調(diào)用接口,如存儲(chǔ)接口、設(shè)備接口、執(zhí)行流接口、事件接口以及執(zhí)行控制接口,不同的接口由運(yùn)行管理引擎控制完成不同的功能。
運(yùn)行管理器功能介紹:
1、設(shè)備接口提供底層設(shè)備的數(shù)量和屬性查詢,以及選中、復(fù)位等操作。在離線模型調(diào)用了設(shè)備接口后選中某特性設(shè)備后,則模型中所有的任務(wù)都將會(huì)在這個(gè)被選中的設(shè)備上執(zhí)行。若執(zhí)行過(guò)程中需要向其他設(shè)備派發(fā)任務(wù),則需要再調(diào)用一次設(shè)備接口進(jìn)行設(shè)備選中。
2、執(zhí)行流接口提供執(zhí)行流的創(chuàng)建、釋放、優(yōu)先級(jí)定義、回調(diào)函數(shù)設(shè)置、對(duì)事件的依賴定義和同步等,這些功能關(guān)系到執(zhí)行流內(nèi)部的任務(wù)執(zhí)行,同時(shí)單個(gè)執(zhí)行流內(nèi)部的任務(wù)必須按順序執(zhí)行。
如果多個(gè)執(zhí)行流之間需要進(jìn)行同步,則需要調(diào)用事件接口,進(jìn)行同步事件的創(chuàng)建、釋放、記錄和依賴定義等,確保多個(gè)執(zhí)行流得以同步執(zhí)行完成并輸出模型最終結(jié)果。事件接口除了用于分配任務(wù)或執(zhí)行流之間的依賴關(guān)系,還可以用于程序運(yùn)行中的時(shí)間標(biāo)記,記錄執(zhí)行時(shí)序。
3、執(zhí)行時(shí),還會(huì)用到執(zhí)行控制接口,運(yùn)行管理引擎通過(guò)執(zhí)行控制接口和Mailbox完成核函數(shù)的加載和存儲(chǔ)異步拷貝等任務(wù)的派發(fā)。