999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Puzzle:面向深度學習集成芯片的可擴展框架

2023-06-07 03:40:40王夢迪常開顏高成思韓銀和李華偉
計算機研究與發展 2023年6期
關鍵詞:深度資源

王夢迪 王 穎 劉 成 常開顏 高成思 韓銀和 李華偉 張 磊,4

1 (中國科學院計算技術研究所 北京 100190)

2 (中國科學院大學 北京 100190)

3 (處理器芯片全國重點實驗室(中國科學院計算技術研究所)北京 100190)

4 (移動計算與新型終端北京市重點實驗室(中國科學院計算技術研究所)北京 100190)

近年來,深度學習技術已廣泛應用于許多領域,如圖像分類[1-2]、目標檢測[3-4]和自然語言處理[5-7]等.深度學習芯片作為深度學習算法的專用加速硬件,已被廣泛應用在從數據中心規模的計算系統[8]到輕量級的邊緣或物聯網設備[9]中.華為[10]、寒武紀[11]、英偉達[12]、谷歌[13]、特斯拉[14]等公司發布了數百款深度學習芯片,適用于不同的應用場景,但受限于各自使用場景的硬件條件限制(如功耗、面積),因此這些深度學習芯片使用不同的神經網絡處理器(neural processing unit,NPU)架構,具有不同規模的算力.例如,Cerebras CS-2[15]深度學習芯片擁有約850 000 個神經網絡處理器核,其峰值功率達到23 kW.相比之下,谷歌提出的張量處理單元(tensor processing unit,TPU)v3[13]只有8 個神經網絡處理器核,其峰值功率約為200 W.這2 種應用于不同場景的深度學習芯片約有20 倍的計算能力差異和約100 倍的功耗差異,這種差異表明,深度學習芯片需要針對特定的應用場景進行定制.然而,開發深度學習芯片非常耗時且開發成本高昂,從設計到上市通常需要數年時間[16].

芯粒集成技術正逐漸成為一種強可擴展性的芯片敏捷定制方案,芯片設計人員可以直接在硅或有機中介層上集成同構或異構的芯粒[17],甚至可以集成不同制造工藝下的芯粒[18].芯片設計人員可以直接根據應用場景需求將多個設計、驗證完成的處理器芯粒、存儲芯粒、輸入輸出(input/output,I/O)芯粒等組合在一起,實現芯片敏捷定制,這種基于芯粒集成的芯片設計被稱為“集成芯片”.集成芯片設計模式可以靈活地根據需求定制芯片,且成本效益高、開發周期短,但是也存在一些亟待解決的問題.例如,如何管理這些集成到一起的芯粒資源和如何將工作負載分配到具有不同屬性的芯粒.對于深度學習集成芯片,任務和資源分配對芯片性能尤為重要,因為它們決定了芯粒之間的計算和通信延遲,特別是基板(interposer)上的通信具有更高的延遲和能耗[19].第三方芯粒所提供的工具鏈或編譯器無法預測集成芯片的資源,因此無法處理整個集成芯片中其他芯粒的屬性和信息,而為每個集成芯片設計完整的工具鏈需要大量的時間成本和對第三方芯粒的架構知識,失去了芯片敏捷開發的優勢.

針對這些問題,本文研究一種面向深度學習集成芯片的編譯和資源管理框架.該框架為敏捷定制的多樣化的深度學習集成芯片提供了從輸入工作負載到集成的第三方芯粒接口的自動化工作流程,生成高效的任務調度和資源分配方案,并提供運行時資源管理,處理芯粒之間的協作和任務之間的依賴關系.

本文的主要貢獻包括3 個方面:

1)提出了一種面向深度學習集成芯片的可擴展框架(scalable framework for integrated deep learning chips)——Puzzle,該框架為深度學習集成芯片提供了自適應的全棧解決方案,向上對接輸入工作負載,向下對接芯片資源運行時管理,降低了芯粒集成方式下的深度學習芯片敏捷定制的開發成本.

2)提出了一種兩級資源圖的表示,用于描述集成芯片中的芯粒資源及其關系.異構的神經網絡處理器和芯粒由具有不同屬性的結點表示,本文定義了一組具有不同屬性的邊來描述它們之間的關系.該兩級資源圖表示用于后續的資源分配和任務調度,使Puzzle 框架可以自適應于深度學習芯片敏捷定制的多樣性.

3)提出一種自適應的任務調度和資源分配策略.通過啟發式搜索生成資源分配方案,并通過“內存借用”方式降低芯粒間開銷和內存訪問開銷.

1 研究背景和相關工作

1.1 基于芯粒集成方式的芯片設計

基于芯粒集成的芯片設計模式將單片大芯片拆分成多個小芯粒,再使用硅或有機基板對小芯粒進行組裝.許多工業公司和研究單位提出了使用芯粒集成的芯片設計,包括中央處理器 (central processing unit,CPU)[20-22]、圖形處理器(graphics processing unit,GPU)[23-24]和加速器[25-26].

一方面,集成芯片設計模式提高了芯片的可擴展性,避免了隨著芯片規模擴大出現的良率快速降低問題,且解決了異構集成的問題,降低了芯片設計成本Pal 等人[27]使用芯粒集成技術構建了發布時最大的芯片,并保證芯片的高良率;英特爾公司的下一代GPU Ponte Vecchi[23]芯片中集成了分別由5 種制程生產的47 個不同功能的芯粒,通過異構集成降低了芯片的生產成本.另一方面,將大芯片的不同功能模塊拆分為芯粒,提高了這些功能模塊的可重用性.例如,AMD 公司的Rome 和Matisse 芯片[28]分別面向服務器和端側市場,它們使用完全相同但是數量不同的計算和I/O 芯粒,并用不同的方式進行芯粒間互連,在2 種使用場景下都獲得了很好的性能.在不同的芯片設計中,重復使用設計、驗證完成的芯粒模塊可以降低芯片設計成本,成為了芯片敏捷定制的重要方式之一.因此,許多公司和組織正在積極推進芯粒接口的標準化,例如英特爾、AMD、ARM 等公司提出的通用小芯片互連通道(universal chiplet interconnect express,UCIe)[29]協議,以及Facebook 發起的開放計算項目(open compute project,OCP)提出的ODSA(open domain-specific architecture)協議[30]等.

隨著芯粒間互連從協議層到物理層逐漸統一,根據應用場景的算力需求和硬件資源約束來選擇和集成第三方芯粒正在成為一種趨勢.然而,這種快速定制和組裝的芯片仍然需要為其開發系統軟件/工具鏈來處理輸入的工作負載和硬件資源之間的關系.雖然芯粒供應方通常會提供專用的工具鏈(如編譯器),但是這種專用工具鏈只能用于該芯粒自身,無法預知整個集成芯片中的其他資源.在各種不同的集成場景下,如何向各個芯粒分配任務并管理它們之間的合作仍然是亟待解決的問題.

