国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

重大性能更新:Wasm 后端將利用 SIMD指令和 XNNPACK多線程

Tensorflowers ? 來(lái)源:TensorFlow ? 作者:TensorFlow ? 2020-09-30 15:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

3 月,我們?yōu)?TensorFlow.js 推出了一個(gè)新的 WebAssembly(Wasm) 加速后端(繼續(xù)閱讀以進(jìn)一步了解 Wasm 及其重要性)。今天,我們很高興宣布一項(xiàng)重大性能更新:自 TensorFlow.js 版本 2.3.0 起,我們的 Wasm 后端將利用 SIMD(向量)指令和 XNNPACK(一種高度優(yōu)化的神經(jīng)網(wǎng)絡(luò)算子庫(kù))多線程實(shí)現(xiàn) 10 倍提速。

SIMD(向量)指令
https://github.com/WebAssembly/simd

XNNPACK
https://github.com/google/XNNPACK

多線程
https://github.com/WebAssembly/threads

基準(zhǔn)

SIMD 和多線程為我們的 Wasm 后端帶來(lái)重大性能提升。BlazeFace是擁有 10 萬(wàn)個(gè)參數(shù)和大約 2000 萬(wàn)次乘加運(yùn)算的輕型模型。以下是在 Google Chrome 瀏覽器中演示了 BlazeFace 的性能評(píng)測(cè):

(所列時(shí)間為每次推理的毫秒數(shù))

對(duì)于更大的模型,如擁有 350 萬(wàn)個(gè)參數(shù)和大約 3 億次乘加運(yùn)算的中型模型 MobileNet V2,加速效果會(huì)更加明顯:

MobileNet V2
https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/classification/2

*注:由于移動(dòng)瀏覽器中的多線程支持仍在開(kāi)發(fā)中,因此 Pixel 4 無(wú)法使用 TF.js 多線程 Wasm 后端基準(zhǔn)。iOS 中的 SIMD 支持也仍處于開(kāi)發(fā)階段。

移動(dòng)瀏覽器中的多線程支持仍在開(kāi)發(fā)中
https://www.chromestatus.com/feature/5724132452859904

**注:我們即將推出 TF.js 多線程 Wasm 后端的節(jié)點(diǎn)支持。

SIMD 和多線程帶來(lái)的性能提升彼此獨(dú)立。這些基準(zhǔn)表明,SIMD 將標(biāo)準(zhǔn) Wasm 的性能提高了 1.7-4.5 倍,而多線程在此基礎(chǔ)上又帶來(lái)了 1.8-2.9 倍的速度提升。

用法

SIMD 從 TensorFlow.js 2.1.0 開(kāi)始得到支持,多線程從 TensorFlow.js 2.3.0 開(kāi)始得到支持。

在 運(yùn)行時(shí) (Runtime),我們測(cè)試 SIMD 和多線程支持并提供適當(dāng)?shù)?Wasm 二進(jìn)制文件。今天,我們?yōu)橐韵旅糠N情況提供不同的二進(jìn)制文件:

默認(rèn):運(yùn)行時(shí)不支持 SIMD 或多線程

SIMD:運(yùn)行時(shí)支持 SIMD,但不支持多線程

SIMD + 多線程:運(yùn)行時(shí)支持 SIMD 和多線程

由于大多數(shù)支持多線程的運(yùn)行時(shí)也會(huì)支持 SIMD,因此我們決定忽略僅支持多線程的運(yùn)行時(shí),縮減軟件包的大小。如果您的運(yùn)行時(shí)支持多線程而不支持 SIMD,您將獲得默認(rèn)的二進(jìn)制文件。您可以通過(guò)兩種方式使用 Wasm 后端:

1. 通過(guò) NPM

// Import @tensorflow/tfjs or @tensorflow/tfjs-core const tf = require('@tensorflow/tfjs'); // Add the WAsm backend to the global backend registry. require('@tensorflow/tfjs-backend-wasm'); // Set the backend to WAsm and wait for the module to be ready. tf.setBackend('wasm').then(() => main());

