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

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

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

3天內不再提示

如何使用NVAPI將DX12資源上傳到GPU

星星科技指導員 ? 來源:NVIDIA ? 作者:Louis Bavoil ? 2022-04-20 16:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如何通過 PCIe 總線優(yōu)化從 CPUGPU 的 DX12 資源上傳是一個老問題,有許多可能的解決方案,每個解決方案都有其優(yōu)缺點。在這篇文章中,我將展示如何使用 NVAPI 將 DX12 上傳堆移動到 CPU-Visible VRAM ( CVV ),這是一個加速 PCIe 有限工作負載的簡單解決方案。

CPU-Visible VRAM :工具箱中的新工具

以頂點緩沖區(qū)( VB )上載為例,數(shù)據(jù)不能跨幀重用。將 VB 上載到 GPU 的最簡單方法是直接從 GPU 讀取 CPU 內存:

首先,應用程序創(chuàng)建 DX12 UPLOAD 堆或等效的 CUSTOM 堆。 DX12 上傳堆分配在系統(tǒng)內存中,也稱為 CPU 內存,其中 WRITE_COMBINE ( WC )頁面針對 CPU 寫入進行了優(yōu)化。 CPU 首先將 VB 數(shù)據(jù)寫入此系統(tǒng)內存堆。

其次,應用程序使用 IASetVertexBuffers 命令將上載堆中的 VB 綁定到 GPU draw 命令。

在 GPU 中執(zhí)行繪制時,將啟動頂點著色器。接下來,頂點屬性提取( VAF )單元通過 GPU 的二級緩存讀取 VB 數(shù)據(jù),二級緩存本身從存儲在系統(tǒng)內存中的 DX12 上載堆加載 VB 數(shù)據(jù):

poYBAGJfy1eAJ8cbAACa6E7DUpE334.png

圖 1 直接從 DX12 上傳堆獲取 VB 。

來自系統(tǒng)內存的 L2 訪問具有高延遲,因此最好在執(zhí)行 draw 命令之前通過將數(shù)據(jù)從系統(tǒng)內存復制到 VRAM 來隱藏該延遲。

從 CPU 到 GPU 的預上載可以通過使用 copy 命令來完成,可以使用 COPY 隊列異步完成,也可以在主直接隊列上同步完成。

poYBAGJfy56AGJyaAAA-CsbwiLY489.png

圖 2 使用 copy 命令將 VB 預加載到 VRAM

復制引擎可以在復制隊列中與其他 GPU 工作同時執(zhí)行復制命令,并且可以同時使用多個復制隊列。但是,使用異步復制隊列的一個問題是,您必須注意將隊列與 DX12 Fences 同步,這可能很難實現(xiàn),并且可能會有很大的開銷。

在 GTC 2021 的 Nsight Graphics : GPU Trace 的下一級優(yōu)化建議 會議上,我們宣布 NVIDIA GPU 上 DX12 應用程序的替代解決方案是有效地使用 CPU 線程作為復制引擎。這可以通過使用 NVAPI 在 CVV 中創(chuàng)建 DX12 上載堆來實現(xiàn)。 CPU 然后通過 PCIe 總線將寫入此特殊上載堆的數(shù)據(jù)直接轉發(fā)到 VRAM (圖 3 )。

poYBAGJfy1iAOdMOAAB9auqoT8g282.png

圖 3 在 CPU 線程中使用 CPU 寫操作將 VB 預加載到 VRAM

對于 DX12 ,以下 NVAPI 函數(shù)可用于查詢系統(tǒng)中可用的 CVV 量,并用于分配這種新風格的堆( CPU – 可寫 VRAM ,具有快速 CPU 寫入和慢速 CPU 讀取):

NvAPI_D3D12_QueryCpuVisibleVidmem

NvAPI_D3D12_CreateCommittedResource

NvAPI_D3D12_CreateHeap2

這些新功能需要最新的驅動程序: 466 。 11 或更高版本。

NvAPI_D3D12_QueryCpuVisibleVidmem 應報告以下 CVV 內存量:

使用 Windows 11 (例如,使用 Windows11 內幕預覽 )時 NVIDIA RTX 20xx 和 30xx GPU s 的容量為 200-256 MB 。

可調整大小的條_ RTX 30xx GPU s 在 Windows 10 或 Windows 11 中超過 256 MB ,且 NVIDIA 控制面板中的 可調整大小的條_ 報告為 NVIDIA 。有關如何啟用可調整大小欄的更多信息,請參閱 GeForce RTX 30 系列通過可調整大小的桿支撐加速性能 。

