一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

NVIDIA GPUs上命令緩沖區(qū)的應(yīng)用實踐

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Wessam Bahnassi ? 2022-04-15 17:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章介紹了 NVIDIA GPUs 上命令緩沖區(qū)的最佳實踐。要在應(yīng)用程序中獲得高且一致的幀速率,請參閱所有高級 API 性能提示。

命令緩沖區(qū)是從 CPU 發(fā)送要在 GPU 上執(zhí)行的命令的主要機制。通過遵循本文列出的最佳實踐,您可以通過最大化并行性、避免瓶頸和減少 GPU 上的空閑時間,在 CPU 和 GPU 上實現(xiàn)性能提升。

推薦

接受您負(fù)責(zé)實現(xiàn)和控制 GPU / CPU 并行性的事實。

向命令列表提交工作不會啟動 GPU 上的任何工作。

對ExecuteCommandList的調(diào)用最終在 GPU 上開始工作。

在多個線程和內(nèi)核上并行并均勻地將工作記錄到多個命令列表中。

錄制命令是一項 CPU 密集型操作,沒有驅(qū)動程序線程來拯救。

命令列表不是自由線程,因此并行工作提交意味著提交多個命令列表。

請注意,設(shè)置和重置命令列表會帶來成本。

為了高效地提交并行工作,您仍然需要合理數(shù)量的命令列表。

圍欄出于各種原因(多個命令隊列、拾取查詢結(jié)果等)強制拆分命令列表。

嘗試將目標(biāo)設(shè)定為每幀 5-10 次ExecuteCommandList調(diào)用,并進行足夠的 GPU 工作,以隱藏每次ExecuteCommandList調(diào)用的操作系統(tǒng)調(diào)度開銷。

在上一次ExecuteCommandList調(diào)用之后,操作系統(tǒng)需要 50-80 微秒來安排命令列表。如果調(diào)用中的命令列表執(zhí)行速度快于此,則硬件隊列中存在氣泡。

使用GPUView檢查氣泡。

您可以將 3D 隊列上的圖形或計算工作與專用異步計算隊列上的計算工作重疊。

請記住,即使對于理論上可以與其他圖形或計算任務(wù)并行運行的計算任務(wù), GPU 上并行工作的實際調(diào)度細(xì)節(jié)也可能不會產(chǎn)生期望的結(jié)果。

注意哪些異步計算和圖形工作負(fù)載可以一起調(diào)度。使用圍欄將正確的工作負(fù)載配對。

使用ExecuteIndirect靈活性最大限度地將 CPU 工作卸載到 GPU 并減少 CPU – GPU 同步點。

請使用ExecuteIndirect將場景消隱系統(tǒng)移植到 GPU 。

使用ExecuteIndirect計數(shù)緩沖區(qū)來控制命令的數(shù)量,而不是發(fā)出最大數(shù)量的命令并單獨預(yù)測未使用的命令。

NVIDIA 在ExecuteIndirect的Vulkan下為ExecuteIndirect提供附加功能

不推薦

幀描述符堆中的 CBV / SRV / UAV 描述符或 2K 采樣器不要超過 100 萬個。

不要阻止ExecuteCommandList呼叫。

ExecuteCommandList打電話可能會很貴。同時,可以在其他線程上記錄新命令。

每個命令隊列都可以使用自己的線程來提交ExecuteCommandList。

不要只在幾個命令列表中記錄所有內(nèi)容或大型場景部分。這限制了您充分使用所有 CPU 內(nèi)核的能力。

此外,構(gòu)建幾個大的命令列表意味著您可能會發(fā)現(xiàn)很難讓 GPU 保持空閑狀態(tài)。

不要只在錄制完所有內(nèi)容后才提交。您可能會浪費使 GPU 與其他命令列表的錄制并行工作的機會。

不要期望大量的列表重用。

在對象可見性等方面,每幀通常有許多更改。

后處理可能是一個例外。

不要經(jīng)?;旌鲜褂美L圖、分派和復(fù)制命令。

嘗試將所有繪制命令組合在一起,并將命令分派到一起,依此類推。

在同一隊列上頻繁混合不同類型的工作可能會導(dǎo)致管道排水。

不要創(chuàng)建太多線程或太多命令列表。