1.2 多核多任務深度學習芯片任務部署

在現有的多核深度學習芯片中,已經有一些使用芯粒集成技術的芯片設計生產出高可擴展性的大算力芯片.Centaur[25]是一個混合使用稀疏-稠密模式的面向推薦系統的深度學習加速器芯片,它使用異構集成來優化推薦模型中Embedding 層和多層感知機(multi-layer perceptron,MLP)層的計算模式差異.Tan.等人[31]提出了集成芯片軟硬件設計協同搜索框架NN-Baton,即在指定的硬件約束和工作負載模型下,自動地生成芯片粒度設計方案和任務負載映射策略.然而,它們的資源管理策略都只能在其配套的硬件設計和任務負載上使用,不能處理集成芯片敏捷定制的多樣化場景,也無法處理多任務和可變工作負載.Shao 等人[26]提出了Simba 深度學習推理芯片,它由36 個神經網絡加速器芯粒組成,并使用了一種跨層的流水線方法,且在子任務分配時考慮通信延遲導致的不均勻性.然而,該芯片的任務調度器只能處理單任務工作負載,且其中的跨層流水線方法在處理少量的批數據時會導致芯片低利用率問題,這限制了其調度器的使用場景,無法滿足芯片敏捷定制的需求.

另外,近年來也有一些相關工作[32-34]提出了片上多核深度學習處理器的任務調度和資源分配方案.特別地,還有一些研究方案[35-40]可以解決多任務或多租戶場景下的任務調度和資源分配問題.然而,這些相關工作中提出的方法只能在硬件資源滿足某些特定條件時生成高效的任務調度和資源分配方案,例如具有足夠大的片上緩存區、特定的神經網絡加速器架構或多核使用同構設計.另外,這些相關工作通常使用簡單的通信模型,無法處理深度學習集成芯片中的復雜通信場景,因此無法為敏捷定制的深度學習芯片提供任務調度和資源分配的解決方案.集成芯片設計方法的優勢在于可以利用芯粒級重用,通過集成已經設計、驗證完成的芯粒實現芯片敏捷定制,因此,任務調度和資源分配策略不應該成為硬件設計的“約束”,例如限制芯粒中加速器的架構、連接方式或存儲結構設計,而是應該自動適應于硬件配置.但現有的框架在靈活性上不足以滿足集成芯片的敏捷定制需求.

在這些面向多任務場景下任務調度和資源分配的相關工作[35-40]中,將多任務工作負載映射到多核深度學習芯片的策略可以分為2 類:時分復用[35,37,40]和空分復用[36,38-39].

在時分復用策略下,每次任務分配時只選擇一個計算任務,且使用全部計算資源完成該計算,多個任務分時地占用計算資源.時分復用策略非常適合于同構多核深度學習芯片[26,34]和分型多核深度學習芯片[41].以卷積層為例,可以通過卷積計算中的多個維度來進行計算劃分,例如批(batch)維度、特征值張量F中的維度和權重張量W中的維度等.時分復用策略為每個任務提供了大量的計算資源,并可以以較低延遲完成計算任務,且資源管理較為簡便.由于在時分復用策略下,同一時刻只有一個計算任務占據全部硬件資源,即資源分配方式固定.因此,時分復用的相關工作的優化空間集中在任務調度中.PREMA[35]是代表性的多任務深度學習處理器時分復用調度方案,它允許高優先級的任務優先使用計算資源,從待執行任務隊列中根據任務優先級、任務已等待時間等屬性選擇當前需要調度到硬件上開始執行的任務,并設計了多種任務切換策略.AI-MT[37]將計算任務切分為更細粒度的子任務作為調度單位,使計算單元盡早開始計算.Layerweaver[40]輪流地調度計算密集型和訪存密集型的神經網絡層,利用其差異性降低計算單元空轉等待的時間.

然而,隨著多核芯片規模的增大,時分復用策略也展現了一些缺點:1)將一個層拆分到過多的計算資源會由于張量尺寸過小導致NPU 的資源利用率降低;2)NPU 之間的并行化通常伴隨著特征值/權重的復制或部分和(partial sum)的規約,因此較多的NPU協作完成同一個計算任務會導致NPU 之間產生較高的數據通信開銷和同步開銷,在深度學習集成芯片中,不同芯粒的NPU 的通信還需要經過高開銷的芯粒間互連網絡(network on interposer,NoI),因此加劇了這一問題;3)相同任務在不同架構的NPU 上執行的性能差異可能超過50%[36],因此,在時分復用策略下每個NPU 執行完全相同的任務時,無法充分利用NPU 異構優勢.

空分復用策略同時部署多個獨立的任務,并為每個任務分配一部分資源.即同一時刻,多個任務同時在硬件上執行.Liu 等人[38]發現以任務為單位分配資源會導致部分對資源需求量大的層無法獲得充足的計算資源;而以層為單位分配資源會過于激進地請求資源,影響并發執行的其他任務,因此提出VELTAIR使用塊粒度任務進行資源分配.Planaria[39]是一種高自由度的空分復用深度學習芯片,它利用特殊設計的全向可分解的脈動陣列結構實現計算資源可“分”可“合”,動態地將資源分配給不同的計算任務.然而,這些相關工作[38-39]只面向同構硬件資源.Kwon 等人[36]提出使用一組異構數據流加速器來適應不同神經網絡工作負載,并提出面向異構計算的空分復用策略Herald,使用貪心策略為每個任務選擇其計算利用率最高的數據流對應的加速器執行.

空分復用策略提高了資源利用率,但它依賴于硬件設計與工作負載的高度匹配.當出現資源和需求不匹配問題時會降低處理器性能.具體而言,當NPU 中的片上緩存無法容納特征值和權重時,至少會重復請求其中之一,導致高通信開銷和訪存開銷.另外,空分復用策略中,每個任務固定地分配部分計算資源,當同時執行的任務規模不同時,后結束的任務成為延遲瓶頸,而先結束的任務釋放的資源未被充分利用,即存在大量資源空轉時間問題.

綜合以上分析,目前現有的相關工作主要存在2方面局限性:1)任務調度和資源分配策略受限于特定的硬件處理器設計或特定工作負載,無法滿足集成芯片設計模式下重用現有芯粒靈活組合定制芯片的需求.2)主流的基于時分復用的策略和基于空分復用的策略分別有其優勢與不足,適用范圍較為有限,均無法完全擴展到集成芯片的多樣化調度場景.因此,本文提出面向深度學習集成芯片的可擴展框架Puzzle,為深度學習集成芯片敏捷定制提供包括任務調度、資源分配、資源管理和同步在內的全流程管理,其中的資源分配和任務調度方案綜合了時分復用和空分復用的優勢,自適應于不同的集成芯片配置和可變的工作負載.

2 深度學習集成芯片可擴展框架

2.1 Puzzle 工作流程

