3d cube計算引擎加速運算
華為達文西架構的ai晶元ascend910,同時與之配套的新一代ai開源計算框架mindspore。
為什麼要做達文西架構?
ai將作為一項通用技術極大地提高生產力,改變每個組織和每個行業。為了實現ai在多平台多場景之間的協同,華為設計達文西計算架構,在不同體積和功耗條件下提供強勁的ai算力。
初見:達文西架構的核心優勢
達文西架構,是華為自研的面向ai計算特徵的全新計算架構,具備高算力、高能效、靈活可裁剪的特性,是實現萬物智慧型的重要基礎。具體來說,達文西架構採用3d cube針對矩陣運算做加速,大幅提公升單位功耗下的ai算力,每個ai core可以在乙個時鐘週期內實現4096個mac操作,相比傳統的cpu和gpu實現數量級的提公升。
▲3d cube
同時,為了提公升ai計算的完備性和不同場景的計算效率,達文西架構還整合了向量、標量、硬體加速器等多種計算單元。同時支援多種精度計算,支撐訓練和推理兩種場景的資料精度要求,實現ai的全場景需求覆蓋。
深耕:達文西架構的ai硬實力
常見的ai運算型別有哪些?
在了解達文西架構的技術之前,先來弄清楚一下幾種ai運算資料物件:
• 標量(scalar):由單獨乙個數組成
• 向量(vector):由一組一維有序數組成,每個數由乙個索引(index)標識
• 矩陣(matrix):由一組二維有序數組成,每個數由兩個索引(index)標識
• 張量(tensor):由一組n維有序數組成,每個數由n個索引(index)標識
其中,ai計算的核心是矩陣乘法運算,計算時由左矩陣的一行和右矩陣的一列相乘,每個元素相乘之後的和輸出到結果矩陣。在此計算過程中,標量(scalar)、向量(vector)、矩陣(matrix)算力密度依次增加,對硬體的ai運算能力不斷提出更高要求。
典型的神經網路模型計算量都非常大,這其中99%的計算都需要用到矩陣乘,也就是說,如果提高矩陣乘的運算效率,就能最大程度上提公升ai算力——這也是達文西架構設計的核心:以最小的計算代價增加矩陣乘的算力,實現更高的ai能效。
各單元角色分工揭秘,da vinci core是如何實現高效ai計算的?
華為ai晶元ascend 310(公升騰310),ascend 310相當於ai晶元中的npu。
其中,da vinci core只是npu的乙個部分,da vinci core內部還細分成很多單元,包括核心的3d cube、vector向量計算單元、scalar標量計算單元等,各自負責不同的運算任務實現並行化計算模型,共同保障ai計算的高效處理。
3d cube矩陣乘法單元是ai計算的核心,這部分運算由3d cube完成,buffer l0a、l0b、l0c則用於儲存輸入矩陣和輸出矩陣資料,負責向cube計算單元輸送資料和存放計算結果。
cube的算力很強大,但只能完成矩陣乘運算,還有很多計算型別要依靠vector向量計算單元來完成。vector的指令相對來說非常豐富,可以覆蓋各種基本的計算型別和許多定製的計算型別。
scalar標量運算單元主要負責ai core的標量運算,功能上可以看作乙個小cpu,完成整個程式的迴圈控制,分支判斷,cube、vector等指令的位址和引數計算以及基本的算術運算等。
3d cube計算方式的獨特優勢是什麼?
不同於以往的標量、向量運算模式,華為達文西架構以高效能3d cube計算引擎為基礎,針對矩陣運算進行加速,大幅提高單位面積下的ai算力,充分激發端側ai的運算潛能。以兩個nn的矩陣ab乘法為例:如果是n個1d的mac,需要n2的cycle數;如果是1個n2的2d mac陣列,需要n個cycle;如果是1個n維3d的cube,只需要1個cycle。
▲圖中計算單元的數量只是示意,實際可靈活設計
達文西架構將大幅提公升算力,161616的3d cube能夠顯著提公升資料利用率,縮短運算週期,實現更快更強的ai運算。舉例來說,同樣是完成4096次運算,2d結構需要64行64列才能計算,3d cube只需要161616的結構就能算出。其中,6464結構帶來的問題是:運算周期長、時延高、利用率低。
達文西架構的這一特性也體現在麒麟810上。作為首款採用達文西架構npu的手機soc晶元,麒麟810實現強勁的ai算力,在單位面積上實現最佳能效,fp16精度和int8量化精度業界領先。
麒麟810支援自研中間運算元格式ir開放,運算元數量多達240+,處於業內領先水平。更多運算元、開源框架的支援以及提供更加完備的工具鏈將助力開發者快速轉換整合基於不同ai框架開發出的模型,極大地增強了華為hiai移動計算平台的相容性、易用性,提高開發者的效率,節約時間成本,加速更多ai應用的落地。
達文西架構解鎖ai無限可能
基於靈活可擴充套件的特性,達文西架構能夠滿足端側、邊緣側及雲端的應用場景,可用於小到幾十毫瓦,大到幾百瓦的訓練場景,橫跨全場景提供最優算力。
以ascend晶元為例,ascend-nano可以用於耳機**等iot裝置的使用場景;ascend-tiny和ascend-lite用於智慧型手機的ai運算處理;在膝上型電腦等算力需求更高的便攜裝置上,由ascend 310(ascend-mini)提供算力支援;而邊緣側伺服器上則需要由multi-ascend 310完成ai計算;至於超複雜的雲端資料運算處理,則交由算力最高可達256 tflops@fp16的ascend 910(ascend-max)來完成。正是由於達文西架構靈活可裁剪、高能效的特性,才能實現對上述多種複雜場景的ai運算處理。
同時,選擇開發統一架構也是乙個非常關鍵的決策。統一架構優勢很明顯,那就是對廣大開發者非常利好。基於達文西架構的統一性,開發者在面對雲端、邊緣側、端側等全場景應用開發時,只需要進行一次運算元開發和除錯,就可以應用於不同平台,大幅降低了遷移成本。不僅開發平台語言統一,訓練和推理框架也是統一的,開發者可以將大量訓練模型放在本地和雲端伺服器,再將輕量級的推理工作放在移動端裝置上,獲得一致的開發體驗。
在算力和技術得到突破性提公升後,ai將廣泛應用於智慧型城市、自動駕駛、智慧型新零售、機械人、工業製造、雲計算ai服務等場景。未來,ai將應用更加廣泛的領域,並逐漸覆蓋至生活的方方面面。
3D Cube計算引擎加速運算
3d cube計算引擎加速運算 華為達文西架構的ai晶元ascend910,同時與之配套的新一代ai開源計算框架mindspore。為什麼要做達文西架構?ai將作為一項通用技術極大地提高生產力,改變每個組織和每個行業。為了實現ai在多平台多場景之間的協同,華為設計達文西計算架構,在不同體積和功耗條件...
平方根運算的軟體與硬體的加速計算
1.1 二分法 利用二分進行開平方的思想很簡單 假定中值為最終解。假定下限為0,上限為x,然後求中值 然後比較中值的平方和x的大小,並根據大小修改下限或者上限 重新計算中值,開始新的迴圈,直到前後兩次中值的距離小於給定的精度為止。需要注意的一點是,如果x小於1,我們需要將上限置為1。如下 float...
雲計算開發學習筆記 Python3身份運算子例項
身份運算子用於比較兩個物件的記憶體位址是否一致,是否www.cppcns.com是對同乙個物件的引用。注 iziqpcd 函式用於獲取物件記憶體位址。以下例項演示了ziqpcpython所有身份運算子的操作 以上例項輸出結果 解析 身份運算子is 用於判斷兩個變數引用物件是否為同乙個 同一塊記憶體空...