太多的線程超額訂閱 CPU 資源,而太多的命令列表可能會積累太多的開銷。

關(guān)于作者

Wessam Bahnassi 在 3D 引擎設(shè)計和優(yōu)化方面有 20 年的經(jīng)驗。他最新發(fā)布的游戲包括《蝙蝠俠:阿卡姆騎士》和他自己的 120-FPS PSVR 太空射擊游戲超空。他是 ShaderX / GPU Pro / GPU Zen 系列書籍的撰稿人和章節(jié)編輯。他目前在 NVIDIA 的工作包括進行優(yōu)化,并為該公司的幾個很酷的研究項目做出貢獻。

審核編輯:郭婷

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

    關(guān)注

    68

    文章

    11078

    瀏覽量

    217034
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5309

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    請問USB緩沖區(qū)取數(shù)據(jù)可以多次取嗎?

    在使用USB軟件獲取數(shù)據(jù)是,下位機給我發(fā)送了13個32位數(shù)據(jù)到USB IN緩沖區(qū),為什么我調(diào)用API函數(shù)想要第一次取1個32位數(shù)據(jù),取完之后再取12位數(shù)據(jù),程序會卡死。
    發(fā)表于 07-16 08:12

    FX3 Socket緩沖區(qū)切換的最大時間是多少?

    FX3_Programmers_Manual 文檔的第 10 章提到“每個緩沖區(qū)緩沖區(qū)切換開銷為 550 - 900 ns”。 Getting_Started_with_EZ-USB_FX3 文檔
    發(fā)表于 05-16 07:51

    在傳輸DMA通道中的所有緩沖區(qū)后,DMA標(biāo)志(就緒和部分)被卡住了是怎么回事?

    2 次傳輸,再次卡住的時間更短,然后順利傳輸數(shù)據(jù)。 Buffers working until they get stuck緩沖器在卡住之前一直在工作 前兩個緩沖區(qū)的標(biāo)志 A()和 B(下),然后
    發(fā)表于 05-16 07:18

    求助,關(guān)于3014的緩沖區(qū)設(shè)置疑問求解

    不夠?qū)е聄gb24 1080p@60fps為靜態(tài)? 緩沖區(qū)的大小和數(shù)量是否需要對應(yīng)? 因為720p@60fps的緩沖區(qū)的大小和數(shù)量為34kb,3,是可以出圖且動態(tài),但圖像依然是顛倒的。我將
    發(fā)表于 05-06 13:42

    請問如何在Linux中使用幀緩沖區(qū)更新epdc顯示?

    我正在使用帶有 epdc 顯示子卡 (IMXEBOOKDC5) 的 IMX8ULP EVK。使用 Linux 映像引導(dǎo)后,epdc 顯示無法使用幀緩沖區(qū)進行更新。當(dāng)檢查顯示 pmic 的電源使能引腳
    發(fā)表于 04-01 06:41

    FreeRTOS進階使用之流緩沖區(qū):高效處理字節(jié)流的秘密武器

    在嵌入式開發(fā)中,流緩沖區(qū)(Stream Buffer)是FreeRTOS中用于高效處理字節(jié)流數(shù)據(jù)傳輸?shù)暮诵臋C制,尤其適合任務(wù)間或中斷與任務(wù)間的連續(xù)數(shù)據(jù)傳輸場景(如串口通信、網(wǎng)絡(luò)數(shù)據(jù)流等)。本文將深入
    發(fā)表于 03-24 11:37

    L9663如何使用上行緩沖區(qū)發(fā)送同步脈沖?

    我根據(jù)L9663 Datasheet這個手冊,想使用這個配置“通過帶有上行數(shù)據(jù)緩沖區(qū)的SPI觸發(fā)。微控制器發(fā)送相應(yīng)的SPI命令以發(fā)送同步脈沖。然后,同步脈沖觸發(fā)發(fā)生器根據(jù)上行數(shù)據(jù)緩沖區(qū)中的值在內(nèi)部
    發(fā)表于 03-13 08:15

    緩沖區(qū)溢出漏洞的原理、成因、類型及最佳防范實踐(借助Perforce 的Klocwork/Hleix QAC等靜態(tài)代碼分析工具)

    本期來認(rèn)識軟件漏洞的“??汀薄?b class='flag-5'>緩沖區(qū)溢出,C/C++開發(fā)者尤其要注意!全面了解該漏洞的成因、類型、常見示例,以及如何借助Klocwork、Helix QAC等SAST工具進行防護。
    的頭像 發(fā)表于 03-04 16:39 ?873次閱讀
    <b class='flag-5'>緩沖區(qū)</b>溢出漏洞的原理、成因、類型及最佳防范<b class='flag-5'>實踐</b>(借助Perforce 的Klocwork/Hleix QAC等靜態(tài)代碼分析工具)

    RTOS的流緩沖區(qū)機制解析

    SAFERTOS中的流緩沖區(qū)(Stream buffer)機制,可以實現(xiàn)任務(wù)到任務(wù)或中斷到任務(wù)之間的通信。字節(jié)流是由發(fā)送方寫入緩沖區(qū),接收方讀取緩沖區(qū)數(shù)據(jù)。流緩沖區(qū)作為隊列的輕量級級替
    的頭像 發(fā)表于 02-14 11:33 ?539次閱讀
    RTOS的流<b class='flag-5'>緩沖區(qū)</b>機制解析

    AMD Zen 4處理器悄然禁用循環(huán)緩沖區(qū)

    近日,AMD在更新BIOS后,對Zen 4架構(gòu)的處理器進行了一項未公開說明的更改:禁用了循環(huán)緩沖區(qū)(Loop Buffer)功能。這一變化引發(fā)了業(yè)界和用戶的廣泛關(guān)注。 循環(huán)緩沖區(qū)作為CPU前端的一個
    的頭像 發(fā)表于 12-11 13:46 ?540次閱讀

    分享一個嵌入式通用FIFO環(huán)形緩沖區(qū)實現(xiàn)庫

    開源項目ringbuff ,是一款通用FIFO環(huán)形緩沖區(qū)實現(xiàn)的開源庫,作者MaJerle,遵循 MIT 開源許可協(xié)議。
    的頭像 發(fā)表于 10-23 16:20 ?1155次閱讀
    分享一個嵌入式通用FIFO環(huán)形<b class='flag-5'>緩沖區(qū)</b>實現(xiàn)庫

    內(nèi)存緩沖區(qū)和內(nèi)存的關(guān)系

    內(nèi)存緩沖區(qū)和內(nèi)存之間的關(guān)系是計算機體系結(jié)構(gòu)中一個至關(guān)重要的方面,它們共同協(xié)作以提高數(shù)據(jù)處理的效率和系統(tǒng)的整體性能。
    的頭像 發(fā)表于 09-10 14:38 ?1228次閱讀

    單片機中的幾種環(huán)形緩沖區(qū)的分析和實現(xiàn)

    單片機中的幾種環(huán)形緩沖區(qū)的分析和實現(xiàn)一、簡介環(huán)形緩沖區(qū)(RingBuffer)是一種高效的使用內(nèi)存的方法,它將一段固定長度的內(nèi)存看成一個環(huán)形結(jié)構(gòu),用于存儲數(shù)據(jù),能夠避免使用動態(tài)申請內(nèi)存導(dǎo)致的內(nèi)存碎片
    的頭像 發(fā)表于 08-14 08:39 ?1756次閱讀
    單片機中的幾種環(huán)形<b class='flag-5'>緩沖區(qū)</b>的分析和實現(xiàn)

    esp32-s3 uvc攝像頭緩沖區(qū)溢出是什么原因呢?

    板子是esp32-s3 n8r8 使用的是ESP IDF VSCode 擴展版本 v1.8.0 遇到的問題是,在改變分辨率時候(增大or減小)都會遇到提示緩沖區(qū)溢出的情況,我嘗試過增大緩沖區(qū)的內(nèi)存分配,然而問題還是沒有得到解決。 請問這是什么原因呢
    發(fā)表于 07-19 07:35

    ESP8266是否可以添加AT命令并使接收緩沖區(qū)大小可調(diào)?

    是否可以添加 AT 命令并使接收緩沖區(qū)大小可調(diào)? 在Arduino,我總是丟棄數(shù)據(jù)字節(jié),而arduino硬件串行只有64字節(jié)的緩沖區(qū),看起來ESP8266有256個字節(jié)。
    發(fā)表于 07-17 07:36