此庫(kù)預(yù)期 Wasm 二進(jìn)制文件相對(duì)于主 JS 文件定位。如果您使用的是 Parcel 或 Webpack 等打包工具,則可能需要使用我們的 setWasmPaths 幫助程序手動(dòng)指示 Wasm 二進(jìn)制文件的位置:

import {setWasmPaths} from '@tensorflow/tfjs-backend-wasm'; setWasmPaths(yourCustomFolder);tf.setBackend('wasm').then(() => {...});

請(qǐng)參閱我們 README 上的“使用打包工具”部分了解詳情。

使用打包工具
https://github.com/tensorflow/tfjs/tree/master/tfjs-backend-wasm#using-bundlers

2. 通過(guò)腳本標(biāo)記

注:TensorFlow.js 為每個(gè)后端定義一個(gè)優(yōu)先級(jí),并將針對(duì)給定環(huán)境條件自動(dòng)選擇最受支持的后端。現(xiàn)在,WebGL 具有最高優(yōu)先級(jí),其次是 Wasm,然后是普通 JS 后端。要始終使用 Wasm 后端,我們需要顯式調(diào)用 tf.setBackend(‘wasm’)。

演示

要實(shí)際感受性能提升,可以來(lái)看看我們的 BlazeFace 模型演示。該模型已更新為使用新的 Wasm 后端:https://tfjs-wasm-simd-demo.netlify.app/。要與未優(yōu)化的二進(jìn)制文件進(jìn)行比較,請(qǐng)?jiān)囋嚧税姹狙菔荆梢允謩?dòng)關(guān)閉 SIMD 和多線程支持。

此版本演示
https://storage.googleapis.com/tfjs-models/demos/blazeface/index.html?tfjsflags=WASM_HAS_MULTITHREAD_SUPPORT:false,WASM_HAS_SIMD_SUPPORT:false

什么是 Wasm?

WebAssembly (Wasm) 是一種跨瀏覽器的二進(jìn)制文件格式,為網(wǎng)絡(luò)帶來(lái)了接近原生的代碼執(zhí)行速度。Wasm 可以作為 C、C++、Go 和 Rust 等靜態(tài)類型高級(jí)語(yǔ)言所編寫程序的編譯目標(biāo)。在 TensorFlow.js 中,我們使用 C++ 實(shí)現(xiàn) Wasm 后端,并使用 Emscripten 編譯。XNNPACK 庫(kù)在下方提供了神經(jīng)網(wǎng)絡(luò)算子的高度優(yōu)化實(shí)現(xiàn)。

自 2017 年以來(lái),Wasm 已獲得 Chrome、Safari、Firefox 和 Edge 的支持,并已得到全球 90% 設(shè)備的支持。

WebAssembly 規(guī)范發(fā)展迅速,瀏覽器正在盡全力支持越來(lái)越多的實(shí)驗(yàn)性功能。您可以訪問(wèn)此網(wǎng)站查看您的運(yùn)行時(shí)支持哪些功能,包括:

1. SIMD
SIMD 代表 Single Instruction, Multiple Data,這意味著 SIMD 指令是在固定大小的小元素向量而不是各個(gè)標(biāo)量上進(jìn)行運(yùn)算。Wasm SIMD 提案使現(xiàn)代處理器支持的 SIMD 指令可以在網(wǎng)絡(luò)瀏覽器內(nèi)使用,達(dá)成顯著的性能提升。

Wasm SIMD 是一個(gè)第 3 期提案,通過(guò) Chrome 84-86 中的初始試用提供。這意味著開(kāi)發(fā)者可以在網(wǎng)站上選擇使用 Wasm SIMD,讓所有訪問(wèn)者直接獲益,而無(wú)需在瀏覽器設(shè)置中明確啟用該功能。除了 Google Chrome,F(xiàn)irefox Nightly 也默認(rèn)支持 Wasm SIMD。

