在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

在Arm上使用向量數(shù)學(xué)函數(shù)

jf_9aVl32Dp ? 來(lái)源:Arm軟件開發(fā)者 ? 作者:Arm軟件開發(fā)者 ? 2023-05-28 09:21 ? 次閱讀

作者:Chris Goodyer 2023年5月16日

廣泛工作負(fù)載(包括許多基準(zhǔn)測(cè)試,如SPEC)的性能依賴于基本數(shù)學(xué)例程的有效實(shí)現(xiàn)。這些例程可以通過(guò)矢量化和有效使用SIMD管道來(lái)利用性能。

最近的一篇博客文章(https://community.arm.com/arm-community-blogs/b/high-performance-computing-blog/posts/bringing-wrf-up-to-speed-with-arm-neoverse)描述了如何使用Arm Compiler for LinuxACfL)和Arm performance Library(Arm PL)中提供的SVE子程序來(lái)提高Neoverse V1上天氣預(yù)測(cè)模型的性能。

Arm優(yōu)化的標(biāo)量和向量數(shù)學(xué)例程實(shí)現(xiàn)在Arm軟件/優(yōu)化例程中作為開源軟件公開提供(https://github.com/ARM-software/optimized-routines)。這些實(shí)現(xiàn)被方便地授權(quán),允許用戶在需要時(shí)直接將它們包含在其他項(xiàng)目中。此外,我們還將這些作為預(yù)編譯二進(jìn)制文件發(fā)布,稱為L(zhǎng)ibamath,作為Arm PL和ACfL的一部分。

雖然ACfL能夠通過(guò)自動(dòng)矢量化生成對(duì)矢量數(shù)學(xué)例程的調(diào)用(請(qǐng)參見https://developer.arm.com/documentation/101458/latest/有關(guān)使用“-fsimdmath”編譯器選項(xiàng)的更多詳細(xì)信息,其他編譯器可能還不允許在AArch64上發(fā)生這種情況。然而,將項(xiàng)目鏈接到Arm PL或在禁用自動(dòng)矢量化的情況下使用ACfL構(gòu)建它仍然可以訪問(wèn)矢量數(shù)學(xué)符號(hào)。Libamath隨ACfL提供,但作為單獨(dú)的庫(kù),因此可以通過(guò)添加-lamath將項(xiàng)目鏈接到Libamath。

在這篇文章中,我們強(qiáng)調(diào)了性能可能增加的規(guī)模,詳細(xì)說(shuō)明了精度要求,并詳細(xì)解釋了如何在自己的代碼中直接使用這些函數(shù)。

準(zhǔn)確性和性能

Libamath例程的最大錯(cuò)誤低于4個(gè)ULP,并且僅支持默認(rèn)的舍入模式(舍入到最近,綁定到偶數(shù))。因此,與這些函數(shù)的其他矢量化實(shí)現(xiàn)類似,從libm切換到libamath會(huì)導(dǎo)致一系列例程的少量精度損失。

Neoverse V1系統(tǒng)的預(yù)期性能增益如以下2個(gè)單精度和雙精度例程圖所示。

15601026-fccc-11ed-90ce-dac502259ad0.png

15601026-fccc-11ed-90ce-dac502259ad0.png

命名和調(diào)用約定

Libamath標(biāo)量例程的名稱與libm中使用的名稱相匹配,例如,單精度和雙精度指數(shù)分別稱為expf和exp。

每個(gè)向量例程都在向量ABI名稱下公開。AArch64的向量函數(shù)ABI(https://github.com/ARM-software/abi-aa/blob/2982a9f3b512a5bfdc9e3fea5d3b298f9165c36b/vfabia64/vfabia64.rst#451name-mangling-function)中定義的向量名稱篡改與glibc的向量ABI(https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt)匹配(第2.6節(jié))。

例如,標(biāo)量、Neon和SVE單精度指數(shù)的符號(hào)分別讀作expf、_ZGVnN4v_expf和_ZGVsMxv_expf。

向量ABI 在向量ABI中,向量函數(shù)名被篡改為以下各項(xiàng)的串聯(lián):

'_ZGV' '_'

其中

? :標(biāo)量libm函數(shù)的名稱 ? :Neon為“n”,SVE為“s”

? :“M”表示屏蔽/謂詞版本,“N”表示無(wú)屏蔽。僅為SVE定義屏蔽例程,僅為Neon定義無(wú)屏蔽例程。

? :表示以車道數(shù)表示的矢量長(zhǎng)度的整數(shù)。對(duì)于Neon,雙精度中=‘2’,單精度中=‘4’。對(duì)于SVE,=‘x’。

? :對(duì)于1個(gè)輸入浮點(diǎn)或整數(shù)參數(shù),“v”用于簽名,“vv”用于2個(gè)。有關(guān)更多詳細(xì)信息,請(qǐng)參見AArch64的向量函數(shù)ABI(https://github.com/ARM-software/abi-aa/blob/2982a9f3b512a5bfdc9e3fea5d3b298f9165c36b/vfabia64/vfabia64.rst#451name-mangling-function)。

示例

最新版本23.04開始,Arm Performance Libraries提供了文檔和示例程序,以展示用戶如何直接從其程序中調(diào)用矢量例程,而不依賴于自動(dòng)矢量化。以下代碼片段說(shuō)明了如何調(diào)用Neon雙精度sincos、SVE單精度pow和SVE雙精度erf。

所有標(biāo)量和向量例程的聲明都在頭文件amath.h中提供。

#include 
 
int main(void) {
  // Neon cos and sin (using sincos)
  float64x2_t vx = (float64x2_t){0.0, 0.5};
  double vc[2], vs[2];
  _ZGVnN2vl8l8_sincos(vx, vs, vc);
  
  // SVE math routines
#if defined(__ARM_FEATURE_SVE)
  // single precision pow
  svbool_t pg32 = svptrue_b32();
  svfloat32_t svx = svdup_n_f32(2.0f);
  svfloat32_t svy = svdup_n_f32(3.0f);
  svfloat32_t svz = _ZGVsMxvv_powf(svx, svy, pg32);
 
  // double precision error function
  svbool_t pg64 = svptrue_b64();
  svfloat64_t svw = svdup_n_f64(20.0);
  svfloat64_t sve = _ZGVsMxv_erf(svw, svptrue_b64());
#endif
}

結(jié)論

使用Arm Compiler for Linux時(shí),libamath通過(guò)依賴于編譯器的自動(dòng)矢量化,為這些應(yīng)用程序提供了利用性能的潛力。這提供了所有math.h例程的Arm優(yōu)化Neon和SVE變體。我們的“優(yōu)化例程”(https://github.com/ARM-software/optimized-routines)開源代碼庫(kù)提供了對(duì)更廣泛使用的例程的最新優(yōu)化的訪問(wèn)權(quán)限。這些矢量化算法已經(jīng)用于加速計(jì)算物理、機(jī)器學(xué)習(xí)網(wǎng)絡(luò)等各種應(yīng)用程序中的基本數(shù)學(xué)運(yùn)算。當(dāng)使用這兩種方法之一時(shí),用戶還可以使用上面描述的接口直接從其代碼中調(diào)用這些矢量例程。


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

    關(guān)注

    134

    文章

    9153

    瀏覽量

    368517
  • SPEC
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    15823
  • 數(shù)學(xué)函數(shù)

    關(guān)注

    0

    文章

    9

    瀏覽量

    6364

原文標(biāo)題:在Arm上使用向量數(shù)學(xué)函數(shù)

文章出處:【微信號(hào):Arm軟件開發(fā)者,微信公眾號(hào):Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB常用的基本數(shù)學(xué)函數(shù)

    matlab! MATLAB常用的基本數(shù)學(xué)函數(shù) abs(x):純量的絕對(duì)值或向量的長(zhǎng)度angle(z):復(fù)數(shù)z的相角(Phase angle)sqrt(x):開平方real(z):復(fù)數(shù)z的實(shí)部
    發(fā)表于 03-11 23:34

    XC32函數(shù)向量x到大

    用它時(shí),鏈接器就抱怨VEC。Tor函數(shù)是大的。我缺少什么?向量間距由啟動(dòng)代碼設(shè)置為8,MVEC啟用。我使用下面的ISR C代碼:下面的程序集:這是鏈接器的輸出:XC32-L.E.EX:異常
    發(fā)表于 10-26 16:09

    學(xué)習(xí)DSP庫(kù)的基本數(shù)學(xué)函數(shù)

    第11章 DSP基礎(chǔ)函數(shù)-絕對(duì)值,求和,乘法和點(diǎn)乘本期教程開始學(xué)習(xí)ARM官方的DSP庫(kù),這里我們先從基本數(shù)學(xué)函數(shù)開始。本期教程主要講絕對(duì)值,加法,點(diǎn)乘和乘法四種運(yùn)算。目錄第11章 DS
    發(fā)表于 08-17 07:13

    基于支持向量機(jī)的預(yù)測(cè)函數(shù)控制

    基于支持向量機(jī)的預(yù)測(cè)函數(shù)控制 Predictive Functional Control Based on Support Vector Machine
    發(fā)表于 03-17 09:24 ?21次下載

    基于先驗(yàn)知識(shí)的支持向量機(jī)圖像分割中的應(yīng)用

    文中研究現(xiàn)有先驗(yàn)知識(shí)與支持向量機(jī)融合的基礎(chǔ),針對(duì)置信度函數(shù)憑經(jīng)驗(yàn)給出的不足,提出了一種確定置信度函數(shù)方法,更好地進(jìn)行分類。該方法是建立
    發(fā)表于 07-16 17:02 ?39次下載

    雙目標(biāo)函數(shù)支持向量機(jī)情感分析中的應(yīng)用

    雙目標(biāo)函數(shù)支持向量機(jī)情感分析中的應(yīng)用_劉春雨
    發(fā)表于 01-03 17:41 ?0次下載

    組合核函數(shù)多支持向量機(jī)的直線電機(jī)建模

    組合核函數(shù)多支持向量機(jī)的直線電機(jī)建模_趙吉文
    發(fā)表于 01-07 17:16 ?1次下載

    大數(shù)據(jù)中邊界向量調(diào)節(jié)熵函數(shù)支持向量機(jī)研究

    大數(shù)據(jù)中邊界向量調(diào)節(jié)熵函數(shù)支持向量機(jī)研究_林蔚
    發(fā)表于 01-07 19:08 ?0次下載

    發(fā)掘函數(shù)級(jí)單指令多數(shù)據(jù)向量化的方法

    當(dāng)前面向單指令多數(shù)據(jù)( SIMD)擴(kuò)展部件的兩類向量化方法分別是循環(huán)級(jí)向量化方法和超字級(jí)并行(SLP)方法。針對(duì)當(dāng)前編譯器不能實(shí)現(xiàn)函數(shù)級(jí)向量化的問(wèn)題,提出一種基于靜態(tài)單賦值的
    發(fā)表于 11-29 16:08 ?0次下載
    發(fā)掘<b class='flag-5'>函數(shù)</b>級(jí)單指令多數(shù)據(jù)<b class='flag-5'>向量</b>化的方法

    基于申威26010處理器的擴(kuò)展函數(shù)庫(kù)實(shí)現(xiàn)與優(yōu)化

    Intel.AMD和IBM都具有針對(duì)自身特點(diǎn)的向量擴(kuò)展庫(kù)。相比于傳統(tǒng)的標(biāo)量計(jì)算,向量化技術(shù)帶來(lái)的加速比較高。為此,針對(duì)申威26010處理器開發(fā)向量數(shù)學(xué)庫(kù)軟件。
    發(fā)表于 03-01 15:41 ?2次下載
    基于申威26010處理器的擴(kuò)展<b class='flag-5'>函數(shù)</b>庫(kù)實(shí)現(xiàn)與優(yōu)化

    簡(jiǎn)單的數(shù)學(xué)運(yùn)算計(jì)算數(shù)學(xué)函數(shù)的方法CORDIC的詳細(xì)資料概述

    CORDIC是一個(gè)稱為二進(jìn)制搜索的循環(huán)中使用更簡(jiǎn)單的數(shù)學(xué)運(yùn)算來(lái)計(jì)算數(shù)學(xué)函數(shù)的方法。最常用的CORDIC用于計(jì)算AtAN2(角度)和點(diǎn)的斜邊(距離)。CORDIC還可以用來(lái)計(jì)算其他
    發(fā)表于 05-31 11:18 ?12次下載
    簡(jiǎn)單的<b class='flag-5'>數(shù)學(xué)運(yùn)算計(jì)算數(shù)學(xué)</b><b class='flag-5'>函數(shù)</b>的方法CORDIC的詳細(xì)資料概述

    如何理解ARM異常、中斷和向量

    以前,我一直很疑惑這個(gè)“ ARM異常 、 中斷以 及他們的 向量表 ”是怎么回事,他們到底是怎么實(shí)現(xiàn)的,沒(méi)有想到今天偶然看到(ARM System Developers Guide
    發(fā)表于 06-14 10:34 ?4336次閱讀
    如何理解<b class='flag-5'>ARM</b>異常、中斷和<b class='flag-5'>向量</b>表

    使用英特爾數(shù)學(xué)核心函數(shù)庫(kù)優(yōu)化三重嵌套循環(huán)矩陣乘法

    我們使用英特爾?數(shù)學(xué)核心函數(shù)庫(kù)(MKL)Linux *優(yōu)化了三重嵌套循環(huán)矩陣乘法的版本。
    的頭像 發(fā)表于 11-07 06:04 ?3632次閱讀

    支持向量機(jī)(核函數(shù)的定義)

    根據(jù)機(jī)器學(xué)習(xí)相關(guān)介紹(10)——支持向量機(jī)(低維到高維的映射),支持向量機(jī)可通過(guò)引入φ(x)函數(shù),將低維線性不可分問(wèn)題轉(zhuǎn)換為高維線性可分問(wèn)題。
    的頭像 發(fā)表于 05-20 10:41 ?859次閱讀
    支持<b class='flag-5'>向量</b>機(jī)(核<b class='flag-5'>函數(shù)</b>的定義)

    計(jì)算數(shù)學(xué)中的函數(shù)迭代介紹

    函數(shù)迭代是數(shù)學(xué)中一個(gè)非常重要和有趣的主題,它在不同的領(lǐng)域有著不同的應(yīng)用和著眼點(diǎn)。動(dòng)力系統(tǒng)中,函數(shù)迭代可以揭示復(fù)雜系統(tǒng)的演化規(guī)律和混沌現(xiàn)象;
    的頭像 發(fā)表于 08-30 10:11 ?1421次閱讀
    計(jì)算<b class='flag-5'>數(shù)學(xué)</b>中的<b class='flag-5'>函數(shù)</b>迭代介紹
    主站蜘蛛池模板: ww欧洲ww在线视频免费观看| 一级片免费在线观看| 婷婷开心激情网| 亚洲精品在线不卡| 新激情五月| 色老成人精品视频在线观看| 欧洲freexxxx性| 来啊mm影院亚洲mm影院| 国产三级日产三级日本三级| 爱爱小说视频永久免费网站| 午夜精品在线观看| 久久精品乱子伦免费| 午夜视频啪啪| 美女露出尿口让男人桶爽网站| 最新国产在线播放| 四虎国产精品4hu永久| 欧美色一级| 精品欧美一区二区三区| 波多野结衣在线免费视频| 天天干天天曰天天操| 在线欧美激情| 美女扒开尿口给男人爽免费视频| 亚洲丰满熟妇毛片在线播放| 欧美一区二区三区四区视频| 国产精品伦子一区二区三区| 天天综合色天天综合| fenfencao在线观看免费视频| 亚洲卡一卡2卡三卡4卡国色| 亚洲欧美色视频| 你懂的免费| 躁天天躁中文字幕在线| 可以免费看黄色的网站| 欧美色穴| 一个色在线| 免费观看色| 一级视频在线| 在线看黄色的网站| 一级毛片一级黄片| 毛片一级黄色| 天天搞夜夜| 69女poren16|