使用 Nsight Graphics 從 CPU-Visible VRAM 檢測并量化 GPU 性能增益機會

NVIDIA NSight 圖形 2021 。 3 中的 GPU 跟蹤工具可輕松檢測 GPU 性能提升機會。啟用 高級模式 時, GPU 內的 Analysis 面板將根據(jù)預測的幀減少百分比,通過修復此 GPU 工作負載中的特定問題,跟蹤幀內的顏色代碼 perf 標記。

以下是在 RTX NVIDIA 3080 上,從 看門狗:軍團 ( DX12 )預發(fā)布版本中選擇 Analyze 后的幀的外觀:

poYBAGJfy1mAR_KFAALR96_q8Rc811.png

圖 4 帶有顏色編碼 GPU 工作負載的 GPU 跟蹤分析工具

(越綠,幀上的預計增益越高)。

現(xiàn)在,選擇幀末尾的用戶界面繪制命令,分析工具顯示,修復 二級未命中到系統(tǒng)內存 性能問題后 GPU 幀時間預計減少 0 。 9% 。該工具還顯示,通過二級緩存?zhèn)鬏數(shù)拇蠖鄶?shù)系統(tǒng)內存流量是由基本引擎請求的,該引擎包括頂點屬性獲取單元:

poYBAGJfy2KAPj-gAAKq4djMzOs795.png

圖 5 GPU 跟蹤分析工具,關注單個工作負載。

通過在 CVV 中分配此 draw 命令的 VB ,而不是使用常規(guī) DX12 上載堆分配系統(tǒng)內存,此機制的 GPU 時間從 0.2 ms 減少到 0.01 ms 以下。 GPU 幀時間也減少了 0.9% 。在此工作負載中, VB 數(shù)據(jù)現(xiàn)在直接從 VRAM 獲取:

poYBAGJfy2SARVDtAAKr65sYXhE997.png

圖 6 GPU 跟蹤分析工具,在優(yōu)化了工作負載之后。

使用 Nsight 系統(tǒng)避免 CPU 讀取 CPU – 可見 VRAM

CPU 不應讀取常規(guī) DX12 上載堆,而應僅將其寫入。與常規(guī)堆一樣, CVV 堆的 CPU 內存頁已啟用 寫合并 。這提供了快速的 CPU 寫入性能,但緩慢的非緩存 CPU 讀取性能。此外,由于從 CVV 讀取 CPU 會通過 PCIe 、 GPU L2 和 VRAM 進行往返,因此從 CVV 讀取的延遲遠大于從常規(guī) DX12 上載堆讀取的延遲。

要檢測應用程序 CPU 的性能是否受到來自 CVV 的 CPU 讀取的負面影響,并獲取 CPU 調用導致這種情況的信息,我建議使用 Nsight 系統(tǒng) 2021.3 。

示例 1 : CVV CPU 讀取 ReadFromSubresource

下面是一個在 Nsight 系統(tǒng)跟蹤中從 DX12 ReadFromSubresource 讀取災難性 CPU 的示例。為了捕獲此跟蹤,在獲取跟蹤時,我在 Nsight 系統(tǒng)項目配置中啟用了新的 收集 GPU 指標 選項,以及默認設置,其中包括 樣本目標過程 。

以下是 Nsight Systems 在放大一個代表性幀后顯示的內容:

pYYBAGJfy2SASoxxAAEj2snqqqw207.png

圖 7 Nsight 系統(tǒng)顯示 2 。 6 ms ReadFromSubresource 調用與來自 BAR1 的高 PCIe 讀取請求計數(shù)相關的 CPU 線程。

在這種情況下(單個 – GPU 機器), Nsight Systems 中的 對 BAR1 的 PCIe 讀取請求 GPU 指標測量發(fā)送到 PCIe 的 CPU 讀取請求數(shù),以獲取 CVV ( BAR1 )中分配的資源。 Nsight Systems 顯示 CPU 線程上的長 DX12 ReadFromSubresource 調用與來自 CVV 的大量 PCIe 讀取請求之間存在明顯的相關性。因此,您可以得出結論,此調用很可能是從 CVV 執(zhí)行 CPU 回讀,并在應用程序中修復此問題。

示例 2 : CVV CPU 從映射指針讀取

