CUDA軟體如何強化輝達壟斷的護城河?

CUDA

CUDA簡介

什麼是CUDA?

CUDA 是一個平行運算平台和程式設計模型,允許在輝達的 GPU 上進行通用運算。該平台使開發人員能夠利用 GPU 的強大功能進行平行運算,從而加速運算要求較高的應用程式。

關於GPU,請見我的另一篇貼文《圖形處理器(GPU)主要的廠商和用途

CUDA的發佈

輝達於2007年發佈了CUDA。CUDA就是一套輝達GPU提供給客戶的程式設計環境,讓客戶透過這個軟體介面呼叫,存取輝達GPU所提供的所有功能。

CUDA是如何被發明的?

黃仁勲表示過:因為在我們選擇的電玩領域中,你不僅希望它美觀,還希望它動態化,能夠創建虛擬世界。我們一步一步地擴展,並將其引入科學計算。第一個應用之一是分子動力學模擬,另一個是地震處理,基本上是逆物理。地震處理與CT重建非常相似,是另一種形式的逆物理。所以我們一步一步解決問題,擴展到鄰近產業,最後解決了這些問題。

請注意:黃仁勲談的不是只有電腦或電玩產業。

用途

進行通用處理

CUDA是輝達的平行運算平台和應用程式介面。正因為有了CUDA,讓輝達的GPU不限於用於電腦的顯示而已,而是可以被用於其它的用途,進行通用處理。

GPU和CUDA主要用於加速

與通用電腦不同,通用電腦一旦建置好處理器,所有的東西最終都會運作。但GPU是加速計算機,這表示你需要問自己,你要加速什麼?不存在所謂的通用加速器。

不同用途的演算法都是不同的。如果你創建一個處理器,專門擅長這些演算法,並補充CPU處理它擅長的任務,那麼理論上,你可以大大加速應用程式的運作。原因是通常5%到10%的程式碼佔據了99.99%的運行時間。

如果你把那5%的程式碼用輝達的GPU和CUDA來處理,在加速器上,技術上,你可以將應用程式的速度提高100倍。

幾乎所有與機器學習相關的內容都在演進。它可以是SQL資料處理、Spark類型的資料處理,或是向量資料庫類型的處理,處理無結構或結構化的數據,這些資料都是資料幀。我們對這些進行極大的加速,但為了做到這一點,你需要一個頂級的程式庫───那就是CUDA。

最大缺點

CUDA的最大缺點是它缺乏可移植性,因為它只能在輝達的晶片上運作。

封閉不開放

一如蘋果的作法,CUDA是輝達特有的軟體介面,只能用於輝達的硬體上,是封閉不開放的軟體介面。

正因為它的封閉,反而強化了它的獨特性,強化了輝達的競爭力,堆高輝達的整體壟斷性。

為什麼CUDA會形成護城河?

執行效率較佳

它通常被認為速度更快,透過廣泛的程式庫和軟體工具得到更好的支持,並且通常被認為是一個更成熟的平台,與OpenCL相比,CUDA具有更廣泛的用戶基礎。

涵蓋功能廣泛

舉例而言,CUDA提供了cuDNN(用於神經網路運算的函式庫),還有cuOpt(用於組合最佳化的函式庫),cuQuantum(用於量子模擬和模擬的函式庫),以及許多其他的函式庫,像是用於資料幀處理的cuDF,類似SQL的功能。因此,所有這些不同的函式庫都需要被發明出來,它們可以把應用程式中的演算法重新整理,使輝達GPU的加速器能夠運作。如果你使用這些函式庫,你就可以達到100倍的加速,獲得更多的速度,非常驚人。

被廣為接受

請注意,CUDA在深度學習軟體社群中具有更大的吸引力,並且對於AI求職者來說是一種更具吸引力的技能。它是Google的TensorFlow和微軟的CNTK支援的唯一標準,也是大多數其他深度學習框架的主要標準。

如今,許多人工智慧的深度學習框架(包括 Caffe2、Chainer、Databricks、H2O.ai、Keras、MATLAB、MXNet、PyTorch、Theano 和 Torch)都依賴 CUDA 來提供對 GPU的支援。

廣大的使用基礎

輝達晶片的最⼤優勢是花近20年時間開發出來、加速繪圖晶片運算以供AI應⽤的
CUDA,這形成競爭對⼿難以跨越的強⼤護城河。

由於⼤多數AI系統和應⽤已在輝達的CUDA上運⾏,開發⼈員要為其他處理器(例如超微的MI 300、英特爾的Gaudi 3 ,或亞⾺遜的Trainium)重寫這些系統和應⽤,費時⼜有風險。