本節主要介紹面向深度學習集成芯片的可擴展框架的工作流程,該流程描述框架中的每個功能模塊,并展示如何使用這些功能模塊實現編譯和資源管理過程.將工作負載部署到指定的多芯粒深度學習芯片需要4 個步驟:1)收集工作負載信息和該集成芯片的硬件資源信息,并分析其屬性;2)生成任務調度和資源分配方案,在Puzzle 框架中,我們將神經網絡層作為資源分配的最小粒度,然后將該層劃分為多個子任務,并將每個子任務映射到指定的NPU;3)對于每個子任務,需要生成在每個NPU 核心上執行的硬件指令;4)屬于同一神經網絡層的子任務間需要同步,而屬于不同層的子任務可能包含數據依賴,因此,需要在運行時管理子任務和NPU 的狀態.此外,工作負載、硬件資源和分配的子任務都需要使用統一的中間表示來進行抽象,以適應各種不同的芯粒集成的可能性.

在面向深度學習集成芯片的可擴展框架Puzzle中,共有5 個關鍵功能模塊,它們分別是工作負載解析模塊、硬件資源信息收集模塊、任務分發模塊、代碼生成模塊和運行時管理模塊.圖1 展示了5 個功能模塊之間的關系和它們之間需要傳遞的信息.工作負載解析模塊接收用戶指定的工作負載,并分析其中每個任務的屬性和層間依賴,然后將計算圖傳遞給任務分發模塊.硬件資源信息收集模塊負責收集芯片中所集成的芯粒的信息、NPU 核信息以及處理器核間和芯粒間的通信信息,然后使用兩級的資源圖描述硬件資源,并傳遞給任務分發模塊.任務分發模塊分析計算圖和資源圖,并將計算任務映射到硬件資源上,生成子任務列表.每個子任務將被發送到代碼生成模塊,并通過調用第三方芯粒所提供的工具鏈接口進行硬件代碼生成.子任務之間的相關關系將被傳遞給運行時管理模塊,由芯片中的主控CPU芯粒完成子任務之間的同步關系和依賴關系管理.

Fig.1 Puzzle framework圖1 Puzzle 框架

2.2 工作負載解析模塊

工作負載解析模塊將輸入的工作負載分解為多個神經網絡層,神經網絡層是后續進行資源分配的最小單位.工作負載解析模塊將對每個神經網絡層的層間相關性、層屬性和層性能進行分析.

輸入工作負載可能包含多個任務,例如在云計算場景下,多個用戶可能獨立地向服務器發起請求.同一計算任務中的部分層之間存在依賴關系,而不同計算任務中的層是獨立的.層間相關性通過分析建立子任務之間的依賴關系圖,確定子任務之間的調度順序.對于層屬性分析,我們選擇了對NPU 上執行該層的計算模式有較大影響的屬性組C={op,Fin,Fout,W,Rdensity}.其中,層操作op記錄層的算子類型,并記錄該層是否存在一些特殊計算模式(例如深度可分離卷積);Fin,Fout和W 分別表示輸入特征值、輸出特征值、權重所占的存儲空間大小;Rdensity表示計算密度與訪存的比例.在任務分發器模塊中,屬性組C將被用于確定如何為該層分配硬件資源.

此外,工作負載解析模塊也需要評估層在不同NPU 上的性能.不同的NPU 設計導致其在執行不同屬性的神經網絡層時體現出性能差異,雖然NPU 的理想性能由其計算能力決定,但其受片上緩存區大小、數據流設計等限制,實際可達到的性能隨著其執行不同的神經網絡層而發生變化.集成芯片設計模式下,芯片設計者可以選擇集成異構屬性的芯粒,從而在芯片執行不同計算任務時提升其性能.因此,在任務調度和資源分配時,需要為每個計算子任務分配“最適合”的計算資源,即選擇實際利用率最高的NPU.在重用第三方芯粒的敏捷定制設計模式下,芯片設計者并不必須了解第三方芯粒中NPU 的具體架構細節,因此難以通過分析直接獲取任務在NPU 上的利用率.因此,工作負載解析模塊需要通過性能測試得到神經網絡層部署在不同NPU 時的延遲l,并利用式(1)計算出利用率UR.

其中,CCpractical為NPU 實際達到的算力,通過神經網絡層中的計算量ops(即操作數,operations)和延遲l相除得到;CCpeak為NPU 的峰值算力,單位為ops/s.UR表征了任務在該NPU 上的計算效率,在任務分發器模塊中,UR將被用于為子任務選擇計算效率高的NPU 核.

最終,工作負載解析模塊生成計算圖Gcompute,計算圖中的每個結點表示一個神經網絡層和存儲層的特征、性能信息;計算圖中的邊用于表示層間依賴.

2.3 硬件資源信息收集模塊

在深度學習集成芯片設計模式下,芯片設計體現出高度靈活的特點,芯片可以由多個異構芯粒組成.因此,硬件資源信息收集模塊需要提取芯粒集成的信息,并使用統一的表示方法,便于任務分發模塊進行后續的資源分配和管理.

硬件資源信息收集分為處理器核屬性、芯粒屬性和核間關系3 部分.神經網絡處理器核通常由運算單元和幾十千字節(kilobyte,KB)至幾兆字節(Mbyte,MB)的片上緩存構成.運算單元通常直接從片上緩存中進行數據存取,因為片上緩存有較穩定的延遲,而片上緩存中的數據通常使用直接內存訪問(direct memory access,DMA)模式從內存中獲取,通過芯粒間和片上的數據通信通路傳輸.在收集處理器核屬性時,除了收集其支持的操作類型、算力、片上緩存大小信息,還需收集處理器核需要的輸入數據排布方式(data layout),因為處理器核間傳輸數據時,核間數據排布方式的不同會產生額外的數據轉換開銷.

對于每個第三方芯粒,需要收集其片上的NPU處理器核數以及NPU 核之間的關系,包括片上網絡的通信開銷、核間是否存在共享的片上緩存等.另外,由于芯粒間通信決定了芯粒間、芯粒與內存控制器(memory controller,MC)間的數據傳輸速度,并對通信延遲產生關鍵影響,因此工作負載解析模塊還需要收集芯粒間鏈路帶寬和網絡拓撲.鏈路帶寬決定了物理層的傳輸延遲;而網絡拓撲決定了芯粒間數據傳輸數據包的跳數,以此衡量路由轉發的延遲和虛通道占用、排隊延遲等.

在Puzzle 中,本文提出一種兩級的資源圖來表示集成芯片中的硬件資源.如圖2 所示,每一個Level-1資源圖對應一個芯粒,Level-1 資源圖中的每個結點表示一個NPU 核,并記錄NPU 處理器核屬性;Level-2資源圖中的每一個結點表示一個芯粒,即一個Level-1資源圖,其中的邊用于記錄多個芯粒之間的關系.

