>>" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ARM發(fā)布最新Compute Library

pmkA_arm_china ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2017-10-09 13:56 ? 次閱讀

開心了這么多天,該“收心”好好干活了,正好Arm有一個好消息要告訴大家,最新一季的Compute Library公開發(fā)行版(版本 17.9)現(xiàn)已推出,讓我們一起來看看重點新增的一些特性和函數(shù)吧。

新的特性

此發(fā)行版主要增添了以下特性:

  • 多個新的面向 Arm CPU 和 Mali GPU機器學(xué)習(xí)函數(shù)

  • 支持新的數(shù)據(jù)類型和精度(重點支持低精度數(shù)據(jù)類型)

  • 支持利用 Arm-v8.2 CPU 架構(gòu)的新指令實現(xiàn) FP16 加速

  • 針對關(guān)鍵的機器學(xué)習(xí)函數(shù)進行微架構(gòu)優(yōu)化

  • 降低復(fù)雜網(wǎng)絡(luò)內(nèi)存開銷的內(nèi)存管理工具

  • 用于基本測試的基礎(chǔ)結(jié)構(gòu)框架

新的函數(shù)

我們添加了許多新的函數(shù),滿足以 Arm 型平臺為目標(biāo)的開發(fā)人員的需求。這些新例程采用 OpenCL C 和 C(利用NEONIntrinsics)編寫。

OpenCL C(針對Mali GPU):

  • Bounded ReLu

  • Depth wise卷積(在 mobileNet 中使用)

  • 反量化

  • Direct卷積 1x1

  • Direct卷積 3x3

  • Direct卷積 5x5

  • 3D 張量展平

  • 向下取整

  • 全局池化(在 SqueezeNet 中使用)

  • Leaky ReLu

  • 量化

  • Reduction 運算

  • ROI 池化

CPU (NEON):

  • Bounded ReLu

  • Direct卷積 5x5

  • 反量化

  • 向下取整

  • Leaky ReLu

  • 量化

  • 具有定點加速的新函數(shù)

Direct卷積是在經(jīng)典滑動窗口基礎(chǔ)上執(zhí)行卷積層的一種替代方法。在Mali GPU Bifrost 架構(gòu)的實現(xiàn)中,使用Direct卷積對于改進我們 CNN 的性能很有幫助(我們觀察到,對 AlexNet 使用Direct卷積時性能最多可提升 1.5 倍)。

支持低精度

在許多機器學(xué)習(xí)應(yīng)用場景中,可以通過降低計算精度來提升效率和性能。這是我們工程師上一季度的重點關(guān)注領(lǐng)域。我們利用低精度實施了現(xiàn)有函數(shù)的新版本,如 8 位和 16 位定點,這同時適用于 CPU 和 GPU。

GPU (OpenCL) - 8 位定點

  • Direct卷積 1x1

  • Direct卷積 3x3

  • Direct卷積 5x5

GPU (OpenCL) - 16 位定點

  • 算術(shù)加法、減法和乘法

  • 深度轉(zhuǎn)換

  • 深度連接(concatenate)

  • 深度卷積

  • GEMM

  • 卷積層

  • 全連接層

  • 池化層

  • Softmax 層

NEON - 16 位定點

  • 算術(shù)加法、減法和乘法

  • 卷積層

  • 深度連接(concatenate)

  • 深度轉(zhuǎn)換

  • Direct卷積 1x1

  • 全連接層

  • GEMM

  • Softmax 層

微架構(gòu)優(yōu)化

在 Compute Library 項目啟動之初,我們的宗旨主要是共享計算機視覺和機器學(xué)習(xí)的一整套底層函數(shù),要保障性能良好,最為重要的是要可靠且可移植。Compute Library 能夠為著眼于 Arm 處理器的開發(fā)人員和合作伙伴節(jié)省時間和成本;同時,Compute Library 在我們合作伙伴實施的許多系統(tǒng)配置中也有出色的表現(xiàn)。這也是我們將NEONintrinsic和 OpenCL C 作為目標(biāo)語言的原因。但在某些情形中,必須要充分發(fā)揮硬件的所有性能。因此,我們也著眼于在 Compute Library 中增加底層原語,這些底層原語利用專為目標(biāo) CPU 微架構(gòu)定制的手工匯編進行了優(yōu)化。