總之,⽬前輝達的CUDA在後端架構上處於絕對統治地位。替換CUDA這種開發環境,比替換晶片和通道都還要困難。

有多少人使用?

在COMPUTEX 2023期間,輝達透露CUDA擁有超過400萬開發人員、超過3,000個應用程式、驚人的4000萬次CUDA下載量,光是2022年就達到了驚人的2500萬次。此外,輝達平台上已經成立了15,000家新創公司,全球有40,000家大型企業正在利用CUDA進行加速運算。

競爭者

封閉型方案

超微的ROCm

輝達是在2007年發佈CUDA的,超微遲至2016年才發佈ROCm,作為對等的解決方案。CUDA自問世起就支持Linux、Windows多種平台,後者則長期只能支援Linux系統,且不支持部分Linux的更新,並於2023年4月才支援Windows平台。

華為的CANN

CANN(Compute Architecture for Neural Networks)是華為針對AI場景推出的異質運算架構,對上支援多種AI框架,對下服務AI處理器與編程,支援華為的昇騰AI處理器運算效率的關鍵平台。

開放型方案

OpenCL

OpenCL是CUDA的第一個較知名的競爭對手,於2009年推出。然而,儘管OpenCL的豐富性看起來很吸引人,但它在輝達GPU 上的表現不如 CUDA,使後者越來越受歡迎。如今,大多數深度學習框架要不是缺乏OpenCL的支援,不然就是先提供CUDA,後面才會提供OpenCL的版本。

OpenAI的Triton

OpenAI也在於 2019 年開發了⼈⼯智慧應⽤軟體Triton。Meta、微軟和Google等多家公司的⼯程師都參與開發開源的Triton。

Triton最初僅適⽤於輝達GPU,但現在也⽀援輝達Gaudi 和超微的MI300 GPU。其中,Meta⾃主研發的AI晶片 MTIA還採⽤Triton,成為了市場上潛在競爭對⼿。

oneAPI

英特爾、字母、安謀和⾼通等都是UXL Foundation的成員,該聯盟正開發基於英特爾開源平台oneAPI的CUDA替代⽅案。

oneAPI旨在跨不同的運算加速器(協處理器)架構使用,包括GPU、AI 加速器和現場可程式閘陣列(FPGA)。主要目的在消除開發人員必需分別為每個架構維護單獨的程式碼庫、多種程式語言、工具和工作流程的需求;程式嗎只需寫一次就可以在不同的硬體架構下使用。

ZLUDA

ZLUDA 的出現,這是⼀個開放原始碼移植項⽬,允許輝達的CUDA與超微的ROCm兩款運算架構配合使⽤,最終⽀援 GPU 運算。

Mojo


曾在蘋果、特斯拉和字母⼯作過的知名資深⼯程師Chris Lattner,推出針對AI開發商的程式語⾔Mojo,主打毋須使用CUDA,一樣可以撰寫跨硬體平台的AI程式語言,減輕程式設計相容的壓力。

模擬器

Scale

英國一家新創公司,推出了針對超微的CUDA程式編譯工具,而且免費商用。原來的程式碼不需要任何修改轉換,超微晶片也能執行專門為CUDA所撰的程式了。這套軟體工具名為SCALE,開發者給它的定位是一個GPGPU(通用GPU)程式設計工具集。

輝達的對策

禁⽌模擬或相容⽅案

從 2021 年開始,輝達就禁⽌其他硬體平臺使⽤類比層運⾏CUDA 軟體,但只是在線上的 EULA ⽤⼾協定中提出警告。

輝達在2024年3月時,更新 CUDA 11.6 版本的 EULA 協定。其中⼀條提到,「你不能逆向⼯程、反編譯或反彙編使⽤此 SKD ⽣成的任何結果,並在非輝達平臺上進⾏轉譯」。外界揣測,此舉是針對英特爾、超微都參與的 ZLUDA 等第三⽅專案,以及登臨科技 GPU+、沐曦科技等中國廠商的相容⽅案。

持續強化功能

黃仁勲在2024年8 月的第二季法說會中就表示:加速運算始於CUDA-X函式庫。新的資料庫為輝達展開新市場,而輝達已推出許多新的資料庫,包括CUDA-X Accelerated Polars、Pandas和領先的資料科學與資料處理庫Spark,以及用於向量資料庫的CUVI-S。

CUDA
credit: Ideogram

相關文章

重要聲明

  • 本站內容為作者個人意見,僅供參考,本人不對文章內容、資料之正確性、看法、與即時性負任何責任,讀者請務必自行判斷。
  • 對於讀者直接或間接依賴並參考本站資訊後,採取任何投資行為所導致之直接或間接損失,或因此產生之一切責任,本人均不負任何損害賠償及其他法律上之責任。
error: Content is protected !!