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

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

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

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

開源隨機數(shù)生成器庫OpenRNG助力實現(xiàn)移植到Arm平臺時的最佳性能

Arm社區(qū) ? 來源:Arm ? 2025-02-08 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:Arm 工程部資深軟件工程師 Kevin Mooney

OpenRNG 是一個開源隨機數(shù)生成器 (RNG) 庫,最初隨 Arm Performance Libraries 24.04 一同發(fā)布。OpenRNG 旨在提升人工智能 (AI) 框架性能,有助于科學應用及金融軟件的開發(fā),因而廣受歡迎。而在去年晚些時候,Arm 推出了 OpenRNG 的首個開源版本。

OpenRNG 可直接替代英特爾矢量統(tǒng)計庫 (Vector Statistics Library, VSL) 的隨機數(shù)生成組件,開發(fā)者從而能夠更輕松地將應用移植到 Arm 平臺。VSL 是 OneMKL 的一部分,專為 x86 架構(gòu)處理器而設(shè)計。OpenRNG 有助于提升性能,例如與 Arm 平臺上已有實現(xiàn)相比,OpenRNG 僅需很少的代碼改動,就使 PyTorch 的 Dropout 層的性能提高了 44 倍。OpenRNG 的性能也較 C++ 標準庫提高了 2.7 倍。

雖然起初的優(yōu)化是針對基于 Arm 架構(gòu)的系統(tǒng),但我們的目標是將 OpenRNG 發(fā)展成為跨平臺項目,因此我們歡迎針對任何架構(gòu)的補丁。

英特爾按照知識共享許可協(xié)議向我們開放了這個接口。該許可協(xié)議使我們能夠為基于 Arm 架構(gòu)系統(tǒng)的用戶實現(xiàn)這一功能,從而在不修改代碼的情況下實現(xiàn)不同架構(gòu)之間軟件的可移植性。

源代碼現(xiàn)已公開在 Arm 的 GitLab 上,可查閱 Arm Performance Libraries 參考指南獲取相關(guān)信息。

隨機數(shù)為什么實用

隨機數(shù)在各種應用中都非常重要,可用于模擬本質(zhì)上不可預測的自然過程。例如,在物理學中,隨機數(shù)常用于建立隨機模型,模擬確定性模型無法解決的問題;在金融領(lǐng)域,隨機數(shù)常用于模擬金融市場;在游戲中則常用于實現(xiàn) AI。

物理過程和金融市場錯綜復雜,涉及很多輸入,不可能進行完全的理解、建模和預測。而一些輸入被視為隨機變量,需要快速、可重復地生成;銀行在計算風險敞口時,不應該因為重新運行相同的模型得到不同的隨機數(shù)而發(fā)生變化。

為游戲開發(fā) AI 時,行為動作應是不可預測的,因此要引入隨機性。隨機數(shù)生成的速度越快,同時生成的 AI 就越多。同樣,多人游戲需要在多臺設(shè)備上生成相同的隨機數(shù)。不同玩家應該在同一個位置看到敵人,隨機性很重要。

庫里有什么?

OpenRNG 實現(xiàn)了多種生成器和分布方式。生成器算法可生成“看似隨機”并具有某些統(tǒng)計特性的序列,我們將在下文進行討論。分布方式會將序列映射到常見的概率分布概念,如高斯分布或二項分布。

OpenRNG 還提供復制和保存序列的工具,以及在不同線程間分發(fā)序列的工具。這些工具可實現(xiàn)高效的多線程處理和檢查點等功能。

隨機數(shù)生成器

OpenRNG 實現(xiàn)了三種類型的隨機數(shù)生成器:偽隨機數(shù)生成器、準隨機數(shù)生成器、非確定性隨機數(shù)生成器。

