精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

新聞 前端
OpenAI 開源了全新的 GPU 編程語言 Triton,它能成為 CUDA 的替代品嗎?

 

過去十年中,深度神經網絡 (DNN) 已成為最重要的機器學習模型之一,創造了從自然語言處理到計算機視覺、計算神經科學等許多領域的 SOTA 實現。DNN 模型的優勢來自于它的層次結構,這一特征導致其計算量巨大,但也會產生大量高度并行化的工作,特別適合多核和眾核處理器。

深度學習領域的新研究思路往往是結合原生框架 operator 來實現的,這種方法雖然方便,但需要創建或移動許多臨時張量,因此可能會造成神經網絡的性能損失。編寫專門的 GPU 內核或許可以解決這個問題,但 GPU 編程的確是一件相當復雜的事。

DNN 計算潛力與 GPU 編程困難之間的矛盾由來已久。英偉達在 2007 年發布了 CUDA 的初始版本,CUDA 平臺是一個軟件層,使用者可以直接訪問 GPU 的虛擬指令集和并行計算單元,用于執行計算內核。近年來,主流深度學習框架幾乎都是基于 CUDA 進行加速,英偉達也一直在完善 CUDA 工具包,但對于一般的開發者來說,CUDA 還是「不那么容易上手」。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

今天,OpenAI 正式推出 Triton 1.0,這是一種類 Python 的開源編程語言。即使沒有 CUDA 經驗的研究人員,也能夠高效編寫 GPU 代碼。例如,它可以用不到 25 行代碼寫出與 cuBLAS 性能相匹配的 FP16 矩陣乘法內核,后者是許多專業的 GPU 編程者尚且無法做到的。此外,OpenAI 的研究者已經使用 Triton 成功生成了比 PyTorch 同類實現效率高 2 倍的內核。

代碼地址:https://github.com/openai/triton

Triton 的最初想法來源于現任 OpenAI 科學家的 Philippe Tillet 2019 年在哈佛大學攻讀研究生學位時發表的一篇論文,當時他的導師是 H. T. Kung 和 David Cox。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

論文鏈接:http://www.eecs.harvard.edu/~htk/publication/2019-mapl-tillet-kung-cox.pdf

Tillet 希望解決的問題是打造一種比英偉達的 CUDA 等特定供應商庫更好用的庫,能夠處理神經網絡中涉及矩陣的各種操作,具備可移植性,且性能可與 cuDNN 或類似的供應商庫相媲美。團隊表示:「直接用 CUDA 進行 GPU 編程太難了,比如為 GPU 編寫原生內核或函數這件事,會因為 GPU 編程的復雜性而出奇困難。」

Facebook AI 研究中心科學家 Soumith Chintala 也在推特上表達了自己對 Triton 的期待:

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

新發布的 Triton 可以為一些核心的神經網絡任務(例如矩陣乘法)提供顯著的易用性優勢?!肝覀兊哪繕耸鞘蛊涑蔀樯疃葘W習 CUDA 的可行替代方案,」Philippe Tillet 作為 Triton 項目負責人如此表示。

GPU 編程面臨的挑戰

現代 GPU 的架構大致可以分為三個主要組件:DRAM、SRAM 和 ALU。優化 CUDA 代碼時,必須考慮到每一個組件:

  • 來自 DRAM 的內存傳輸必須合并進大型事務,以利用現代內存接口的總線位寬;
  • 必須在數據重新使用之前手動存儲到 SRAM 中,并進行管理以最大限度地減少檢索時共享內存庫沖突;
  • 計算必須在流處理器(SM)內部或之間細致分區和調度,以促進指令 / 線程級的并行以及專用算術邏輯單元(ALU)的利用。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

GPU 基礎架構。

種種因素導致 GPU 編程難度驟增,即使對于具有多年經驗的 CUDA 程序員也是如此。Triton 的目的是將這些優化過程自動化,以此讓開發人員更專注于并行代碼的高級邏輯。出于對泛用能力的考量,Triton 不會自動調度跨流處理器的工作,而是將一些重要的算法考慮因素(例如 tiling、SM 間同步)留給開發者自行決定。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