Fig.2 Resource graph圖2 資源圖

Level-1 資源圖中的每一條邊用于記錄同一芯粒上一對NPU 間的關系.邊包含3 方面屬性:1)NPU 間通信開銷;2)NPU 間是否共享片上緩存;3)由芯粒設計者定義的NPU 間的并行模式.在后續任務調度和資源分配流程中,Puzzle 為每個任務分配資源組時,通過屬性1)選擇使組內通信開銷最小化的NPU,且分配時使資源組中的NPU 片上緩存總容量滿足任務的存儲需求.當多個NPU 共享一個片上緩存區時(屬性2),在資源分配時會將這些NPU 當成一個整體統一進行資源分配,以便不影響利用第三方芯粒內的數據放置策略;當任務的資源分配結束后,Puzzle 將任務并行切分(并行化)成多個子任務,并分配到資源組中的每個NPU.若屬性3)中記錄了芯粒設計者定義的NPU 間并行模式,則在任務并行化時將這一組NPU 共同作為Puzzle 并行化的一個基本單元,Puzzle 為該基本單元分配任務后,該單元內部的并行化遵循芯粒設計者定義的并行模式.

Level-2 資源圖中的每一條邊用于記錄一對芯粒間的關系.它包含2 方面屬性:1)芯粒間通過片間網絡的通信開銷;2)芯粒間使用相同/不同數據排列方式.這2 個屬性用于共同確定總數據傳輸開銷.該開銷等于片間網絡的通信開銷與數據排列方式不同時所需格式轉換開銷的總和(格式轉換開銷在系統中為一個可配置的參數).屬性2)只在Level-2 資源圖的邊屬性中存在,因為同一芯粒上的多個計算核采用相同的數據排列方式,而不同芯粒可能來源于不同的芯片生產商,因此需要考慮數據排列方式不同產生的額外開銷.

在這種資源圖表示形式下,任意2 個NPU 之間的關系可以表示為兩級資源圖上2 個NPU 之間邊所表示關系的總和.與使用一級資源圖表示相比,兩級資源圖表示可以將存儲空間由O(m2n2)降低至O(mn2+m2),其中m為芯片中的芯粒數,n為平均每個芯粒中NPU 的數量.使用兩級的資源圖來表示深度學習集成芯片的硬件資源有3 方面好處:1)記錄NPU 處理器核的資源屬性信息;2)NPU 核之間的關系由邊表示,特別地,可以處理一些由芯粒設計者定義的規則(如Level-1 資源圖中的屬性2)和3)),提高了對多樣化集成的芯粒資源的適應性;3)兩級圖降低了圖的大小,特別是對于大規模深度學習集成芯片,降低了資源圖存儲和任務分發的復雜程度.

2.4 任務分發模塊

任務分發模塊用于生成將輸入工作負載映射到硬件資源的方案,由該模塊決定在某一時刻使某個神經網絡層開始執行,并為該層分配硬件資源,將層分解為子任務,并將子任務映射到資源組中的每個NPU 核.Puzzle 提出了一種高效且自適應的任務調度和資源分配方案,詳見3.2 節.

任務分發模塊的輸出是經過分解的子任務,子任務將具體信息傳遞給代碼生成模塊,子任務之間的同步和依賴關系傳遞給運行時管理模塊.

2.5 代碼生成模塊

芯片/芯粒的編譯器通常作為完整解決方案的一部分.一方面,編譯器為芯片/芯粒的用戶提供了一套完整易用的接口;另一方面,編譯器由芯片設計者提供,其中通常包含一些細粒度的編譯優化,從而最大限度地利用硬件架構設計[42].因此,Puzzle 框架應充分利用第三方芯粒的編譯器接口,換言之,Puzzle 框架在將子任務分配到NPU 核后,通過第三方芯粒提供的編譯器接口,調用其第三方編譯器進行代碼生成.Puzzle 為子任務定義了統一的中間表示,并將中間表示轉換為每個第三方接口所需的形式.

在Puzzle 中,子任務的中間表示如圖3 所示,該中間表示包含可唯一定義子任務的所有信息.子任務描述記錄了子任務的類型和規格,輸入數據源地址在列表中包含多種數據類型,如輸入特征、權重、偏置等,每種類型的數據也使用列表表示.由于輸入數據可能來自于不同的NPU 或主存,因此需要提供多輸入數據源選項.輸出數據目的地址定義了結果輸出的地址,輸出地址在與其存在依賴關系的下一個子任務分配后才能確定.如果第三方芯粒的編譯器無法接收多個數據源和目標,則Puzzle 的代碼生成模塊會生成數據整合的通信條目,將分離的數據重排至連續的地址空間.與其他工作中提出的低層次中間表示[43]相比,由于芯粒編譯器已經提供了NPU 內部的專用優化,因此Puzzle 框架不再關注子任務在NPU 內的執行方式.但Puzzle 提供了一組易用的接口,允許數據接收或發送到多個源/目的地,當第三方編譯器無法接受多個數據源和目的地時,代碼生成模塊也提供了數據整合方案.

Fig.3 Subtask description圖3 子任務描述

2.6 運行時管理模塊

運行時管理模塊用于控制子任務之間的同步和依賴關系.在同一個神經網絡層所切分出的子任務之間存在同步關系,在Puzzle 中,具有同步關系的子任務通過同步信號被設置為BUSY 或被釋放到IDLE 狀態,因為存在同步關系的NPU 間可能存在數據共享.依賴關系發生在屬于不同神經網絡層的子任務之間,有2 種可能性:1)層間依賴.發生在神經網絡中的2 個相鄰層間.2)片上緩存區占用.當待執行的子任務開始請求新的輸入數據時,必須確保其片上緩存中的現有數據已被使用完畢,以免發生數據覆蓋,因此產生子任務間依賴關系.

在Puzzle 框架中,我們對每個子任務及其數據移動操作編號,對于每個編號項,為其保存一個完整的依賴列表.只有當依賴列表中的所有操作都完成時,新的子任務操作才會開始.運行時管理模塊通過分析依賴列表和控制每個NPU 的狀態來控制同步和依賴關系,并將NPU 狀態反饋給任務分發模塊.

3 Puzzle 框架任務分發方法

本節主要描述任務分發模塊的詳細設計,即框架中的任務分發方法.Puzzle 中的任務分發模塊通過避免冗余的內存訪問和片間通信來生成高效的任務分發方案,并可以自適應于不同的硬件配置和工作負載.

3.1 影響深度學習集成芯片性能的因素

本節首先介紹深度學習集成芯片的2 方面特點,并分析它們如何影響芯片性能.