偽隨機數(shù)生成器 (PRNG) 算法生成的數(shù)字序列在統(tǒng)計學上看似隨機,但卻能重復生成。PRNG 通常能通過很多隨機性統(tǒng)計測試,但一旦知道當前序列中的位置,就能確定下一個數(shù)字;這就是我們說它看似隨機的原因。OpenRNG 采用了多種類型的 PRNG,如線性同余生成器 (LCG)、多重遞歸生成器 (MRG)、梅森旋轉(zhuǎn)算法(如 MT19937)和基于計數(shù)器的生成器(如 Philox)。

準隨機數(shù)生成器 (QRNG) 的算法可生成低差異序列。該類工具無法通過隨機性統(tǒng)計測試,但能生成在 n 維超立方體上均勻分布的 n 維向量,從而均勻地填充空間。OpenRNG 提供用于生成低差異序列的 SOBOL 生成器。

大多數(shù)現(xiàn)代硬件都配備了非確定性隨機數(shù)生成器,也稱真隨機數(shù)生成器 (TRNG),OpenRNG 為這些生成器提供了一個接口,以便開發(fā)者訪問。TRNG 可以提供高質(zhì)量隨機數(shù),其序列來自于外部。TRNG 通常比 PRNG 速度慢,且序列不可再現(xiàn)。

我們盡力確保使用的生成器和初始化方式與 oneMKL 文檔中定義的相同。這意味著,在可能的情況下,OpenRNG 和 oneMKL 之間的序列可以按位替換。

概率分布

除了實現(xiàn) RNG 之外,OpenRNG 還提供了將隨機序列轉(zhuǎn)換為常見概率分布的便捷方法。OpenRNG 可以生成具有常見概率分布(離散和連續(xù))的隨機數(shù)。

連續(xù)分布是實數(shù)的概率分布,例如 0 和 1 之間的可表示小數(shù)。連續(xù)分布可以請求為單精度或雙精度浮點數(shù)。OpenRNG 支持多種連續(xù)分布,包括均勻分布、高斯分布和指數(shù)分布。

離散分布是僅限于整數(shù)的概率分布。OpenRNG 采用了常見的離散分布,如均勻分布、泊松分布、二項分布和伯努利分布。

OpenRNG 分布生成的確切值可能與 oneMKL 的值略有不同,因為兩個庫之間各種操作的精度不同。

高效多線程

很多應用都需要生成長序列的隨機數(shù)。多線程運行時,擁有不同的獨立序列非常重要。OpenRNG 有兩種不同的方法可供選擇:跳過和跳躍。

跳過法讓序列跳過一定數(shù)量的元素。此時效率至關(guān)重要,這種方法可以跳過很多元素,例如 2 的 32 次方的倍數(shù),單獨生成這些元素會產(chǎn)生大量不必要的開銷。

跳躍法適用于線程交錯消耗元素的情況。例如,在有 n 個線程的情況下,第 k 個線程從“全局”序列的第 k 個元素開始,則該線程序列中的第 i 個元素就是“全局”序列的第 (k + i*n) 個元素。

性能

C++ 標準庫

C++ 標準庫提供三種類型的生成器:線性同余生成器、梅森旋轉(zhuǎn)算法生成器和帶進位減法生成器。OpenRNG 未采用帶進位減法生成器,而是采用了線性同余生成器和梅森旋轉(zhuǎn)算法,只需稍加配置,我們就能比較 OpenRNG 和 C++ 標準庫中的 MCG31 和 MT19937 實現(xiàn)情況。C++ 標準庫和 OpenRNG 包含多種常見分布,我們選擇了兩種廣泛使用的分布,即均勻分布和高斯分布(也稱正態(tài)分布)。

下圖展示了 AWS Graviton3 上使用 GCC 14 和 -O3 的基準數(shù)據(jù)。基準測試包括重復填充一個包含 5,000 個元素的緩沖區(qū),并計算每個庫在熱點循環(huán)中花費的總時間的比例。我們對所選生成器和分布的所有組合重復執(zhí)行了基準測試。