第 3 期
https://github.com/WebAssembly/meetings/blob/master/process/phases.md#3-implementation-phase-community--working-group

初始試用
https://developers.chrome.com/origintrials/#/view_trial/-4708513410415853567

2. 多線程
幾乎所有現(xiàn)代處理器都有多個(gè)核心,每個(gè)核心都能獨(dú)立并發(fā)地執(zhí)行指令。WebAssembly 程序可以通過(guò)線程提案將工作分布到不同核心,進(jìn)而提高性能。這個(gè)提案允許多個(gè) Wasm 實(shí)例在不同的 Web 工作者中共享一個(gè) WebAssembly.Memory 對(duì)象,實(shí)現(xiàn)工作進(jìn)程之間的快速通信

線程提案
https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md

WebAssembly.Memory
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory

Wasm 線程是第 2 期提案,已在桌面版 Chrome 中自 74 版起默認(rèn)可用。為了在移動(dòng)設(shè)備實(shí)現(xiàn)這一功能,跨瀏覽器的開(kāi)發(fā)工作也已開(kāi)始。

第 2 期
https://github.com/WebAssembly/proposals/issues/14

桌面版 Chrome
https://www.chromestatus.com/feature/5724132452859904

WebAssembly 路線圖顯示了支持 SIMD、線程和其他實(shí)驗(yàn)功能的瀏覽器。

路線圖
https://webassembly.org/roadmap/

其他改進(jìn)

自從 3 月 Wasm 后端的首次發(fā)布,我們已經(jīng)擴(kuò)大了算子的覆蓋范圍,現(xiàn)在支持超過(guò) 70 種算子。許多新的算子都是通過(guò) XNNPACK 庫(kù)加速,并解鎖了對(duì)額外模型的支持,比如 HandPose 模型。

HandPose
https://github.com/tensorflow/tfjs-models/tree/master/handpose

展望未來(lái)

我們希望不斷提高 Wasm 后端的性能。我們正在密切關(guān)注 WebAssembly 中不斷發(fā)展的規(guī)范,包括用于更廣泛 SIMD 的靈活向量,準(zhǔn)融合乘加,以及偽最小和最大指令。我們也期待著 ES6 模塊對(duì) WebAssembly 模塊的支持。與 SIMD 和多線程一樣,我們打算在這些功能可用時(shí)充分加以利用,而不影響 TF.js 用戶代碼。

靈活向量
https://github.com/WebAssembly/flexible-vectors

準(zhǔn)融合乘加
https://github.com/WebAssembly/simd/pull/79

偽最小和最大指令
https://github.com/WebAssembly/simd/pull/122

ES6 模塊
https://github.com/WebAssembly/esm-integration

更多信息

查看 WebAssembly 路線圖
https://webassembly.org/roadmap/

關(guān)注 Wasm 規(guī)范的進(jìn)展

https://github.com/WebAssembly/spec

詳細(xì)了解 Wasm SIMD 提案

https://github.com/WebAssembly/simd

詳細(xì)了解 Wasm 線程提案
https://github.com/WebAssembly/threads

通過(guò) GitHub 上提 issue 和 PR 提交反饋和貢獻(xiàn)
https://github.com/tensorflow/tfjs/issues/new
https://github.com/tensorflow/tfjs/pulls

加入 TensorFlow.js 社區(qū)論壇了解產(chǎn)品更新信息
https://groups.google.com/a/tensorflow.org/g/tfjs

致謝

我們要感謝 Daniel Smilkov 和 Nikhil Thorat 為 WebAssembly 后端和 XNNPACK 集成奠定基礎(chǔ),感謝 Matsvei Zhdanovich 收集 Pixel 4 基準(zhǔn)數(shù)據(jù),感謝 Frank Barchard 在 XNNPACK 中實(shí)現(xiàn)低級(jí) Wasm SIMD 優(yōu)化。

責(zé)任編輯:xj