1)芯粒集成是一種靈活的芯片設計模式,它可以集成多樣化的芯粒組件,包括同構的芯粒和異構的芯粒.因此,芯粒集成的深度學習芯片上的資源和通信是不規則的.傳統的資源分配方法通常受限于硬件資源配置,例如只能支持同構核或簡單的、模式固定的異構核,以固定的方式進行多核互連.然而,由于芯粒集成方式足夠靈活,芯片設計者可以根據需求選取多種設計、驗證完成的芯粒進行集成,因此無法使用傳統的單一資源分配方式.

2)與傳統的單片芯片相比,深度學習集成芯片具有更多的存儲訪問層級.按照訪存開銷從低到高排序,NPU 可以從4 種存儲空間獲取數據:①NPU 通過線(wire)直連方式訪問該NPU 核內的片上緩存,訪問速度快,且延遲固定;②NPU 通過片上互連網絡(network on chip, NoC)從同一芯粒的其它NPU 的片上緩存區獲取數據,如圖4 中右側所示;③NPU 通過基板上的芯粒間互連網絡(NoI)從其他芯粒的片上緩存獲取數據,如圖4 中左側所示;④NPU 通過芯粒間互連網絡NoI 訪問內存控制器,獲取內存中的數據,隨著NPU 與內存控制器之間的距離增加,這類訪存行為帶來最高的通信開銷.內存訪問和芯粒間通信是影響芯片性能的2 個關鍵因素,因此在在資源分配時需盡量降低高訪問開銷的內存訪問行為,并盡量將NPU 間的數據交換限制在低存儲層級.

Fig.4 Multi-level memory access architecture圖4 多級訪存結構

3.2 任務調度和資源分配方法

在第1.2 節中分析了相關工作的局限性,主流的時分復用、空分復用調度策略受限于硬件處理器設計或工作負載,均無法廣泛適用于靈活的芯粒異構集成場景.然而,時分復用和空分復用調度方案的優勢和缺陷存在互補特性,因此這2 種調度方案可作為自適應任務分發策略的基礎.在時分復用策略下,每個任務獲得充足的片上緩存資源,不需要頻繁訪問內存;但任務的全局化分布導致了高芯粒間通信開銷.空分復用下,芯粒間通信只發生在少量芯粒間,因此芯粒間通信開銷低;然而硬件資源無法滿足任務需求時會造成冗余內存訪問.另外,空分復用在不均勻的負載下會面臨高資源空轉時間問題,如圖5 (a)所示.雖然現有的空分復用方法可以為長任務分配更多資源以緩解這一問題,如圖5 (a)中任務1 占用了NPU 0 和和NPU 1;但在靜態分配下,相對短的任務完成后釋放的資源仍會被浪費,如圖5 (a)中NPU 2 和NPU 3.芯粒集成的異構性加劇了這一問題,在異構資源下通過調整資源分配比例來平衡任務時間差異更加困難.而時分復用下不存在資源空轉問題,如圖5 (b)所示.基于以上分析,時分復用和空分復用方法在內存訪問、芯粒間通信、資源空轉時間等方面存在互補關系,有其各自的優缺點和適用范圍.

Fig.5 Illustration of resource idle time圖5 資源空轉時間示意圖

在深度學習集成芯片敏捷定制模式下,任務分發方法需要能自適應于多樣化的硬件配置和工作負載,但現有的時分復用和空分復用方法都只適用于部分應用場景.因此,需要綜合二者的優勢進行互補.本文為深度學習集成芯片提出了一種基于啟發式搜索的動態任務調度和資源分配方法,該方法靈活地綜合了時分復用和空分復用的優勢(圖5 (c)反映了Puzzle 對2 種現有方法的綜合),能夠自適應不同的硬件資源和工作負載.如算法1 所示.

Puzzle 任務分發算法的輸入是資源圖和計算圖,輸出是子任務描述(傳遞到代碼生成模塊)及子任務間的同步和依賴關系(傳遞到運行時管理模塊).如算法1 中行②所示,當芯片上有空閑NPU 資源且有待執行任務時,開始執行一次任務調度和資源分配.首先,從硬件資源圖中隨機選取一個當前狀態為IDLE的NPU 結點;然后使用貪心策略選擇在NPUInit上利用率最高的任務tp(行③),利用其NPU 的異構性;接下來,Puzzle 使用帶優先級規則的資源搜索策略,根據tp的資源需求,以NPUInit為起點擴展一個資源組Groupq,直到一組中的總片上緩存區資源滿足層的數據尺寸.在這樣的資源分配策略下,計算過程中的數據復制和數據交換被限制在這一組資源內,由于NPU 的異構性(一部分NPU 可能片上緩存較大而計算資源少,另一部分則相反),每個NPU 所需的數據可能來自于該NPU 本身的片上緩存或附近NPU 的片上緩存,我們稱之為“內存借用”,即片上緩存區較大的NPU 將空間“借”給片上緩存不足的NPU.因此,Puzzle 將核間通信盡量限制在較低的訪存級別,以降低通信開銷,這也同時降低了內存控制器附近的擁塞.

在為該資源組搜索資源結點時,選擇資源的優先級規則為:1)優先選擇同一芯粒上的NPU 結點,因為與芯粒內的片上互連通信相比,芯粒間的鏈路會產生更高的通信延遲和擁塞概率.2)優先選擇與本芯粒通信開銷低的鄰居芯粒中的NPU 結點.3)優先選擇對該資源組要執行的任務計算利用率高的NPU結點,計算利用率信息UR來源于工作負載解析模塊.基于這3 條規則,在算法1 行⑨中,我們創建候選隊列Neighbors,按照優先級規則,依次選取與當前Groupq中的結點同芯粒的NPU、通信延遲最低的鄰居芯粒的NPU 加入候選隊列.在隊列中,使用候選結點到當前資源組的通信延遲和NPU 執行該任務的性能,對計算圖中的每個NPU 結點排序,依次將最優的NPU 候選結點加入資源組.若Neighbors中的候選結點用盡后仍沒有使資源組滿足任務對片上緩存的需求,則重復這一過程,繼續向外擴張資源組,直至資源組的片上緩存資源滿足任務需求.

在算法1 行?~?中,如果在資源分配結束后,獲取到的資源比例低于系統中設定的資源閾值,則認為該資源不足情況會造成重復的內存訪問和冗余的數據傳輸,并帶來較高額外開銷,那么該任務需要掛起等待更多空閑資源.在算法1 行?~?中,描述了一種邊界條件:如果隊列中沒有待執行的任務,但是存在剩余的空閑硬件資源,則將剩余資源添加到資源組Groupq中.隨后,任務分發器將以數據并行方式將任務tp并行化分配給Groupq中的每個NPU,從批(batch)和特征值的3 個維度中,選擇開銷最小的維度進行任務分割,子任務的大小比例由NPU 的算力決定.若資源圖中表示芯粒設計者定義了部分NPU間的并行規則,則Puzzle 的并行化過程會將這部分NPU 視為一個整體,進行任務并行化分配,而其內部的并行使用芯粒設計者定義的并行規則.最終,任務分發模塊將生成的子任務發送給代碼生成模塊,將子任務間的同步和依賴關系發送給運行時管理模塊.