對于均勻分布,大部分運行時間都用于生成隨機序列。組合使用 MCG31 生成器與均勻分布實現(xiàn)了更大地提速比,比率高達 2.73。

對于高斯分布,大部分運行時間都用于將隨機序列轉(zhuǎn)換為高斯分布。與 libstdc++ 相比,使用 MT19937 生成器的最大提速比為 1.88。

df6d3b5c-e53a-11ef-9310-92fbcf53809c.png

柱狀圖展示了 OpenRNG 相較于 C++ 標準庫的性能優(yōu)勢。每個柱形的高度是使用兩個庫生成隨機數(shù)所花時間的比率。大于 1 表示 OpenRNG 的速度更快。

PyTorch

下圖顯示了在 Arm 平臺上使用 VSL RNG 進行 PyTorch 機器學習 (ML) 獲得的優(yōu)勢。PyTorch 可以配置為在 Dropout 層使用 OpenRNG 的 VSL RNG,從伯努利分布中提取隨機值。例如,當批次大小為 16,輸入張量為 [16, 128, 3072] 時,與使用 PyTorch 中的默認 RNG 相比,順序執(zhí)行時性能提高了四倍。此外,當啟用 VSL 接口時,PyTorch 會使用跳過法來并行生成隨機值。如果不使用 VSL,隨機值始終是按順序生成的,沒有并行。使用 16 個線程為輸入張量 [16, 128, 3072] 實現(xiàn)并行處理可以進一步提高性能,在 Dropout 層中使用 OpenRNG 的速度比默認的速度快 44 倍左右。

df7cf092-e53a-11ef-9310-92fbcf53809c.png

柱狀圖展示了結(jié)合 OpenRNG 與 PyTorch 的性能優(yōu)勢。每個柱形的高度表示平均耗時。配置速度越快,高度越低。

歡迎提供補丁

我們很高興能發(fā)布 OpenRNG 并涵蓋了 VSL 的大部分功能,但仍有一些領(lǐng)域需進一步開發(fā)。目前某些功能還未實現(xiàn)。此外,目前所有的優(yōu)化都專門針對基于 Arm 架構(gòu)的系統(tǒng)。我們希望 OpenRNG 能成為一個跨平臺項目,因此我們歡迎針對任何架構(gòu)的新參考實現(xiàn)和性能優(yōu)化補丁。如果你想提交自己的開發(fā)工作、報告錯誤、提交功能請求或其他任何事項,請在 GitLab 上提出問題并與我們聯(lián)系。

Arm Performance Libraries 未來將繼續(xù)包含 OpenRNG,并在 GitLab 中標記發(fā)布的代碼。OpenRNG 倉庫將保持開放,以供開發(fā)者使用。GitLab 上有貢獻指南。我們已盡力確保 OpenRNG 采用 MIT 和 Apache-2.0 技術(shù)授權(quán)許可,讓用戶可以將源代碼添加到自己的項目中,而不會受到繁瑣的限制。

相關(guān)鏈接:

[1]Arm GitLab:https://gitlab.arm.com/libraries/openrng

[2] Arm Performance Libraries 參考指南:

https://developer.arm.com/documentation/101004/2404/Open-Random-Number-Generation--OpenRNG--Reference-Guide

[3] Arm GitLab 提問頁面:

https://gitlab.arm.com/libraries/openrng/issues

[4]貢獻指南:

https://gitlab.arm.com/libraries/openrng/-/blob/main/CONTRIBUTING.md

* Arm 原創(chuàng)文章

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

    關(guān)注

    134

    文章

    9340

    瀏覽量

    376188
  • 生成器
    +關(guān)注

    關(guān)注

    7

    文章

    322

    瀏覽量

    21790