在決定我們應(yīng)將重點放在哪些函數(shù)時,我們的研發(fā)團隊研究了利用 Caffe 框架的機器學(xué)習(xí)工作負(fù)載。

所用的三種工作負(fù)載為:

  • AlexNet,將圖像目標(biāo)分類到1000個可能類別的 大型網(wǎng)絡(luò)

  • LeNet,將手寫數(shù)字分類到10個可能類別的 中型網(wǎng)絡(luò)

  • ConvNet,將圖像分類到10個可能類別的 小型網(wǎng)絡(luò)

下圖顯示了這些工作負(fù)載的指令使用情況:

我們的團隊發(fā)現(xiàn),這些網(wǎng)絡(luò)大約有 50-80% 的計算在 SGEMM 函數(shù)內(nèi)發(fā)生,這個函數(shù)是將兩個浮點矩陣相乘。還有其他幾個函數(shù)也比較突出,例如冪函數(shù)和轉(zhuǎn)換矩陣維度的函數(shù)。其余的計算則分散在一個長尾分布中。

您可以發(fā)現(xiàn)這樣的一個趨勢,SGEMM 所占的比例隨著網(wǎng)絡(luò)規(guī)模變大而升高,但這種趨勢更有可能是因為層的配置所致,而不是與大小相關(guān)。從中我們可以意識到,矩陣乘法對神經(jīng)網(wǎng)絡(luò)確實非常重要。如果說哪個目標(biāo)函數(shù)最需要優(yōu)化,應(yīng)該就是它了。

在此發(fā)行版的庫中,我們增加了面向Cortex-A53和Cortex-A72處理器的 CPU 匯編優(yōu)化版 SGEMM (FP32)。這些例程的性能視平臺而異,但我們在測試中看到總體性能有大幅提升。例如,我們對 Firefly 開發(fā)板(64 位,多線程)進行了 AlexNet 基準(zhǔn)測試,在 Cortex-A72 上測量到性能提升了約 1.6 倍。

下表顯示了我們在相同平臺上使用新的優(yōu)化例程的一組基準(zhǔn)測試結(jié)果。

在 Armv8.2 CPU 上支持 FP16

在關(guān)于17.6 發(fā)行版的介紹中(Arm計算庫第二個公開版本正式發(fā)布,這些廠商一直在用其進行開發(fā)!),Arm計劃在 CPU 中支持用于機器學(xué)習(xí)的新架構(gòu)功能,而第一步就是在 Armv8.2 CPU 中支持 FP16。目前,庫中增加了面向 Armv8.2 FP16 的新函數(shù):

  • 激活層

  • 算術(shù)加法、減法和乘法

  • 批量歸一化(Batch Normalization)

  • 卷積層(基于 GEMM)

  • 卷積層(Direct卷積)

  • 局部連接

  • 歸一化

  • 池化層

  • Softmax 層

雖然我們沒有對這些函數(shù)做一些激進的優(yōu)化(這些函數(shù)采用 NEON intrinsic而非手工優(yōu)化的匯編語言編寫),但與使用 FP32 且必須在不同格式之間轉(zhuǎn)換相比,性能有了大幅提升。下表比較了一些工作負(fù)載,從中可以看出,借助 v8.2 CPU 指令,可以減少計算所需的周期數(shù)。

面向 Bifrost 架構(gòu)的 GPU 優(yōu)化

如今,許多移動合作伙伴正在利用 Mali GPU 來加快機器學(xué)習(xí)工作負(fù)載的速度。根據(jù)這些合作伙伴的反饋,我們在這個領(lǐng)域做了針對性的優(yōu)化。