Puzzle 實現了一種動態、自適應的任務調度和資源分配策略.與時分復用策略相比,Puzzle 的資源分配策略將通信限制在一部分芯粒的范圍內,且優先選擇較低的通信層級,降低了不必要的芯粒間通信;與空分復用策略相比,Puzzle 的資源分配策略可以靈活地滿足任務對資源的需求,以避免冗余的內存訪問開銷,且空分復用在不均勻工作負載下面臨高資源空轉時間問題.Puzzle 的資源分配方式介于空分復用和時分復用之間,與空分復用相比均攤了負載的不均勻性,降低了資源空轉時間,如圖5 所示.Puzzle 的任務分發策略綜合了這2 種原有調度方式的優勢,優化了這2 種原有調度方式的瓶頸問題,在芯粒集成的多樣化硬件配置和工作負載下,均可自適應地生成高效的任務分發方案.

3.3 任務調度和資源分配算法復雜度分析

Puzzle 的任務調度和資源分配策略中使用了貪心策略和優先級規則來降低算法的運行開銷,本節中將量化分析算法1 的復雜度.

算法1 中行①表示系統循環等待芯片上有空閑NPU 資源且有待執行任務.為了衡量任務分發算法的運行開銷,從行②起,分析一次任務調度和資源分配的時間復雜度、空間復雜度.假定芯片中共有m個芯粒,每個芯粒上包含n1,n2, …,nm個NPU 核.從統計學意義上,假定每個芯粒上平均包含n個核.另假定待執行任務隊列中共有k個任務.

1)時間復雜度分析.在任務選擇階段(算法1 行②~⑥),貪心算法需要遍歷待執行的任務列表,時間復雜度為O(k),其余操作均為常數時間.在資源分配階段(算法1 行⑦~?)需要進行多輪資源擴展,因此行⑦對芯粒通信開銷進行排序預處理,只需要對Level-2 圖中表示初始芯粒與其他芯粒通信開銷的邊進行排序,因此時間復雜度為O(mlogm).從行⑧起為循環的多輪選擇過程,每一輪選擇同芯粒或通信延遲最低的鄰居芯粒上的NPU 加入候選隊列Neighbors.在硬件中,可能同時存在多個通信延遲最低且相等的鄰居芯粒被同時加入候選,然而由于硬件路由端口數量有限,加入的芯粒只可能為常數個.因此,Neighbors中包含O(n)個元素,對Neighbors排序的時間復雜度為O(nlogn).經過<m輪后,資源組擴展到<m個芯粒,達到任務的資源要求,多輪擴展的復雜度為O(mnlogn).因此,資源分配階段的總時間復雜度為O(mlogm +mnlogn).在大部分實際情況中,任務選擇階段復雜度O(k)小于資源分發階段O(mlogm +mnlogn).因此,算法復雜度為O(mlogm +mnlogn),即與芯粒數量m、芯粒中平均的NPU 數量n均呈線性對數關系.使用N表示總NPU 核數,即N=m×n,因此有O(mlogm +mnlogn)<O(NlogN),即算法時間復雜度與芯粒中的NPU 總數也呈線性對數關系,并隨系統規模增長速度變緩.

2)空間復雜度分析.算法1 所需的運行空間為資源組Groupq和候選隊列Neighbors,分別占用O(mn)和O(n)的額外空間.因此,算法空間復雜度為O(mn)=O(N),并隨芯粒數量、芯粒中NPU 數量線性增長.

4 實驗評估

4.1 實驗設置

1)芯粒硬件資源配置.本文在表1 中列出了實驗中使用的硬件配置,包括表征不同場景的3 種集成芯片硬件資源組合(PA 表示Post-Assembly,即集成芯片通過組裝已有芯粒的方式形成的資源組合).PASmall 中集成了多個算力較低、片上緩存較小的NPU芯粒,適用于邊緣設備等低功耗場景;PA-Big 集成了高算力和較大片上緩存的NPU 芯粒,代表了對功耗不敏感但需要高性能和實時服務(如云服務器)的場景;PA-Hybrid 同時集成了較大的NPU 核和較小的NPU 核,這種集成配置可能出現于工作負載可變的多租戶應用場景,可以用于靈活處理用戶上傳的計算任務.每個芯粒都使用現有的神經網絡處理器相關工作中提出的智能處理器配置.

Table 1 Integrated Deep Learning Chip Resource Configurations表1 深度學習集成芯片資源配置

除了表1 中列出的NPU 芯粒配置外,芯片中還設置一個主控CPU 芯粒和一個I/O 芯粒.本文使用雙核Arm Cortex-A53 CPU 作為主控制器,負責任務分配、同步和管理NPU 核狀態.采用16 GB DDR4 作為主存儲器,它提供25.6 GB/s 的帶寬,并通過I/O 芯粒上的內存控制器與其他芯粒通信.PA-Small 采用128 b鏈路帶寬的芯粒間互連網絡,而PA-Big 和PAHybrid 采用256 b 鏈路帶寬,數據包大小設為4 微片(Flit).對于PA-Small,PA-Big 和PA-Hybrid,芯粒間互連網絡的帶寬分別為12.8 GB/s,25.6 GB/s,25.6 GB/s.

2)系統模擬.本文實現了一個系統級模擬器,用于評估延遲、內存訪問和通信等芯片行為.該模擬器中的NPU 模擬模塊可以準確計算深度學習集成芯片中NPU 的性能(與Scale-Sim[45]相互驗證),并調用Booksim 2.0[46]獲取通信延遲.

3)基線設置.本文使用PREMA[35]和Herald[36]這2 個代表性的多任務神經網絡調度的相關工作作為基線.PREMA 使用時分復用的算法,并允許高優先級的工作任務搶占硬件資源.Herald 使用空分復用算法,基于任務在NPU 上的利用率優先,將多個任務分配到多個異構的NPU 處理器中.

4)工作負載配置.基于常見的神經網絡模型,構建了Light,Mix 和Heavy 這3 種不同強度的工作負載,如表2 所示.其中,Mix 是較小的神經網絡模型和較大神經網絡模型的混合,用于模擬多租戶場景下的各種可能的請求組合.

4.2 實驗結果

3.2 節中總結了基線策略所使用的時分復用、空分復用的優缺點呈現出的互補特性,以及在芯粒間通信、訪存、資源空轉時間方面分別存在優勢和性能瓶頸.而本文所提出的任務調度和資源分配方法是對時分復用和空分復用這2 種基線方法的折中,綜合了2 種方法的優勢,緩解2 種方法的瓶頸問題導致的性能損失,最終降低總負載延遲.

本節首先依次展示Puzzle 與基線方法在芯粒間通信、訪存、資源空轉時間的對比實驗結果,并展示使用本文方法帶來的總延遲變化,以及測試了Puzzle 的可擴展性.