原文標題:利用隨機數(shù)生成器庫 OpenRNG,實現(xiàn)移植到 Arm 平臺時的最佳性能

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    labview怎么輸出不重復的整數(shù)隨機數(shù)

    大佬們我想問一下怎么能夠生成不重復的隨機數(shù),labview能夠輸出整數(shù)隨機數(shù)
    發(fā)表于 04-16 11:15

    “Quantum Origin”成首個獲NIST驗證的軟件量子隨機數(shù)生成器

    -Quantinuum的“Quantum Origin”成為首個通過NIST驗證的軟件量子隨機數(shù)生成器 Quantum Origin獲得NIST SP 800-90B對其驗證熵源的批準 增強了聯(lián)邦
    的頭像 發(fā)表于 04-03 15:22 ?290次閱讀

    深度解析SSD2351核心板:硬核視頻處理+工業(yè)級可靠性設(shè)計

    ,郵票孔間距0.98mm; 環(huán)境適應性 :通過72小時高低溫循環(huán)測試(-40℃~+85℃),支持寬溫運行; 安全認證 :內(nèi)置FIPS 140-1標準隨機數(shù)生成器,支持SM2/SM3/SM4國密算法。 典型
    發(fā)表于 02-21 17:19

    Python中的迭代器與生成器

    Python迭代器與生成器 列表生成式 列表生成式也叫做列表推導式,它本身還是列表,只不過它是根據(jù)我們定義的規(guī)則來生成一個真實的列表。 ? ? list2 = [x for x in
    的頭像 發(fā)表于 02-20 10:43 ?361次閱讀

    超詳細!FMU生成器用戶手冊來啦~

    FMU生成器是TSMaster中用于將模型打包生成FMU文件的一個工具,目前支持FMI3.0和FMI2.0版本,F(xiàn)MU類型僅支持Co-Simulation(CS),即聯(lián)合仿真FMU。本文將介紹FMU
    的頭像 發(fā)表于 01-17 20:02 ?857次閱讀
    超詳細!FMU<b class='flag-5'>生成器</b>用戶手冊來啦~

    EE-322:面向SHARC處理器的專家代碼生成器

    電子發(fā)燒友網(wǎng)站提供《EE-322:面向SHARC處理器的專家代碼生成器.pdf》資料免費下載
    發(fā)表于 01-07 14:04 ?0次下載
    EE-322:面向SHARC處理器的專家代碼<b class='flag-5'>生成器</b>

    問天量子和方寸微電子聯(lián)合發(fā)布量子隨機數(shù)芯片

    近日,國家密碼管理局商用密碼檢測中心出具報告,問天量子和方寸微電子聯(lián)合自主研發(fā)的WT-QRNG300量子隨機數(shù)芯片通過檢測,這是國內(nèi)首家官方商密報告認定、且已實現(xiàn)商用量產(chǎn)及產(chǎn)業(yè)化的“量子隨機數(shù)芯片”產(chǎn)品。
    的頭像 發(fā)表于 12-19 16:18 ?891次閱讀

    LuatOS開發(fā)之4G模組隨機數(shù)(random)|實戰(zhàn)指南

    本次學習的實戰(zhàn)是關(guān)于4G模組LuatOS開發(fā)的隨機數(shù)示例指南,希望大家有所收獲。
    的頭像 發(fā)表于 11-30 09:51 ?684次閱讀
    LuatOS開發(fā)之4G模組<b class='flag-5'>隨機數(shù)</b>(random)|實戰(zhàn)指南

    解析Air780E模組LuatOS開發(fā)的隨機數(shù)(random) 示例篇

    本文主要解析的是低功耗4G模組Air780E的LuatOS開發(fā)隨機數(shù)(random)實例,我以整理成文分享給大家。
    的頭像 發(fā)表于 11-29 20:23 ?528次閱讀
    解析Air780E模組LuatOS開發(fā)的<b class='flag-5'>隨機數(shù)</b>(random) 示例篇

    藍牙AES+RNG如何保障物聯(lián)網(wǎng)信息安全

    功能可通過軟件實現(xiàn),也可以通過硬件實現(xiàn)。主要優(yōu)勢體現(xiàn)在:在保障通信安全方面,隨機數(shù)生成器能夠輸出非重復且隨機變化的數(shù)值。這些數(shù)值是構(gòu)建多種安
    發(fā)表于 11-08 15:38

    使用C2000?嵌入式模式生成器(EPG)進行設(shè)計

    電子發(fā)燒友網(wǎng)站提供《使用C2000?嵌入式模式生成器(EPG)進行設(shè)計.pdf》資料免費下載
    發(fā)表于 09-14 10:13 ?1次下載
    使用C2000?嵌入式模式<b class='flag-5'>生成器</b>(EPG)進行設(shè)計

    使用Arm KleidiCV開源加速圖像處理性能

    針對 Arm CPU 優(yōu)化的性能關(guān)鍵型例程的開源。該軟件專為集成各種計算機視覺框架而設(shè)計,
    的頭像 發(fā)表于 09-03 11:32 ?2544次閱讀
    使用<b class='flag-5'>Arm</b> KleidiCV<b class='flag-5'>開源</b><b class='flag-5'>庫</b>加速圖像處理<b class='flag-5'>性能</b>

    Freepik攜手Magnific AI推出AI圖像生成器

    近日,設(shè)計資源巨頭Freepik攜手Magnific AI,共同推出了革命性的AI圖像生成器——Freepik Mystic,這一里程碑式的發(fā)布標志著AI圖像創(chuàng)作領(lǐng)域邁入了一個全新的高度
    的頭像 發(fā)表于 08-30 16:23 ?1553次閱讀

    雅特力AT32 MCU的隨機數(shù)生成

    概述產(chǎn)品和生態(tài)系統(tǒng)安全性的需求比以往任何時候都更加重要。真隨機數(shù)是所有安全系統(tǒng)的核心,其質(zhì)量會影響設(shè)計的安全性。因此在沒有內(nèi)置硬件TRNG的AT32的微控制器系列中,如何提高隨機數(shù)的有效,來符合
    的頭像 發(fā)表于 08-30 12:26 ?1220次閱讀
    雅特力AT32 MCU的<b class='flag-5'>隨機數(shù)</b><b class='flag-5'>生成</b>

    如何在FPGA中實現(xiàn)隨機數(shù)發(fā)生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中實現(xiàn)4位偽隨機數(shù)發(fā)生器(PRNGs)。
    的頭像 發(fā)表于 08-06 11:20 ?1152次閱讀
    如何在FPGA中<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>隨機數(shù)</b>發(fā)生器
    主站蜘蛛池模板: 国产成人高清一区二区私人 | 免费看黄色毛片 | 天堂视频网 | 日韩a级毛片 | 性xxxxbbbb在线| 国产精品免费观看网站 | 性夜黄a爽爽免费视频国产 羞羞答答xxdd影院欧美 | 1024免费看片 | 欧美作爱福利免费观看视频 | 777影院| 日韩美女奶水喂男人在线观看 | 色网站免费看 | 亚洲无线码一区在线观看 | 流不尽奶水的大乳h | 久久久久久久国产免费看 | 美女天天操 | 最新午夜宅男 | 91在线激情在线观看 | 性欧美欧美 | 花怜write. as| 国产午夜精品理论片久久影视 | 大又大粗又爽又黄少妇毛片 | 黄色大片视频 | 色88888久久久久久影院 | 午夜免费福利影院 | 天天摸天天摸天天躁 | 国产美女视频爽爽爽 | 永久免费影视在线观看 | 欧美一级片在线视频 | 一区卡二区卡三区卡视频 | 五月婷婷婷 | 美女和美女 | 老司机成人精品视频lsj | 极品美女写真菠萝蜜视频 | 伊人黄色网 | 奇米欧美 | 中国女人a毛片免费全部播放 | 黄 色 录像成 人播放免费 | 影音先锋 色天使 | 亚洲一级特黄 | 日本污污视频 |