CPU 從 CVV 讀取的數(shù)據(jù)不限于 DX12 命令。當使用 DX12 資源映射調用返回的任何 CPU 內存指針時,它們可能發(fā)生在任何 CPU 線程中。這就是為什么建議使用 Nsight 系統(tǒng)對其進行調試,因為除了選定的 GPU 硬件指標外, Nsight 系統(tǒng)還可以定期對每個 CPU 線程的調用堆棧進行采樣。

以下是 Nsight 系統(tǒng)的一個示例,其中顯示了從 CVV 進行的 CPU 讀取與沒有 DX12 API 調用相關,但與 CPU 線程活動開始相關:

pYYBAGJfy2WAbA_kAADI3HDLE9E352.png

圖 8 Nsight Systems 顯示了執(zhí)行映射調用的 CPU 線程與對 BAR1 的 PCIe 讀取請求之間的相關性,之后該相關性立即增加。

通過懸停在 CPU 線程下面的橙色采樣點,您可以看到該線程正在執(zhí)行一個名為 RenderCollectedTrees 的 C ++方法,這對查找正在進行 CVV 堆讀/寫操作的代碼是有幫助的:

Nsight-systems-call-stack.png

圖 9 Nsight Systems 顯示 CPU 線程的調用堆棧采樣點,該線程與對 BAR1 的高 PCIe 讀取請求相關。

在這種情況下,提高性能的一種方法是對 CPU 內存的單獨塊執(zhí)行讀/寫訪問,而不是在 DX12 上載堆中。完成所有讀/寫更新后,從 CPU 讀/寫內存向上載堆執(zhí)行 memcpy 調用。

結論

在 Windows 11 PC 上運行的所有 PC 游戲都可以在 NVIDIA RTX 20xx 和 30xx GPU s 上使用 256 MB 的 CVV 。 NVAPI 可用于查詢系統(tǒng)中可用 CVV 內存的總量,并在此空間中分配 DX12 內存。如果 CPU 從未從原始 DX12 上載堆讀取數(shù)據(jù),則只需更改分配堆的代碼即可將 DX12 上載堆替換為 CVV 堆。

要檢測將 DX12 上載堆移動到 CVV 時 Nsight 圖形 的性能提升機會,建議使用 GPU 中的 GPU 跟蹤分析工具。要檢測和調試從 CVV 讀取 CPU 時的性能損失,我建議在啟用 GPU 指標的情況下使用 Nsight 系統(tǒng) 。

關于作者

Louis Bavoil 自 2007 年以來一直在 NVIDIA 的開發(fā)者技術小組工作,從事 GPU 性能優(yōu)化和 GameWorks 軟件開發(fā)的混合工作,目標是幫助提高 PC 游戲的生產價值。