4.2.1 內存訪問

內存訪問是影響深度學習集成芯片性能的重要因素,因為多核芯片中的內存訪問會導致共享資源的搶占,從而導致I/O 芯粒路由器的排隊延遲、I/O芯粒附近鏈路的擁塞,以及DRAM 的訪問延遲.在Herald 使用的空分復用策略下,多個待執行任務同時執行,每個任務占據的資源有限,且由于第三方芯粒資源的異構性,Herald 使用的基于計算利用率的空分復用方法可能會導致計算任務的存儲需求和分配的硬件資源之間的不匹配,即需要頻繁與內存進行數據交換,導致冗余內存訪問.而在PREMA 所使用的時分復用策略下,同一時刻只有一個任務占據全部硬件資源,是系統中片上緩存資源最充足的調度方案.因此,PREMA 策略下產生的內存訪問反映了系統內存訪問的下界,即“必須”的內存訪問.

Puzzle 生成的資源分配方案為Herald 和PREMA策略的折中,通過啟發式搜索,為任務分配滿足需求的硬件資源組,且當空閑資源不足時,將掛起該任務以避免高冗余開銷.與Herald 相比,Puzzle 降低了資源不滿足任務需求導致的冗余內存訪問.與PREMA策略下每個任務均使用全部資源相比,Puzzle 策略仍可能造成少量的冗余內存訪問,但已接近PREMA 策略下產生的內存訪問(即系統“必須”的內存訪問).如圖6 所示,PA-Small 中的NPU 片上緩存較小(KB 級),因此不適當的資源分配很容易導致冗余內存訪問,尤其是在Heavy 工作負載下.從Light,Mix到Heavy 工作負載,與Herald 相比,Puzzle 減少了21.9%、65.7%和86.0%的內存訪問.對于PA-Big,其NPU均包含MB 級別的片上緩存,Puzzle 與Herald 均只進行必要的訪存,幾乎沒有冗余的內存訪問,因此訪存數據量相似.但PA-Hybrid 在執行Heavy 工作負載時,由于其芯片配置中包含片上緩存較小的NPU,在這種配置下Puzzle 相比于Herald 可以減少24.9%的訪存數據.在這3 種硬件配置下,Puzzle 產生的內存訪問均只略高于最低內存訪問(PREMA).

Fig.6 Comparison of memory access amount圖6 內存訪問量對比

4.2.2 芯粒間通信

芯粒間通信是影響深度學習集成芯片性能的另一重要因素,因為芯粒間通信需要在基板層完成,而基板層的通信開銷比片上互連網絡高.另外,基板上的芯粒間通信鏈路和路由可能同時被多個芯粒搶占,進一步降低其數據通信速度.在PREMA 所使用的時分復用策略下,同一時刻只有一個任務占據全部硬件資源,即所有NPU 協作完成同一計算任務,因此產生大量冗余的芯粒間通信.Herald 策略下計算任務在空間上復用硬件,每個任務占用少量芯粒,因此顯示了最低的芯粒間通信開銷.而Puzzle 為任務分配的資源組兼顧滿足任務需求和減少不必要的芯粒間通信,因此其芯粒間通信低于PREMA 但高于Herald.

如圖7 所示,與PREMA 相比,Puzzle 只為任務分配滿足或接近于滿足任務需求的資源,且優先聚合通信距離近的資源,因此降低了最高達66.6%的芯粒間通信.在硬件配置PA-Small 下,當工作負載為Light時,Puzzle 分配給每個任務的資源遠遠小于PREMA分配的資源,因此Puzzle 顯著降低了芯粒間通信.隨著工作負載的增加,每個任務均需要更多的片上存儲,因此Puzzle 也會為每個任務分配更多的資源,即資源分配策略趨近于時分復用,因此運行Heavy 負載時的芯粒間通信量接近于PREMA.在硬件配置PABig 下的實驗結果反映了硬件資源相對充足的場景,即硬件資源大于工作負載需求.當執行Heavy 工作負載時,Puzzle 可以降低冗余的芯粒間通信達54.9%;當執行Light 和Mix 工作負載時,任務較小,不需要大量資源,然而,為了避免大量資源空閑而導致高延遲,Puzzle 會將空閑的NPU 附加到當前正在分配的資源組,因此芯粒間通信的下降不如Heavy 工作負載下顯著,但與PREMA 相比,仍然可以帶來可觀的芯粒間通信降低.

Fig.7 Comparison of inter-die communication amount圖7 芯粒間通信量對比

4.2.3 計算資源空轉時間

如3.2 節中所述,在不均勻的多任務工作負載下,Herald 所使用的空分復用策略中短任務釋放的資源有時無法被及時利用.芯粒集成的異構性加劇了這一問題,在異構資源下平衡任務時間差異更加困難.

圖8 展示了Herald 和Puzzle 調度策略下導致的資源空轉時間對比.從圖8 中可見,Herald 在一些配置下資源空轉比例較低,例如在PA-Small 硬件配置下運行Mix 和Heavy 工作負載.在另一些配置下資源空轉比例較高,例如在PA-Big 硬件配置下運行Mix工作負載,在PA-Hybrid 下運行Light 工作負載.因此,Herald 僅適用于有限的部分配置,不均勻的工作負載或硬件配置都會對Herald 策略產生較大影響,降低計算資源利用率.而Puzzle 策略根據系統中剩余任務和硬件資源狀態動態地分配資源和調度任務,更大程度上均攤了負載的不均勻性,將空分復用策略下的平均資源空轉時間比例由31.0%降低至3.4%.

Fig.8 Proportion of resource idle time圖8 資源空轉時間比例

4.2.4 延 遲

根據4.2.1 節、4.2.2 節、4.2.3 節的3 個實驗評估結果,PREMA 的策略存在訪存量低、資源利用率高的優勢,但也存在高芯粒間通信開銷.Herald 策略中芯粒間通信開銷低,但存在大量冗余訪存和資源空轉.Puzzle 實現了一種自適應的調度方案,根據系統中任務隊列、任務大小和硬件資源狀態生成任務調度和資源分配方案.Puzzle 綜合了PREMA 和Herald方案中的優勢,在各種芯片配置和工作負載下均降低任務總延遲,如圖9(a)~9(c)所示.

Fig.9 Comparison of task latency and scalability圖9 任務延遲對比和可擴展性

在圖9 (a)中,PA-Small 表示集成芯片中資源較少的場景,對于工作負載Light,計算任務對硬件資源的需求也較少,PREMA 的策略會導致大量的冗余芯粒間通信(如4.2.2 節所示),因此PREMA 的延遲最高.對于工作負載Mix 和Heavy,Herald 策略會導致大量冗余內存訪問(如4.2.1 節所示),造成高延遲.Puzzle 通過合理的資源分配策略實現了折中,既將片間通信控制在合理的范圍內,又盡量不產生冗余的訪存,與PREMA 和Herald 相比,Puzzle 的任務總延遲分別降低了41.1%和67.0%.

