華為云計算 云知識 昇騰AI軟件棧任務(wù)調(diào)度器功能介紹
昇騰AI軟件棧任務(wù)調(diào)度器功能介紹

任務(wù)調(diào)度器與運行管理器工程組成軟硬件之間的大壩系統(tǒng)。在執(zhí)行時,任務(wù)調(diào)度器對硬件進行任務(wù)的驅(qū)動,為昇騰AI處理器提供具體的目標(biāo)任務(wù),與運行管理器一起完成任務(wù)調(diào)度流程,并將輸出數(shù)據(jù)回送給運行管理器,充當(dāng)了一個任務(wù)輸送分發(fā)和數(shù)據(jù)回傳的通道。

任務(wù)調(diào)度器功能簡介

任務(wù)調(diào)度器運行在設(shè)備側(cè)的任務(wù)調(diào)度CPU上,負(fù)責(zé)將運行管理器分發(fā)的具體任務(wù)進一步派發(fā)到AI CPU上。它也可以通過硬件任務(wù)塊調(diào)度器(Block Scheduler,BS)把任務(wù)分配到到AI CORE上執(zhí)行,并在執(zhí)行完成后返回任務(wù)執(zhí)行的結(jié)果給運行管理器。通常任務(wù)調(diào)度器處理的主要事務(wù)有:AI Core任務(wù)、AI CPU任務(wù)、內(nèi)存拷貝任務(wù)、事件記錄任務(wù)、事件等待任務(wù)、清理維護(Maintenance)任務(wù)以及性能分析(Profiling)任務(wù)。

內(nèi)存拷貝主要以異步方式進行。事件記錄任務(wù)主要記錄事件的發(fā)生信息,如果存在等待該事件的任務(wù),則這些任務(wù)在事件記錄完成后可以解除等待,繼續(xù)執(zhí)行,消除由事件記錄而導(dǎo)致執(zhí)行流的阻塞。事件等待任務(wù)指如果等待的事件已經(jīng)發(fā)生,則等待任務(wù)直接完成;當(dāng)?shù)却氖录形窗l(fā)生時,將等待任務(wù)填入待處理列表中,同時暫停事件等待任務(wù)所在執(zhí)行流中后續(xù)所有任務(wù)的處理,在等待的事件發(fā)生時,再進行事件等待任務(wù)的處理。

在任務(wù)執(zhí)行完成后,由清理維護任務(wù)根據(jù)任務(wù)參數(shù)不同進行相應(yīng)的清理工作,回收計算資源。在執(zhí)行過程還有可能要對計算的性能進行記錄和分析,這時需要用到性能分析任務(wù),來控制性能分析操作的啟動和暫停。

任務(wù)調(diào)度器功能框架圖

任務(wù)調(diào)度器的功能框架如上圖所示,任務(wù)調(diào)度器通常位于設(shè)備端,功能有任務(wù)調(diào)度CPU來完成。任務(wù)調(diào)度CPU由調(diào)度接口(Interface)、調(diào)度引擎(Engine)、調(diào)度邏輯處理模塊、AI CPU調(diào)度器、任務(wù)塊調(diào)度器、系統(tǒng)控制(SysCtrl)模塊、性能分析(Profile)和日志(Log)模塊組成。

任務(wù)調(diào)度CPU通過調(diào)度接口實現(xiàn)與運行管理器和驅(qū)動之間的通信和交互。將任務(wù)通過結(jié)果傳送給任務(wù)調(diào)度引擎,任務(wù)調(diào)度引擎作為任務(wù)調(diào)度實現(xiàn)的主體,負(fù)責(zé)實現(xiàn)任務(wù)組織、任務(wù)依賴及任務(wù)調(diào)度控制等流程,管理著整個任務(wù)調(diào)度CPU的執(zhí)行過程。任務(wù)調(diào)度引擎根據(jù)任務(wù)的具體類型,將任務(wù)分為計算、存儲和控制三種類型,分發(fā)給不同調(diào)度邏輯處理模塊,啟動具體核函數(shù)任務(wù)、存儲任務(wù)以及執(zhí)行流間事件依賴等邏輯的管理與調(diào)度。

邏輯處理模塊分為核函數(shù)執(zhí)行模塊(Kernel Execute)、直接存儲訪問執(zhí)行模塊(DMA Execute)和事件執(zhí)行模塊(Event Execute)。核函數(shù)執(zhí)行模塊進行計算任務(wù)的調(diào)度處理,實現(xiàn)AI CPU,AI Core上任務(wù)的調(diào)度邏輯,對具體的核函數(shù)進行調(diào)度處理。而直接存儲訪問執(zhí)行模塊實現(xiàn)存儲任務(wù)的調(diào)度邏輯,對內(nèi)存拷貝等進行調(diào)度處理。事件執(zhí)行模塊負(fù)責(zé)實現(xiàn)同步控制任務(wù)的調(diào)度邏輯,實現(xiàn)執(zhí)行流間事件依賴的邏輯處理。在完成不同類型任務(wù)的調(diào)度邏輯處理后,開始直接交由相應(yīng)的控制單元進行硬件執(zhí)行。

針對AI CPU的任務(wù)執(zhí)行,由任務(wù)調(diào)度CPU中的AI CPU調(diào)度器用軟件的方式對AI CPU進行狀態(tài)管理及任務(wù)調(diào)度。而對于AI Core的任務(wù)執(zhí)行,則由任務(wù)調(diào)度CPU將處理后的任務(wù)通過一個單獨的任務(wù)塊調(diào)度器硬件分發(fā)到AI Core上,由AI Core進行具體計算,計算完成的結(jié)果也是由任務(wù)塊調(diào)度器返回給任務(wù)調(diào)度CPU。

任務(wù)調(diào)度CPU在完成任務(wù)調(diào)度的過程中,由系統(tǒng)控制對系統(tǒng)進行配置和芯片功能的初始化,同時由性能分析和日志模塊監(jiān)測整個執(zhí)行流程,記錄關(guān)鍵執(zhí)行參數(shù)以及具體執(zhí)行細(xì)節(jié),在整個執(zhí)行結(jié)束或者報錯時,可以進行具體的性能分析或者錯誤定位,為執(zhí)行過程的正確性和高效性進行詳細(xì)的評估分析提供依據(jù)。