新的Direct卷積 3x3 和 5x5 函數(shù)針對 Bifrost 架構(gòu)進行了優(yōu)化,性能與上一發(fā)行版 (17.06) 中的例程相比有了顯著提升。在部分測試平臺上使用這些新例程時,我們發(fā)現(xiàn)性能普遍提高約 2.5 倍。此外,在 AlexNet 的多批量工作負(fù)載中,GEMM 中引入的新優(yōu)化幫助我們獲得了 3.5 倍的性能提升。性能因平臺和實現(xiàn)方法而異,但總體而言,我們預(yù)計這些優(yōu)化能夠在 Bifrost GPU 上顯著提升性能。

下圖顯示了在華為 Mate 9 智能手機上的一些測試結(jié)果,測試中禁用了 DVFS,取 10 次運行中最短的執(zhí)行時間作為結(jié)果。由此可見,新例程在性能上優(yōu)于舊版本。

內(nèi)存管理器

復(fù)雜工作負(fù)載(大型網(wǎng)絡(luò))會需要大量內(nèi)存,對于嵌入式平臺和移動平臺而言,這正是影響性能的癥結(jié)所在。我們聽取了合作伙伴的反饋,決定在庫的運行時組件中添加一個“內(nèi)存管理器”功能。內(nèi)存管理器通過循環(huán)利用臨時緩沖區(qū)降低通用算法/模型的內(nèi)存要求。

內(nèi)存管理器包含一個生命周期管理器(用于跟蹤注冊對象的生命周期)和一個池管理器(用于管理內(nèi)存池)。當(dāng)開發(fā)人員配置函數(shù)時,運行時組件會跟蹤內(nèi)存要求。例如,一些張量可能僅僅是暫時的,所以只分配所需的內(nèi)存。內(nèi)存管理器的配置應(yīng)從單一線程循序執(zhí)行,以便提高內(nèi)存利用率。

下表顯示了在使用內(nèi)存管理器時在我們測試平臺上測量到的內(nèi)存節(jié)省情況。結(jié)果因平臺、工作負(fù)載和配置而異??傮w而言,我們認(rèn)為內(nèi)存管理器能夠幫助開發(fā)人員節(jié)省內(nèi)存。

接下來,我們計劃繼續(xù)根據(jù)合作伙伴和開發(fā)人員的需求,進行具體的優(yōu)化。此外,我們還將重視與機器學(xué)習(xí)框架的集成,并與 Google Android NN 等新的 API 保持同步。

我們的目標(biāo)不是涵蓋所有數(shù)據(jù)類型和函數(shù),而是根據(jù)開發(fā)人員和合作伙伴的反饋,精選出最需要實施的函數(shù)。所以,我們期待著聽到您的聲音!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9027

    瀏覽量

    366475

原文標(biāo)題:節(jié)后第一個好消息就它了——Compute Library 17.9 正式發(fā)布!