在圖9 (b)中,PA-Big 表示集成芯片中資源較充足的場景.在這種情況下,只需要少量的NPU 資源即可滿足單個任務的需求.因此,與PREMA 相比,Puzzle 不會為單個任務分配過多的NPU 資源,因此產生較少的片間通信,并降低總延遲14.7%~36.4%.此外,由于工作負載不均衡會導致較高的資源空轉時間,Herald 在Mix 工作負載下的延遲較高,而Puzzle通過合理的資源分配靈活地為任務生成資源組合,與Herald 相比平均降低總延遲21.8%.在圖9(c)中,PA-Hybrid 表示集成芯片資源異構性較大的場景下,Puzzle 仍然保持自適應能力,自適應于硬件配置和工作負載,與基線策略相比,降低總延遲8.0%~42.9%.實驗結果表明,Puzzle 可以自適應于多種工作負載和硬件資源配置,產生高效的任務調度和資源分配方案,降低工作負載總延遲.

4.2.5 可擴展性

芯片的可擴展性通常從2 個方面進行評估:縱向擴展(scale-up)和橫向擴展(scale-out).由于不同的硬件配置已經證明了Puzzle 在scale-up 方面的擴展性,本節評估Puzzle 在scale-out 方面的擴展性.通過修改NPU 芯粒的數量,將PA-Small 縮放到2×2, 4×4, 5×5,并評估同一個工作負載在這些縮放下的加速比.如圖9(d)所示,運行Mix 工作負載時的可擴展性包含了4 個不同的神經網絡請求,可以看出,在Mix 工作負載下,在25 個芯粒的場景下仍能保持持續加速趨勢.另外,也評估了更大的工作負載強度的場景下,Puzzle 的可擴展性.實驗結果表明,當工作負載強度更大時,Puzzle 的可擴展性也仍然隨之提高,尤其在部署請求數量更多的工作負載場景下.

5 結 論

基于芯粒集成技術進行深度學習芯片的敏捷定制可以降低芯片的開發周期和成本,因此成為新的發展趨勢.然而為定制化的深度學習集成芯片設計工具鏈會延長芯片的設計周期,并要求芯片開發人員熟悉第三方芯粒的架構設計細節.本文提出了一種面向深度學習集成芯片的自適應編譯和資源管理框架Puzzle,它使用兩級資源圖表示和管理深度學習集成芯片中的硬件資源,并根據不同的芯片硬件資源配置和工作負載自適應地生成高效的任務調度和資源分配方案.Puzzle 提供了從輸入工作負載到第三方芯粒接口的完整工作流程,為芯片敏捷定制的工具鏈設計提供了自動化的解決方案.與主流的其他方案相比,Puzzle 在不同的集成芯片配置和工作負載下均可以降低任務延遲,平均達到27.5%.

另外,Puzzle 框架中仍有待完善之處:1)由于Puzzle 框架中動態進行任務分發,因此,為了保證低運行時的開銷,Puzzle 的任務調度和資源分配算法中使用了部分貪心策略,所以并未達到全局最優,未來工作將嘗試更多的優化策略,進行運行時開銷和系統更優性能的權衡;2)在Puzzle 中,并未針對計算圖進行算子融合優化,且沒有進行設計流水線并行的支持,在部分場景下浪費了算子間并行帶來的優化空間.未來我們將在Puzzle 的計算圖模塊中加入圖優化,進一步利用算子間并行,提升框架性能.

作者貢獻聲明:王夢迪設計并實現算法、撰寫論文內容;王穎對論文選題、組織結構和論文寫作提供了關鍵性的指導意見;劉成針對框架的模塊和算法設計提出了關鍵性意見;常開顏、高成思協助設計了實驗方案,并進行了實驗對比分析;韓銀和李華偉對論文的選題提供了重要的指導意見;張磊對論文選題進行了指導,并審閱與修訂論文.

猜你喜歡
深度資源
讓有限的“資源”更有效
基礎教育資源展示
深度理解一元一次方程
一樣的資源,不一樣的收獲
深度觀察
深度觀察
深度觀察
資源回收
深度觀察
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
主站蜘蛛池模板: 国产成人亚洲日韩欧美电影| 亚洲欧美成人影院| 久久黄色影院| 72种姿势欧美久久久久大黄蕉| 日韩欧美综合在线制服| 99ri精品视频在线观看播放| 婷婷开心中文字幕| 99免费在线观看视频| 中国成人在线视频| 国产中文一区二区苍井空| 国产综合日韩另类一区二区| 狠狠综合久久久久综| 亚洲 欧美 中文 AⅤ在线视频| 国产浮力第一页永久地址| a欧美在线| 色综合天天视频在线观看| 国产第一页第二页| 夜夜拍夜夜爽| 日韩精品成人网页视频在线| 国产91麻豆免费观看| 一级毛片视频免费| 一本大道无码日韩精品影视| 欧美色99| 欧美日韩综合网| 久久婷婷综合色一区二区| 久久夜色精品国产嚕嚕亚洲av| 国产丝袜91| 自拍偷拍一区| 2021最新国产精品网站| 亚洲成人精品久久| 亚洲精品在线观看91| 亚洲av片在线免费观看| 国产视频只有无码精品| 55夜色66夜色国产精品视频| 国产天天射| 久久国产亚洲欧美日韩精品| 亚洲第一成网站| 色婷婷在线播放| 久久综合国产乱子免费| 亚洲黄色激情网站| 无码内射在线| 国产成人高清精品免费软件| 99久久这里只精品麻豆| 一级看片免费视频| 亚洲一道AV无码午夜福利| 在线观看国产网址你懂的| 亚洲成人播放| 免费无码AV片在线观看国产| 欧美久久网| 亚洲欧洲日产国码无码av喷潮| 国产精品网曝门免费视频| 久久久久人妻精品一区三寸蜜桃| 国产综合无码一区二区色蜜蜜| 亚洲天堂网在线视频| 亚洲天堂2014| 全免费a级毛片免费看不卡| 97国产在线观看| 99在线观看精品视频| 精品一区二区无码av| 韩国v欧美v亚洲v日本v| 免费一极毛片| 在线免费a视频| 国产欧美视频综合二区| 中文国产成人久久精品小说| 九九视频在线免费观看| 尤物亚洲最大AV无码网站| 欧美激情第一区| 毛片基地美国正在播放亚洲| 亚洲视频四区| 国产区91| 在线色国产| 黄色成年视频| 国产黄色视频综合| 香蕉精品在线| 亚洲最黄视频| 黄色污网站在线观看| 国产女人喷水视频| 欧洲精品视频在线观看| 一级福利视频| 久精品色妇丰满人妻| 国产三级视频网站| 免费一级无码在线网站 |