• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    內容創建/渲染

    高級 API 性能:內部函數

    ?

    Intrinsics 可被視為特定硬件指令的更高級別的抽象。它們提供對低級操作或特定于硬件的功能的直接訪問,從而提高性能。這樣,就可以在線程束中的線程間執行操作,也稱為線程束中的線程波前.

    推薦

    • Wave 內聯函數可以顯著加快著色器的運行速度。以下是一些優化技巧:
      • 許多排序或歸約算法可以使用更少的共享內存或不使用共享內存,并減少內存障礙,從而顯著提升性能。
      • 可以使用不同類型的 shuffle 和 ballot 指令。
      • 將波形指令與 GroupSizeWorkGroup 值大于線程束或子組大小(32 個線程)的波形指令結合使用,可以減少所需的內存屏障和共享內存訪問。
      • 有關更多信息,請參閱線程之間的讀取:著色器內部函數在 HLSL 中解鎖 GPU 內部架構
    • 使用GroupSizeWorkGroup線程束大小的乘數(32 * N),64 通常是最佳點。
      • 使用 intrinsicGroupSizeWorkGroup32 可能是避免使用共享內存的更好選擇。
    • 當供應商特定的擴展不適用或難以實現時,使用原生 HLSL 代碼。
      • 一些指令可以使用最新的著色器模型版本來實現。

    以下代碼示例是 SM6 的示例:

    float(4) NvShflXor (float(4) input, uint LaneMask)
    {
    float(4) output = WaveReadLaneAt(input, WaveGetLaneIndex() ^ LaneMask);
    return output;
    }

    ?

    +1

    標簽

    人人超碰97caoporen国产