文章出處:【微信號:arm_china,微信公眾號:Arm芯聞】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    W5500 ARM mbed 庫發(fā)布

    本帖最后由 Katrina_WIZnet 于 2014-6-24 15:40 編輯 WIZnet 是 ARM mbed(http://mbed.org/teams/WIZnet/)的官方
    發(fā)表于 06-24 15:39

    PRI Compute Module – 樹莓派的繼任者

    問題,樹莓派基金會又發(fā)布了一塊新的板卡 - “Compute Module”(以下簡稱Compute)。Compute是一塊長得像小型SODIMM內(nèi)存條的電路板,尺寸大概是樹莓派的四分
    發(fā)表于 09-30 13:21

    請問C2000支持IEC60730的library發(fā)布了嗎?

    想問一下,28035支持IEC60730, class B 的library 發(fā)布了嗎?最新的library是不是集成在ROM中?
    發(fā)表于 08-19 07:05

    使用CRL“ARM CMSIS SIN COS”和SW4STM32發(fā)布構(gòu)建simulink項目代碼報錯怎么解決?

    /arm_cos_f32.o" "C:/MATLAB/STM32-MAT/STM32/STM32demos/MotorControl/FOC/PMSM_FOC_Compute
    發(fā)表于 01-16 07:32

    VHDL Library of Arithmetic Uni

    VHDL Library of Arithmetic Units A comprehensive library of arithmetic units written
    發(fā)表于 06-14 09:08 ?26次下載

    VHDL Library of Arithmetic Uni

    VHDL Library of Arithmetic Units fdl A comprehensive library of arithmetic units written
    發(fā)表于 06-14 09:09 ?17次下載

    ADS_FSL_LIBRARY

    ADS_FSL_LIBRARY
    發(fā)表于 09-13 10:41 ?0次下載

    FX3 Wrapper Library

    FX3 Wrapper Library
    發(fā)表于 01-29 11:55 ?6次下載
    FX3 Wrapper <b class='flag-5'>Library</b>

    ADM1266 Python Library

    ADM1266 Python Library
    發(fā)表于 02-02 10:40 ?1次下載
    ADM1266 Python <b class='flag-5'>Library</b>

    ADM1266 Python Library

    ADM1266 Python Library
    發(fā)表于 03-05 11:16 ?10次下載
    ADM1266 Python <b class='flag-5'>Library</b>

    使用新的Nsight Compute改進導(dǎo)航和性能可視化

      源頁面上的度量分組和選擇選項有改進,使其更易于使用。此外,此版本還增加了對在基于 ARM SBSA 和 L4T 的平臺上運行 Nsight Compute 用戶界面的支持,用戶無需遠程連接或單獨的主機即可進行配置。
    的頭像 發(fā)表于 06-21 14:54 ?2961次閱讀
    使用新的Nsight <b class='flag-5'>Compute</b>改進導(dǎo)航和性能可視化

    ARM系列—機密計算

    今天來看一個ARM中的新東西,機密計算架構(gòu)(Confidential Compute Architecture,CCA)。CCA是ARM公司在2021年發(fā)布的,屬于Armv9-A的關(guān)鍵
    發(fā)表于 05-24 15:25 ?1351次閱讀
    <b class='flag-5'>ARM</b>系列—機密計算

    Arm RAN 加速庫(RAN Acceleration Library, RAL)通過采用 BSD 開源許可證將代碼庫正式開源

    Arm RAN 加速庫(RAN Acceleration Library, RAL)通過采用 BSD 開源許可證將代碼庫正式開源 作為 RAN 軟件中最重要的模塊,Arm RAN 加速庫(RAN
    的頭像 發(fā)表于 07-20 17:31 ?1720次閱讀

    愛立信新一代RAN Compute在網(wǎng)絡(luò)處理能力方面取得重大突破

    愛立信于今日發(fā)布了愛立信RAN Compute產(chǎn)品組合中的最新一代處理器 ,旨在幫助運營商(CSP)充分受益于當(dāng)前與未來的無線接入技術(shù)演進。這些迄今為止最先進的RAN Compute產(chǎn)品采用了愛立信
    的頭像 發(fā)表于 11-15 00:55 ?640次閱讀
    愛立信新一代RAN <b class='flag-5'>Compute</b>在網(wǎng)絡(luò)處理能力方面取得重大突破

    RL78系列 Data Flash Library Type04軟件包3.0版發(fā)布說明

    電子發(fā)燒友網(wǎng)站提供《RL78系列 Data Flash Library Type04軟件包3.0版發(fā)布說明.pdf》資料免費下載
    發(fā)表于 02-19 10:06 ?0次下載
    RL78系列 Data Flash <b class='flag-5'>Library</b> Type04軟件包3.0版<b class='flag-5'>發(fā)布</b>說明