審核編輯:郭婷

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

    關注

    14

    文章

    5594

    瀏覽量

    109723
  • gpu
    gpu
    +關注

    關注

    28

    文章

    5194

    瀏覽量

    135438
  • WINDOWS
    +關注

    關注

    4

    文章

    3702

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    商品圖片批量上傳接口設計與實現(xiàn)

    ? 在電商平臺或內容管理系統(tǒng)中,商品圖片的高效管理是核心需求之一。批量上傳接口允許用戶一次性上傳多張圖片,顯著提升操作效率。本文逐步介紹如何設計并實現(xiàn)一個可靠的商品圖片批量上傳接口,
    的頭像 發(fā)表于 10-13 15:25 ?444次閱讀

    如何看懂GPU架構?一分鐘帶你了解GPU參數(shù)指標

    GPU架構參數(shù)如CUDA核心數(shù)、顯存帶寬、TensorTFLOPS、互聯(lián)方式等,并非“冰冷的數(shù)字”,而是直接關系設備能否滿足需求、如何發(fā)揮最大價值、是否避免資源浪費等問題的核心要素。本篇文章全面
    的頭像 發(fā)表于 10-09 09:28 ?1131次閱讀
    如何看懂<b class='flag-5'>GPU</b>架構?一分鐘帶你了解<b class='flag-5'>GPU</b>參數(shù)指標

    st25dx-mb原理圖資料

    電子發(fā)燒友網站提供《st25dx-mb原理圖資料.pdf》資料免費下載
    發(fā)表于 08-25 15:43 ?0次下載

    產品圖片上傳API接口

    ? 在電商平臺、內容管理系統(tǒng)或移動應用中,產品圖片上傳API接口是核心功能之一。它允許用戶或第三方應用通過HTTP請求圖片文件上傳到服務器,實現(xiàn)產品圖像的快速添加和管理。本文逐步介
    的頭像 發(fā)表于 07-25 14:30 ?683次閱讀
    產品圖片<b class='flag-5'>上傳</b>API接口

    aicube的n卡gpu索引該如何添加?

    請問有人知道aicube怎樣才能讀取n卡的gpu索引呢,我已經安裝了cuda和cudnn,在全局的py里添加了torch,能夠調用gpu,當還是只能看到默認的gpu0,顯示不了gpu1
    發(fā)表于 07-25 08:18

    make sence成的XML文件能上傳到自助訓練模型上嗎?

    make sence成的XML文件能上傳到自助訓練模型上嗎
    發(fā)表于 06-23 07:38

    視頻怎么上傳到服務器?

    1.視頻怎么上傳到服務器 2.有什么辦法把視頻上傳到網上,可以回看的?不用實時觀看,只要回看
    發(fā)表于 06-18 06:42

    鴻蒙NEXT上傳圖片功能PhotoViewPicker核心功能解析

    */ isOriginalPhoto: boolean; } 獲取到資源后,通常需要進行以下處理: 使用文件 URI 讀取文件內容 進行必要的格式轉換(如壓縮圖片) 上傳到服務器或保存到本地 // 這里以oss上傳為例
    發(fā)表于 06-06 15:00

    HarmonyOS優(yōu)化應用預置圖片資源加載耗時問題性能優(yōu)化

    文件不會再打包到構建產物中,最后紋理文件和未轉換的文件一起構建生成資源產物。 編譯構建資源文件開啟紋理壓縮時序圖如下: 三、場景案例 由于圖片格式不能直接被GPU渲染,需要等待CP
    發(fā)表于 05-29 16:11

    HarmonyOS優(yōu)化應用文件上傳下載慢問題性能優(yōu)化二

    數(shù)據(jù)流量。 場景2:處理大量資源的場景 如應用商店、網盤應用等,這類應用通常擁有大體積的文件資源。當用戶從暫停或者斷網中重新恢復時,如果從頭開始上傳下載則會額外耗費大量的時間。此時可以采用斷點續(xù)傳方法
    發(fā)表于 05-27 16:19

    HarmonyOS優(yōu)化應用文件上傳下載慢問題性能優(yōu)化二

    數(shù)據(jù)流量。 場景2:處理大量資源的場景 如應用商店、網盤應用等,這類應用通常擁有大體積的文件資源。當用戶從暫停或者斷網中重新恢復時,如果從頭開始上傳下載則會額外耗費大量的時間。此時可以采用斷點續(xù)傳方法
    發(fā)表于 05-22 10:54

    工業(yè)智能網關如何采集數(shù)據(jù)上傳到數(shù)據(jù)庫(MYSQL和SQLSERVER)

    。 無論是生產線上設備的實時運行參數(shù),還是車間環(huán)境的各項指標,海量數(shù)據(jù)蘊含著提升效率、優(yōu)化決策的關鍵信息。而工業(yè)智能網關作為連接工業(yè)設備與數(shù)據(jù)庫的橋梁,承擔著數(shù)據(jù)采集與上傳的重要使命。以下介紹工業(yè)智能網關采集數(shù)據(jù)上
    的頭像 發(fā)表于 05-07 15:21 ?904次閱讀
    工業(yè)智能網關如何采集數(shù)據(jù)<b class='flag-5'>上傳到</b>數(shù)據(jù)庫(MYSQL和SQLSERVER)

    提升AI訓練性能:GPU資源優(yōu)化的12個實戰(zhàn)技巧

    在人工智能與機器學習技術迅速發(fā)展的背景下,GPU計算資源的高效利用已成為關鍵技術指標。優(yōu)化的GPU資源分配不僅能顯著提升模型訓練速度,還能實現(xiàn)計算成本的有效控制。根據(jù)AI基礎設施聯(lián)盟2
    的頭像 發(fā)表于 05-06 11:17 ?1545次閱讀
    提升AI訓練性能:<b class='flag-5'>GPU</b><b class='flag-5'>資源</b>優(yōu)化的<b class='flag-5'>12</b>個實戰(zhàn)技巧

    可以手動構建imx-gpu-viv嗎?

    使用 imx-gpu-viv-6.4.3.p4.2.aarch64.bin。 https://www.nxp.com/lgfiles/NMG/MAD/YOCTO//imx-gpu-viv-6.4.3.p4.2-aarch64.bin 我需要
    發(fā)表于 03-28 06:35