CUDA vs Triton 編譯器優化對比。

編程模型

在所有可用的領域專用語言和 JIT 編譯器中,Triton 或許與 Numba 最相似:內核被定義為修飾過的 Python 函數,并與實例網格上不同的 program_id 的同時啟動。但不同之處值得注意:如下圖代碼片段所示,Triton 通過對 block 的操作來展示 intra-instance 并行,此處 block 是維數為 2 的冪的數組,而不是單指令多線程(SIMT)執行模型。如此一來,Triton 高效地抽象出了與 CUDA 線程 block 內的并發相關的所有問題(比如內存合并、共享內存同步 / 沖突、張量核心調度)。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

Triton 中的向量加法。

雖然這對 embarrassingly 并行(即 element-wise)計算可能沒什么幫助,但是可以簡化更復雜的 GPU 程序的開發。例如,在融合 softmax 核的情況下,對于每個輸入張量 X∈R^M×N 來說,每個實例對給定輸入張量的不同行進行歸一化。這種并行化策略的標準 CUDA 實現可能難以編寫,需要線程之間的顯式同步,因為這種策略并發地減少 X 的同一行。而 Triton 很大程度上消除了這種復雜性,每個內核實例加載感興趣的行,并使用類似 NumPy 的原語順序對其進行規范化。

  1. import triton 
  2. import triton.language as tl 
  3. @triton.jit 
  4. def softmax(Y, stride_ym, stride_yn, X, stride_xm, stride_xn, M, N): 
  5.     # row index 
  6.     m = tl.program_id(0
  7.     # col indices 
  8.     # this specific kernel only works for matrices that  
  9.     # have less than BLOCK_SIZE columns 
  10.     BLOCK_SIZE = 1024 
  11.     n = tl.arange(0, BLOCK_SIZE) 
  12.     # the memory address of all the elements 
  13.     # that we want to load can be computed as follows 
  14.     X = X + m * stride_xm + n * stride_xn 
  15.     # load input data; pad out-of-bounds elements with 0  
  16.     x = tl.load(X, mask=n < N, other=-float('inf')) 
  17.     # compute numerically-stable softmax 
  18.     z = x - tl.max(x, axis=0
  19.     num = tl.exp(z) 
  20.     denom = tl.sum(num, axis=0
  21.     y = num / denom 
  22.     # write back to Y 
  23.     Y = Y + m * stride_ym + n * stride_yn 
  24.     tl.store(Y, y, mask=n < N) 
  25. import torch 
  26. # Allocate input/output tensors 
  27. X = torch.normal(01, size=(583931), device='cuda'
  28. Y = torch.empty_like(X) 
  29. # SPMD launch grid 
  30. grid = (X.shape[0], ) 
  31. # enqueue GPU kernel 
  32. softmax[grid](Y, Y.stride(0), Y.stride(1),  
  33.               X, X.stride(0), X.stride(1), 
  34.               X.shape[0]    , X.shape[1]) 

在 Triton 中融合 softmax

Triton JIT 把 X、Y 當作指針而不是張量。最重要的是,softmax 這種特殊實現方式在整個規范化過程中保持 SRAM 中 X 的行不變,從而在適用時最大限度地實現數據重用(約 32K 列)。這與 PyTorch 的內部 CUDA 代碼不同,后者使用臨時內存使其更通用,但速度明顯變慢(見下圖)。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

融合 softmax、M=4096 的 A100 性能。

Torch (v1.9) JIT 較低的性能突出了從高級張量操作序列自動生成 CUDA 代碼的難度。

  1. @torch.jit.script 
  2. def softmax(x): 
  3.     x_max = x.max(dim=1)[0
  4.     z = x - x_max[:, None] 
  5.     numerator = torch.exp(x) 
  6.     denominator = numerator.sum(dim=1
  7.     return numerator / denominator[:, None] 

融合 softmax 與 Torch JIT

矩陣乘法

能夠為元素操作(element-wise operation)和規約操作(reduction operation)編寫融合內核是很重要的,但考慮到神經網絡中矩陣乘法的重要性,這還不夠。事實證明,Triton 在這些方面表現很好,僅用大約 25 行 Python 代碼就能達到最佳性能。相比之下,CUDA 效率就沒有那么高了。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

Triton 中的矩陣乘法。

手寫矩陣乘法內核的一個重要優點是它們可以根據需要進行定制,以適應其輸入(例如切片)和輸出(例如 Leaky ReLU)的融合變換。假如不存在 Triton 這樣的系統,那么對于沒有出色的 GPU 編程專業知識的開發人員來說,矩陣乘法內核將很難大改。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

高級系統架構

Triton 的良好性能得益于以 Triton-IR 為中心的模塊化系統架構。Triton-IR 是一種基于 LLVM 的中間表示,多維值塊(blocks of values)是其中最重要的東西。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

Triton 的高級架構。

@triton.jit 裝飾器的工作原理是遍歷由 Python 函數提供的抽象語法樹(AST),這樣一來就能使用通用的 SSA 構造算法實時生成 Triton-IR。生成的 IR 代碼隨后由編譯器后端進行簡化、優化和自動并行化,然后轉換為高質量的 LLVM-IR,最終轉換為 PTX,以便在最新的 NVIDIA GPU 上執行。目前 Triton 還不支持 CPU 和 AMD GPU,但團隊表示對二者的支持正在開發中。

編譯器后端

研究人員發現通過 Triton-IR 來使用塊狀程序表示,這種方法允許編譯器自動執行各種重要的程序優化。例如,通過查看計算密集型塊級操作(例如 tl.dot)的操作數,數據可以自動存儲到共享內存中,并使用標準的活躍性分析技術進行數據的分配與同步。

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

Triton 編譯器通過分析計算密集型操作中使用的塊變量的活動范圍來分配共享內存。

此外,Triton 還可以在 SM 之間以及 SM 之內高效、自動地并行化,前者通過并發執行不同的內核實例來實現,后者通過分析每個塊級操作的迭代空間,并將其充分劃分到不同的 SIMD 單元來實現。如下所示:

在CUDA的天下,OpenAI開源GPU編程語言Triton,同時支持N卡和A卡

Triton 自動并行化。每個塊級操作都定義了一個塊級迭代空間,該空間可以自動并行化以利用 SM(Streaming Multiprocessor) 上的可用資源。

 

責任編輯:張燕妮 來源: 機器之心Pro
相關推薦

2024-10-08 10:15:00

AI模型

2024-09-09 16:22:51

2025-10-21 08:52:00

2025-09-30 09:05:06

2023-09-27 12:17:06

2015-12-04 10:05:09

蘋果編程開源

2021-06-02 10:01:20

開源技術 軟件

2011-04-21 14:50:24

筆記本游戲AMD

2023-12-04 18:13:03

GPU編程

2020-05-06 22:55:09

顯卡識別工具

2020-06-23 07:56:57

虛擬桌面AMDNvidia

2018-02-01 14:02:48

虛擬化

2020-10-13 06:34:15

編程語言IDE

2020-04-23 16:25:38

NVIDIA RTXN卡游戲卡

2024-09-26 16:34:06

2021-01-13 13:51:04

鴻蒙HarmonyOSTab選項卡

2020-05-08 17:23:14

Windows 10Windows游戲變卡

2023-05-17 10:05:56

2009-08-06 10:07:10

2024-07-16 13:22:42

點贊
收藏

51CTO技術棧公眾號

国产精品偷拍| 一区二区三区在线免费观看视频| 日韩精品一区二区三区中文| 亚洲一区二区三区四区中文字幕| 精品一区二区国产| 最近日韩免费视频| 激情综合激情| 中文字幕在线成人| 秘密基地免费观看完整版中文 | 自拍偷拍亚洲欧美日韩| 国产精品一 二 三| 中文字幕人妻丝袜乱一区三区| 欧美黄污视频| 夜夜嗨av色一区二区不卡| 欧美人与性动交α欧美精品| 日本美女一区| 亚洲大片一区二区三区| 亚洲一区二区在线观| 日日躁夜夜躁白天躁晚上躁91| 麻豆精品91| 欧美激情一区二区三区成人| eeuss中文字幕| 欧美亚洲色图校园春色| 91精品国产91久久综合桃花| 无码无遮挡又大又爽又黄的视频| 欧美寡妇性猛交xxx免费| 国产精品污www在线观看| 精品国产一区二区三区日日嗨| 一级黄色片在线播放| 免费永久网站黄欧美| 欧美激情一区二区三级高清视频 | 亚洲网中文字幕| 国产高清不卡| 亚洲成人在线观看视频| 91麻豆天美传媒在线| 91caoporn在线| 国产日韩精品一区| 狼狼综合久久久久综合网| 性中国古装videossex| 狠狠色丁香婷婷综合| 国产精品海角社区在线观看| 性无码专区无码| 在线国产日韩| 久久久久久香蕉网| 国产亚洲第一页| 伊人久久大香线蕉精品组织观看| 日韩中文在线观看| 在线看片中文字幕| 成人免费看片39| 中文字幕精品视频| 激情五月深爱五月| 成人在线亚洲| 伊人久久综合97精品| 男人操女人动态图| 国产成人精品免费视| 亚洲天堂av在线免费观看| 9.1成人看片免费版| 亚洲性视频大全| 亚洲欧美制服丝袜| av电影在线不卡| 成人综合专区| xvideos国产精品| 人妻久久一区二区| 国产精品啊v在线| 高清欧美性猛交xxxx黑人猛交| 欧美一区二区三区爽爽爽| 亚洲国产日韩欧美在线| 欧美国产亚洲精品久久久8v| 久草免费在线视频观看| 激情综合中文娱乐网| 午夜精品久久17c| 国产www在线| 日韩中文字幕av电影| 国产精品国产三级国产aⅴ9色 | 亚洲精品视频一二三| 秋霞a级毛片在线看| 综合久久一区二区三区| 国产日韩欧美大片| av成人 com a| 色婷婷一区二区三区四区| 欧美成人福利在线观看| 欧美经典一区| 精品爽片免费看久久| 69xxx免费| 综合久久十次| 欧美一级高清免费播放| 一区二区视频免费观看| 风间由美性色一区二区三区| 乱色588欧美| 免费在线观看黄色| 亚洲国产视频一区二区| 日本男人操女人| 精品视频一区二区三区| 精品亚洲国产视频| 小早川怜子一区二区的演员表| 狠狠综合久久| 国产成人精品久久久| 国产永久免费视频| 91污片在线观看| 中文字幕剧情在线观看一区| av电影院在线看| 精品视频1区2区3区| 亚洲乱妇老熟女爽到高潮的片| 真实原创一区二区影院| 欧美成人一二三| 日本免费在线观看视频| 国产很黄免费观看久久| 视频一区二区三| mm视频在线视频| 欧美精选午夜久久久乱码6080| 国产chinese中国hdxxxx| 色综合咪咪久久网| 奇米四色中文综合久久| 亚洲av永久无码国产精品久久| 国产亚洲精久久久久久| 福利视频一二区| 国产高清亚洲| 亚洲桃花岛网站| 成人精品在线看| 国产精品亚洲第一| 亚洲综合欧美日韩| 日韩av免费| 日韩二区三区在线| 久久中文字幕无码| 精品写真视频在线观看| 日韩精品久久一区| 黑人巨大亚洲一区二区久 | 欧美性极品xxxx娇小| 日本黄色www| 欧美hentaied在线观看| 日本一区二区三区在线播放| 色哟哟国产精品色哟哟| 一区二区免费在线播放| 欧美又黄又嫩大片a级| 成人在线免费观看网站| 国产精品成人在线| 免费国产在线观看| 欧美性极品xxxx做受| 久久无码人妻精品一区二区三区| 在线 亚洲欧美在线综合一区| 2014亚洲精品| 伊人手机在线| 日韩精品一区二区三区在线播放| 国产少妇在线观看| 国产精品主播直播| 青青草免费在线视频观看| 亚洲我射av| 久久精品国产99国产精品澳门| 中文字幕日本人妻久久久免费| 久久女同精品一区二区| 欧美牲交a欧美牲交| 91久久精品无嫩草影院| 欧美激情精品久久久久久久变态| 91精品国产综合久| 亚洲色图在线看| 91视频福利网| 欧美激情视频一区二区三区免费| 亚洲一区二区三区久久| 日本在线视频网址| 欧美sm极限捆绑bd| 免费看日韩毛片| 91美女在线观看| 九九视频精品在线观看| 成人一区二区| 91久久久久久| 久久青青色综合| 亚洲黄色有码视频| 无码一区二区三区在线观看| 国产欧美一区二区三区鸳鸯浴| 99热手机在线| 国产精品99一区二区三| www.久久久| xxxxxx欧美| 日韩一区二区福利| 亚洲精品一区二区三区四区| 五月天网站亚洲| 日本美女xxx| 国产一区二区三区在线观看免费视频| 97超碰在线视| 婷婷综合电影| 成人黄色大片在线免费观看| 国产最新在线| 亚洲国产精品久久久久秋霞蜜臀 | 麻豆mv在线看| 亚洲午夜未删减在线观看| 国产又粗又长视频| 午夜成人免费电影| 五月天婷婷丁香网| 成人蜜臀av电影| 99视频精品免费| 综合激情一区| 神马影院一区二区| 午夜视频一区二区在线观看| 日韩av免费看网站| 精品美女视频在线观看免费软件| 91麻豆精品国产91久久久使用方法| 麻豆视频在线观看| 91理论电影在线观看| 天天干天天色天天干| 韩国欧美一区| 亚洲午夜精品一区二区| 欧美精品中文| 成人免费在线视频网站| 中文一区一区三区高中清不卡免费| 日韩亚洲欧美成人| 户外极限露出调教在线视频| 欧美不卡一区二区三区四区| 国内av在线播放| 香蕉成人伊视频在线观看| 蜜桃av免费在线观看| 97成人超碰视| 国产成人精品一区二区在线小狼| 久久只有精品| 人妻久久久一区二区三区| 先锋资源久久| 午夜精品亚洲一区二区三区嫩草 | 国产麻豆精品在线| www.超碰com| 亚洲九九精品| 国产在线视频在线| 五月婷婷亚洲| 亚洲国产一区二区精品视频 | 国产一区二区精品久久99| 日韩 欧美 高清| 激情久久一区| 337p亚洲精品色噜噜狠狠p| 色777狠狠狠综合伊人| 欧美视频小说| 日韩激情网站| 精品国产区在线| 国产精品黄网站| aa成人免费视频| 欧洲一区在线| 成人精品久久久| 97成人超碰| 国产精品久久久久久一区二区| 僵尸再翻生在线观看免费国语| 欧美激情按摩在线| 黄色免费网站在线| 久久久国产一区| 欧美成人hd| 久久久av电影| 菠萝菠萝蜜在线观看| 久久久国产影院| 污片在线免费观看| 久久综合伊人77777尤物| 久cao在线| 日韩视频在线免费观看| 免费黄色在线| 欧美猛交免费看| 在线中文字幕视频观看| 欧美高清在线观看| av手机在线观看| 57pao精品| 亚洲天堂一区二区| 国产精品女主播视频| 91精品国产66| 成人亚洲欧美一区二区三区| 国产日本亚洲| 国产精品av一区| 欧美人体视频| 日韩精品福利视频| 99热国内精品永久免费观看| 超碰在线免费观看97| 欧美人与禽猛交乱配视频| 真人抽搐一进一出视频| 国产精品嫩草99av在线| 中文字幕欧美人妻精品一区| 蜜桃久久久久久| 久草福利在线观看| av一区二区久久| 亚洲国产av一区| 中国色在线观看另类| 国产午夜精品理论片| 亚洲黄色尤物视频| 久久久久久91亚洲精品中文字幕| 日本久久电影网| 国产喷水福利在线视频| 精品裸体舞一区二区三区| 深夜视频在线免费| 自拍偷拍亚洲精品| 婷婷av在线| 欧美有码在线观看| 不卡的国产精品| 国产区一区二区三区| 精品国产乱码久久久久久蜜坠欲下 | 一级片免费网站| 亚洲成人激情图| 男人天堂亚洲二区| 久久精品这里热有精品| 国产在线美女| 95av在线视频| 亚洲人成精品久久久 | 狠狠人妻久久久久久综合| 欧美日韩一区二区在线观看视频| 成人乱码一区二区三区| 国产一区二区欧美日韩| 亚洲丝袜一区| 国产精品九九九| 久久夜色精品国产噜噜av小说| 亚洲激情图片| 亚洲少妇在线| 亚洲三级在线视频| 国产蜜臀97一区二区三区 | 羞羞网站在线看| 日韩免费av一区二区| 一区二区三区欧洲区| 亚洲草草视频| 国产精品亚洲欧美| 亚洲精品久久久久久| 国产精品免费人成网站| 三级黄色在线视频| 日韩视频一区二区| 中文字幕在线视频区| 欧美一区二区视频97| 一区二区三区四区视频免费观看 | 丝袜美腿亚洲色图| 北京富婆泄欲对白| 亚洲女同一区二区| 中文字幕精品无码亚| 国产视频精品免费播放| sm久久捆绑调教精品一区| 99在线影院| 欧美午夜电影在线观看 | 99久久国产综合色|国产精品| 成人高潮免费视频| 欧美三级视频在线播放| 成人免费在线电影| 欧洲亚洲妇女av| 美女一区二区在线观看| 国产精品久久久久9999爆乳| 国产精品一卡二| 一区视频免费观看| 91精品福利在线一区二区三区| 在线观看免费黄色| 国产精品一区久久久| 日韩在线观看一区| 自拍偷拍一区二区三区四区| 中文字幕 久热精品 视频在线| 亚洲欧美另类在线视频| 亚洲欧美在线看| 黄色精品视频| 欧美一区二区三区四区五区六区| 国产日韩欧美一区| 毛茸茸多毛bbb毛多视频| 欧美日韩精品在线视频| 日韩三级电影网| 日韩av电影手机在线观看| 亚洲人成精品久久久| 国产视频一区二区视频| 欧美激情一二三区| 在线免费观看日韩视频| 日韩在线欧美在线| 在线播放成人| 欧美日韩中文字幕在线播放| 国产69精品久久99不卡| 日本三级免费看| 日韩国产在线看| 色8久久影院午夜场| 亚洲最大免费| 国产一区中文字幕| 久久视频免费在线观看| 日韩成人在线视频网站| 日韩pacopacomama| 一区二区三区四区免费视频| 精品一区二区三区免费| 久久久久亚洲av片无码下载蜜桃| 精品国产免费视频| 人人视频精品| 裸体大乳女做爰69| 成人av电影在线观看| 久久久精品视频网站| 中文字幕最新精品| www.神马久久| 成人在线观看黄| 亚洲欧美一区二区久久| 三级视频在线看| 国产精品视频专区| 亚洲私人影院| 久久亚洲AV无码专区成人国产| 欧美视频中文字幕| 国产美女一区视频| 日韩.欧美.亚洲| 国产经典欧美精品| 亚洲天堂男人av| 久久中文字幕在线| 中文字幕av一区二区三区人| 特黄视频免费观看| 午夜精品久久久久久不卡8050| 国产一区二区影视| 国产精品一区视频| 视频一区在线视频| 久久久综合久久久| 在线精品国产欧美| 波多野结衣欧美| jizz18女人| 一本久道中文字幕精品亚洲嫩| 成人午夜在线影视| 天天综合狠狠精品| 成人精品gif动图一区|