原文標(biāo)題:SIMD 和多線程大幅增強(qiáng) TFJS WebAssembly 后端

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

聲明:本文內(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)投訴
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    279

    瀏覽量

    21027
  • SIMD
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    10965

原文標(biāo)題:SIMD 和多線程大幅增強(qiáng) TFJS WebAssembly 后端

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【瑞薩RA × Zephyr評(píng)測(cè)】多線程和看門狗

    本文章旨在評(píng)估使用 Zephyr RTOS 在 Renesas FPB-RA6E2 開(kāi)發(fā)板上實(shí)現(xiàn)多線程調(diào)度與硬件看門狗功能的應(yīng)用。評(píng)估內(nèi)容包括任務(wù)調(diào)度、看門狗初始化流程、主程序邏輯的詳細(xì)解析,以及實(shí)驗(yàn)現(xiàn)象與數(shù)據(jù)分析。
    的頭像 發(fā)表于 01-10 10:23 ?2464次閱讀
    【瑞薩RA × Zephyr評(píng)測(cè)】<b class='flag-5'>多線程</b>和看門狗

    解析Linux的進(jìn)程、線程和協(xié)程

    更有效地利用多核的計(jì)算資源。 線程并行的應(yīng)用場(chǎng)景包括: (1)多線程服務(wù)器:多個(gè)線程可以同時(shí)處理客戶端請(qǐng)求,提高服務(wù)器的性能和響應(yīng)速度。
    發(fā)表于 12-22 11:00

    多線程的系統(tǒng)

    多線程系統(tǒng)的事件響應(yīng)也是在中斷中完成的,但事件的處理是在線程中完成的。在多線程系統(tǒng)中,線程跟中斷一樣,也具有優(yōu)先級(jí),優(yōu)先級(jí)高的線程會(huì)被優(yōu)先執(zhí)
    發(fā)表于 12-08 07:55

    Linux多線程對(duì)比單線程的優(yōu)勢(shì)

    :「資源利用率」:通過(guò)多線程,可以更有效地利用CPU資源,特別是多核CPU。「并行處理」:線程允許同時(shí)執(zhí)行多個(gè)任務(wù),提高程序的執(zhí)行效率。「簡(jiǎn)化設(shè)計(jì)」:使用
    發(fā)表于 12-01 06:11

    risc-v P擴(kuò)展(一) P指令集簡(jiǎn)介

    =17.3333px]二、指令集詳細(xì)介紹 [size=17.3333px]P擴(kuò)展包含指令數(shù)量較大,可以按照:SIMD數(shù)據(jù)處理指令、部分SIMD
    發(fā)表于 10-23 07:40

    指令集P擴(kuò)展的主要內(nèi)容

    的支持;安全擴(kuò)展,通過(guò)添加一些安全指令,可以提高處理器的安全性能,防止攻擊;向量指令擴(kuò)展,向量指令可以同時(shí)處理多個(gè)數(shù)據(jù),可以大大提高處理器的運(yùn)算速度,通過(guò)添加向量
    發(fā)表于 10-21 10:50

    rt-thread studio 如何進(jìn)行多線程編譯?

    ,使用的是5800h+32g內(nèi)存+sn550 ssd,開(kāi)啟16線程編譯時(shí)cpu的占用率也只能到30%,編譯完整個(gè)工程需要3分鐘 感覺(jué)多線程編譯設(shè)置沒(méi)有生效,有辦法提高編譯速度嗎 rtthread studio版本是 2.2.9
    發(fā)表于 10-11 09:16

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】—— linux創(chuàng)建線程

    自己的私有資源。 在linux系統(tǒng)中,線程狀態(tài)通常反映了當(dāng)前線程的當(dāng)前活動(dòng)和執(zhí)行階段。 主要分為: 1。運(yùn)行轉(zhuǎn)態(tài) 2。阻塞轉(zhuǎn)態(tài) 3。終止?fàn)顟B(tài) 如何區(qū)分單線程多線程? 在單個(gè)程序中只
    發(fā)表于 09-01 21:31

    Arm KleidiAI與XNNPack集成實(shí)現(xiàn)AI性能提升

    INT4 矩陣乘法 (matmul) 優(yōu)化以增強(qiáng) Google Gemma 2 模型性能開(kāi)始,到后續(xù)完成多項(xiàng)底層技術(shù)增強(qiáng),Arm 在 XNNPack 上實(shí)現(xiàn)了顯著的性能提升。
    的頭像 發(fā)表于 08-08 15:19 ?2801次閱讀
    Arm KleidiAI與<b class='flag-5'>XNNPack</b>集成實(shí)現(xiàn)AI<b class='flag-5'>性能</b>提升

    緩存之美:從根上理解 ConcurrentHashMap

    本文詳細(xì)介紹 ConcurrentHashMap 構(gòu)造方法、添加值方法和擴(kuò)容操作等源碼實(shí)現(xiàn)。 ConcurrentHashMap 是線程安全的哈希表,此哈希表的設(shè)計(jì)主要目的是在最小化更新操作對(duì)哈希
    的頭像 發(fā)表于 08-05 14:48 ?567次閱讀

    紫光國(guó)芯如何助力芯片后端設(shè)計(jì)

    眾所周知,芯片產(chǎn)品的誕生需要經(jīng)歷設(shè)計(jì)、制造、封測(cè)等階段,其中的芯片設(shè)計(jì)又包括架構(gòu)、代碼、驗(yàn)證、中端、后端等步驟。后端設(shè)計(jì)抽象的代碼轉(zhuǎn)化成為可制造、功能正確、滿足性能功耗指標(biāo)的物理圖紙
    的頭像 發(fā)表于 07-08 16:40 ?1146次閱讀

    多線程的安全注意事項(xiàng)

    多線程安全是指多個(gè)線程同時(shí)訪問(wèn)或修改共享資源時(shí),能夠保證程序的正確性和可靠性。 開(kāi)發(fā)者選擇TaskPool或Worker進(jìn)行多線程開(kāi)發(fā)時(shí),在TaskPool和Worker的工作線程中導(dǎo)
    發(fā)表于 06-20 07:49

    鴻蒙5開(kāi)發(fā)寶藏案例分享---跨線程性能優(yōu)化指南

    ;>Worker</span>做多線程開(kāi)發(fā)時(shí),總遇到對(duì)象跨線程卡頓的問(wèn)題,原來(lái)鴻蒙早就提供了解決方案。下面結(jié)合代碼和實(shí)戰(zhàn)案例,帶你徹底玩轉(zhuǎn)性能優(yōu)化! 一、痛點(diǎn):跨線程
    發(fā)表于 06-12 17:13

    工控一體機(jī)多線程任務(wù)調(diào)度優(yōu)化:聚徽分享破解工業(yè)復(fù)雜流程高效協(xié)同密碼

    在當(dāng)今工業(yè) 4.0 的浪潮下,工業(yè)生產(chǎn)正朝著高度自動(dòng)化、智能化的方向大步邁進(jìn)。生產(chǎn)流程日益復(fù)雜,眾多任務(wù)需要同時(shí)、高效地協(xié)同執(zhí)行,這對(duì)工業(yè)控制系統(tǒng)的核心 —— 工控一體機(jī)提出了前所未有的挑戰(zhàn)。多線程
    的頭像 發(fā)表于 05-28 14:06 ?633次閱讀

    請(qǐng)問(wèn)如何在Python中實(shí)現(xiàn)多線程與多進(jìn)程的協(xié)作?

    () thread.join() process.join() 我的問(wèn)題是:**如何合理地組合多線程和多進(jìn)程以獲得更好的性能?**特別是在I/O密集型任務(wù)和CPU密集型任務(wù)混合的情況下,如何避免性能瓶頸,確保程序的高效運(yùn)行? 希
    發(fā)表于 03-11 06:57