CUDA
CUDA
| |
---|---|
Temel veri
| |
geliştirici | Nvidia |
yayın yılı | 23 Haziran 2007 |
Mevcut sürüm |
11.2.2 ( Mart 2021 ) |
işletim sistemi | Windows , Linux , Mac OS X |
kategori | GPGPU |
Lisans | tescilli |
geliştirici.nvidia.com |
CUDA (eski adıyla Compute Unified Device Architecture ), Nvidia tarafından geliştirilen ve program parçalarının grafik işlemcisi (GPU) tarafından işlenebildiği bir programlama tekniğidir . Ek bilgi işlem kapasitesi GPU şeklinde sağlanır, GPU genellikle yüksek derecede paralel olarak çalıştırılabilen program dizileri (yüksek veri paralelliği) durumunda CPU'dan önemli ölçüde daha hızlı çalışır . CUDA esas olarak bilimsel ve teknik hesaplamalarda kullanılır.
Teknik detaylar
Sadece grafik hesaplamaları için kullanılan grafik işlemci, CUDA API sayesinde yardımcı işlemci olarak da kullanılmaktadır . Uygulama örnekleri, sismolojik veya jeolojik problemlerin çözümü, elektromanyetik alanların simülasyonu veya makine öğrenimi alanında sinir ağlarının eğitimidir . CUDA içinde, başka şeylerin yanı sıra, kullanılan SETI @ home projesi kapsamında Network Computing Berkeley Open Altyapı (BOINC). Genel olarak, yalnızca (diğer koşulların yanı sıra) hesaplamaların güçlü bir şekilde paralelleştirilebildiği durumlarda verimli bir şekilde kullanılabilir.
CUDA teknolojisi ile ilgili bir grafik kart ile birlikte kullanılabilir "GeForce 8" serisi ve ilgili Quadro Quadro FX 5600 kartların Tesla kartları Nvidia'nın edilmiştir optimize kullanım için işlem, yüksek performans ve temel olarak ele alınmaktadır ve desteklenmiş CUDA değil, aynı zamanda OpenCL gibi açık standartlar. Hatta bazıları monitör bağlantılarından bile yoksun .
PhysX teknolojisini Ageia'dan satın aldığından beri Nvidia, bu teknolojiyi geliştirmeye devam etti ve CUDA'ya yeniden yazdı.
Mart 2015'te Nvidia, CUDA sürüm 7.0'ı yayınladı.
Eylül 2015'te Nvidia, CUDA 7.5 sürümünü yayınladı.
CUDA sürüm 8.0, yeni Pascal serisini tam olarak destekleyen Eylül 2016'dan beri mevcuttur.
Yeni Volta serisini tam olarak destekleyen, Aralık ayından itibaren 9.1'e güncelleme ve Mart ayından itibaren 9.2 güncellemesine sahip CUDA sürüm 9.0, Eylül 2017'den beri mevcuttur. FERMI artık desteklenmiyor.
CUDA 10, 2018 sonbaharından beri yeni Turing mimarisini desteklemektedir.
programı
Programcılar şu anda CUDA için C kullanıyor (Nvidia uzantılı C). Ayrıca Perl , Python , Ruby , Java , Fortran ve .NET programlama dilleri için sarmalayıcı ve MATLAB , Mathematica ve R'ye bağlantılar vardır . Nvidia, CUDA'yı optimize eden C derleyicisi Open64 ile yarattı . Fermi mimarisinden dolayı C++ da kullanılabilir.
As CUVID (CUDA Video Çözücü API) bir olarak tanımlanmaktadır programlama arayüzünün için deşifre videoyu.
alternatifler
Diğer GPGPU çözümlerine örnekler :
- OpenCL , tüm grafik kartları için çalışan ve çoğu işletim sistemi için kullanılabilen Khronos Group tarafından başlatılan açık bir standarttır.
- Yine Khronos Group tarafından geliştirilen açık Vulkan standardı, OpenCL benzeri hesaplama gölgelendiricilerini de destekler .
- DirectCompute , DirectX API'sine entegre edilmiş GPGPU'lar için bir arayüz.
yazılım
CUDA'yı destekleyen ilk programlardan biri, biyokimyasal hesaplamaların hızını artıran katlama @ home istemcisidir . SETI @ home istemcisi, 17 Aralık 2008'de dünya dışı yaşam arayışını 10 kat hızlandırarak takip etti . Nvidia , videoları CPU ile yapılan bir hesaplamadan 20 kata kadar daha hızlı dönüştürebilen bir video dönüştürücü olan "Badaboom" yazılımını çıkardı . CUDA'yı kullanan diğer programlar "TMPGEnc", Sorenson Squeeze 7, CS4'ten Adobe Photoshop (bu, filtrelerin kullanımını hızlandırır), CS5.5'ten Adobe Premiere Pro ve Mathematica 8+ ve Nvidia yazılımı StyleGAN'dır .
MSC / Nastran 2013+ gibi simülasyon yazılımları bazen CUDA ile çok hızlandırılır; Büyük modellerde çok küçük bir GPU belleği engel olabilir. OpenFoam ve ANSYS gibi diğer önde gelen CFD ve FEM yazılımları, hesaplamaları hızlandırmak için CUDA'yı kullanır. Bu özel aritmetik işlemlerde GPU'nun CPU'ya göre daha yüksek verimliliği nedeniyle hesaplamaların güç tüketimi bazen düşmektedir.
Eleştiri, dezavantajlar
Grafik işlemcileri ( GPU'lar ), uygulamaya özel tasarıma sahip işlemcilerdir, bu nedenle GPU'lar, sabit ondalık basamaklı 9 bit veya 12 bit gibi egzotik veri türlerine daha aşinadır, ancak genellikle 32, 48 kayıt genişlikleri yoktur . , genel amaçlı CPU'lar ve FPU'lar (vb.) için ortak 64 veya 80 bit. Bu nedenle, örneğin IEEE 754'e ( çift kesinlik için 64 bit ) göre doğruluklarla hesaplamalar, genellikle GPU'nun komut setinde sağlanmaz ve yazılım tarafından nispeten karmaşık bir şekilde taklit edilmesi gerekir. Bu nedenle GPU'lar, nispeten küçük bit genişlikleriyle çalışan veri türlerini hesaplamak için özellikle uygundur.
Mevcut durum (2010) itibariyle, ilk üreticiler GPU'nun gerektirdiği veri türlerine ek olarak evrensel veri türleri ve işlemleri de içeren gelişmiş GPU'lar üretiyorlar, örn. B. IEEE 754 uyumlu sonuçların doğrudan hesaplanması için. Halihazırda lider üreticilerden biri olan Nvidia, hem 32 bit tamsayılar hem de tek ve çift duyarlıklı kayan nokta veri formatlarını yerel olarak (kayan / çift) sağlayan Fermi nesil GPU'lar sağlar.
Diğer bir dezavantaj, bilgisayar mimarisine bağlantıdır.Mevcut GPU'larda, genellikle PCIe üzerinden yapılır ve işlemcilerin doğrudan bağlantısına kıyasla, daha kötü (daha yüksek) gecikme süreleri ve daha düşük G / Ç çıktı oranları ile sonuçlanır . Bu nedenle dış kaynak kullanımı, yalnızca belirli bir miktarda hesaplama çabası gerektiren işlevler için faydalıdır - özellikle bir GPU, talimat seti açısından bu görevler için daha uygunsa (örneğin, büyük matrisler için ).
Bir üreticiye sıkı bağlılık da eleştiriliyor. CUDA kullanıyorsanız, MMX veya SSE uzantılı CPU kitaplıklarının (pratik olarak çeşitli x86 işlemci üreticilerinin tüm CPU'larında çalışır ) aksine , bir programı GPU üreticisi Nvidia'ya ve dolayısıyla Nvidia donanımının varlığına bağlarsınız. OpenCL, bir anda dayanan Vulkan / SPIR-V , daha evrensel ve teklifler Nvidia, GPU için bir uygulama AMD (eski adı ATI), VIA , S3 ve diğerleri. Bu amaçla, x86 işlemciler için CPU desteği SSE3 uzantıları aracılığıyla uygulanır ve IBM ayrıca Power mimarisi ve Hücre Geniş Bant Motoru için bir OpenCL uygulaması sunar . Bununla birlikte, OpenCL'nin daha geniş yaklaşımı, CUDA ile OpenCL (aynı Nvidia donanımında) karşılaştırıldığında gözle görülür bir performans dezavantajı ile sonuçlanır. OpenCL kullanırken soruna bağlı olarak %5 ile %50 arasında kayıplar gözlemlenebilir.
Desteklenen GPU'lar
GPU ve kartın desteklenen CUDA sürümlerinin seviyeleri.
CUDA Hesaplama Yeteneği (Sürüm) |
CUDA Araç Takımı Desteği |
mikro mimari |
GPU'lar | Geforce / Tegra / Jetson | dörtlü | tesla |
---|---|---|---|---|---|---|
1.0 | 1.0-6.5 | tesla | G80 | GeForce 8800 Ultra, GeForce 8800 GTX, GeForce 8800 GTS (G80), | Quadro FX 5600, Quadro FX 4600, Quadro Plex 2100 S4, | Tesla C870, Tesla D870, Tesla S870 |
1.1 | 1.1-6.5 | G92, G94, G96, G98, G84, G86 | GeForce GTS 250, GeForce 9800 GX2, GeForce 9800 GTX, GeForce 9800 GT, GeForce 8800 GTS (G92), GeForce 8800 GT, GeForce 9600 GT, GeForce 9500 GT, GeForce 9400 GT, GeForce 8600 GTS, GeForce 8600 GT, GeForce 8500 GT ,
GeForce G110M, GeForce 9300M GS, GeForce 9200M GS, GeForce 9100M G, GeForce 8400M GT, GeForce G105M |
Quadro FX 4700 X2, Quadro FX 3700, Quadro FX 1800, Quadro FX 1700, Quadro FX 580, Quadro FX 570, Quadro FX 470, Quadro FX 380, Quadro FX 370, Quadro FX 370 Düşük Profil, Quadro NVS 450, Quadro NVS 420, Quadro NVS 290, Quadro NVS 295, Quadro Plex 2100 D4, |
Hayır | |
1.2 | 2.3-6.5 | GT218, GT216, GT215 | GeForce GT 340 *, GeForce GT 330 *, GeForce GT 320 *, GeForce 315 *, GeForce 310 *, GeForce GT 240, GeForce GT 220, GeForce 210,
GeForce GTS 360M, GeForce GTS 350M, GeForce GT 335M, GeForce GT 330M, GeForce GT 325M, GeForce GT 240M, GeForce G210M, GeForce 310M, GeForce 305M |
Quadro FX 380 Düşük Profil, NVIDIA NVS 300,
Quadro FX 1800M, Quadro FX 880M, Quadro FX 380M, NVIDIA NVS 300, NVS 5100M, NVS 3100M, NVS 2100M, ION |
- | |
1.3 | 3.0-6.5 | GT200, GT200b | GeForce GTX 295, GTX 285, GTX 280, GeForce GTX 275, GeForce GTX 260, | Quadro FX 5800, Quadro FX 4800, Mac için Quadro FX 4800, Quadro FX 3800, Quadro CX, Quadro Plex 2200 D2 | Tesla C1060, Tesla S1070, Tesla M1060 | |
2.0 | 3.0-8.0 | fermi | GF100, GF110 | GeForce GTX 590, GeForce GTX 580, GeForce GTX 570, GeForce GTX 480, GeForce GTX 470, GeForce GTX 465,
GeForce GTX480M |
Quadro 6000, Quadro 5000, Quadro 4000, Mac için Quadro 4000, Quadro Plex 7000,
Quadro 5010M, Quadro 5000M |
Tesla C2075, Tesla C2050 / C2070, Tesla M2050 / M2070 / M2075 / M2090 |
2.1 | 3.2-8.0 | GF104, GF106 GF108, GF114, GF116, GF117, GF119 | GeForce GTX 560 Ti, GeForce GTX 550 Ti, GeForce GTX 460, GeForce GTS 450, GeForce GTS 450 *, GeForce GT 640 (GDDR3), GeForce GT 630, GeForce GT 620, GeForce GT 610, GeForce GT 520, GeForce GT 440, GeForce GT 440 *, GeForce GT 430, GeForce GT 430 *, GeForce GT 420 *,
GeForce GTX 675M, GeForce GTX 670M, GeForce GT 635M, GeForce GT 630M, GeForce GT 625M, GeForce GT 720M, GeForce GT 620M, GeForce 710M, GeForce 610M, GeForce GTX 580M, GeForce GTX 570M, GeForce GTX 560M, GeForce GTX 560M, GeForce GT 550M, GeForce GT 540M, GeForce GT 525M, GeForce GT 520MX, GeForce GT 520M, GeForce GTX 485M, GeForce GTX 470M, GeForce GTX 460M, GeForce GT 445M, GeForce GT 435M, GeForce GT 420M, GeForce GT 415M, GeForce GT 415M, GeForce 410M, |
Quadro 2000, Quadro 2000D, Quadro 600, Quadro 410,
Quadro 4000M, Quadro 3000M, Quadro 2000M, Quadro 1000M, NVS 5400M, NVS 5200M, NVS 4200M |
Hayır | |
3.0 | 4.2-10.2 | Kepler | GK104, GK106, GK107 | GeForce GTX 770, GeForce GTX 760, GeForce GT 740, GeForce GTX 690, GeForce GTX 680, GeForce GTX 670, GeForce GTX 660 Ti, GeForce GTX 660, GeForce GTX 650 Ti BOOST, GeForce GTX 650 Ti, GeForce GTX 650,
GeForce GTX 880M, GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GTX 680MX, GeForce GTX 680M, GeForce GTX 675MX, GeForce GTX 670MX, GeForce GTX 660M, GeForce 750M, GeForce GTX 650M, GeForce 750M 745M , GeForce GT 645M, GeForce GT 740M, GeForce GT 730M, GeForce GT 640M, GeForce GT 640M LE, GeForce GT 735M, GeForce GT 730M |
Quadro K5000, Quadro K4200, Quadro K4000, Quadro K2000, Quadro K2000D, Quadro K600, Quadro K420,
Quadro K500M, Quadro K510M, Quadro K610M, Quadro K1000M, Quadro K2000M, Quadro K1100M, Quadro K2100M, Quadro K3000M, Quadro K3100M, Quadro K4000M, Quadro K5000M, Quadro K4100M, Quadro K5100M |
Tesla K10, IZGARA K340, IZGARA K520 |
3.2 | Tegra TK | GK20A | Jetson TK1 (Tegra K1) | Hayır | Hayır | |
3.5 | 5.0-11.2 | GK110, GK208 | GeForce GTX TITAN Z, GeForce GTX TITAN Siyah, GeForce GTX TITAN, GeForce GTX 780 Ti, GeForce GTX 780, GeForce GT 640 (GDDR5), GeForce GT 630 v2, GeForce GT 730, GeForce GT 720, GeForce GT 710, GeForce GT 740M (64-bit, DDR3) | Quadro K6000, Quadro K5200, | Tesla K40, Tesla K20x, Tesla K20, | |
3.7 | 5.5-11.2 | GK210 | Hayır | Hayır | Tesla K80 | |
5.0 | 6.0-11.2 | Maxwell | GM107, GM108 | GeForce GTX 750 Ti, GeForce GTX 750, GeForce GTX 960M, GeForce GTX 950M, GeForce 940M, GeForce 930M, GeForce GTX 860M, GeForce GTX 850M, GeForce 845M, GeForce 840M, GeForce 830M |
Quadro K2200, Quadro K1200, Quadro K620,
Quadro M2000M, Quadro M1000M, Quadro M600M, Quadro K620M |
Hayır |
5.2 | 6.5-11.2 | GM200, GM204, GM206 | GeForce GTX TITAN X, GeForce GTX 980 Ti, GeForce GTX 980, GeForce GTX 970, GeForce GTX 960, GeForce GTX 950, GeForce GTX 750 SE, GeForce GTX 980M, GeForce GTX 970M, GeForce GTX 965M |
Quadro M6000 24GB, Quadro M6000, Quadro M5000, Quadro M4000, Quadro M2000,
Quadro M5500, Quadro M5000M, Quadro M4000M, Quadro M3000M |
Tesla M4, Tesla M40, Tesla M6, Tesla M60 | |
5.3 | Tegra TK | GM20B | Jetson TX1 (Tegra X1) | Hayır | Hayır | |
6.0 | 8.0-11.2 | paskal | GP100 | - | - | Tesla P100 |
6.1 | 8.0-10.2 | GP102 | Titan X, GeForce GTX 1080 Ti | Dörtlü P6000 | Tesla P40 | |
GP104 | GeForce GTX 1070, GeForce GTX 1080 | Dörtlü P5000 | Tesla P4 | |||
GP106 | GeForce GTX 1060 | |||||
GP107 | GeForce GTX 1050, GeForce GTX 1050 Ti | |||||
GP108 | ||||||
7.0 | 9.0-11.2 | Volta | GV100 | NVIDIA TITAN V | Dörtlü GV100 | Tesla V100 |
7.2 | 9.0-11.2 | GV10B | NVIDIA Jetson AGX Xavier | |||
7.5 | 10.0-11.2 | Turing | TU102, TU104, TU106 | NVIDIA TITAN RTX, GeForce RTX 2080 Ti, RTX 2080 Süper, RTX 2080, RTX 2070 Süper, RTX 2070, RTX 2060 Süper, RTX 2060, |
Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Quadro RTX 4000, Quadro T2000, Quadro T1000 | Tesla T4 |
8.0 | 11.0-11.2 | amfi | GA100 | - | - | A100 |
8.6 | 11.1-11.2 | GA102, GA104, GA106 | GeForce RTX 3090, RTX 3080, RTX 3070, RTX 3060 Ti, RTX 3060, RTX 3050 Ti | RTX A6000, A40 | ||
? | aşk bağı | tbd | tbd | |||
? | hazne | tbd |
Tesla mikro mimarisi (Compute Capability 1.x), CUDA SDK sürüm 6.5 ile son kez destekleniyor.
Fermi mikro mimarisi (Compute Capability 2.x), CUDA SDK Sürüm 8.0 ile son kez destekleniyor.
Kepler mikro mimarisinin parçaları (Compute Capability 3.0), CUDA SDK sürüm 10.2 ile son kez destekleniyor.
Edebiyat
- Jason Sanders, Edward Kandrot: Örnek olarak CUDA. Genel Amaçlı GPU Programlamaya Giriş. Addison-Wesley , ISBN 978-0-13-138768-3 .
İnternet linkleri
- Nvidia CUDA (İngilizce) - Resmi web sitesi
- Nvidia Cuda: CPU'nun sonu mu? - Tom's Hardware ile ilgili makale, 18 Haziran 2008
- GPU4Vision (İngilizce) - TU Graz'da bilimsel yayınlar ve daha fazlası
- Hakem Kılavuzu (PDF; 1.5 MB) - Eugen Siwon, Vasquez Systemlösungen, Berlin tarafından yazılan "Adobe CS5 için Nvidia Quadro FX Gözden Geçirenler Kılavuzu (Premiere Pro CS5 dahil)" makalesine eklemeler içeren Almanca çeviri
- CUDA destekli video yazılımlarının listesi - video düzenleme PC VIDEOSTATION ana sayfasındaki makaleler
- Python: PyCUDA
- Java: JCuda
- .NET: cuda.NET
- Fortran: grup
Bireysel kanıt
- ↑ docs.nvidia.com .
- ↑ geliştirici.nvidia.com .
- ↑ a b c d CUDA Araç Takımı Arşivi. 2 Ağustos 2018'de erişildi .
- ↑ çevrimiçi: CUDA 10, Nvidia'nın Turing GPU'larını destekler. 2 Nisan 2019'da alındı .
- ↑ Mike Murphy: Nvidia'nın Open64 ile Deneyimi. ( MS Word ; 83 kB) 6 Ağustos 2009'da alındı .
- ↑ LAV CUVID ( Memento ait orijinal Ekim 6, 2014 , Internet Archive ) Bilgi: arşiv bağlantısı otomatik olarak sokulmuş ve henüz kontrol edilmedi. Lütfen orijinal ve arşiv bağlantısını talimatlara göre kontrol edin ve ardından bu uyarıyı kaldırın.
- ↑ http://pages.mscsoftware.com/rs/mscsoftware/images/Paper_GPU%20Computing%20with%20MSC%20Nastran%202013.pdf
- ↑ http://on-demand.gputechconf.com/gtc/2014/jp/sessions/9002.pdf
- ↑ Fermi Bilgi İşlem Mimarisi Teknik Raporu , Nvidia hakkında Fermi (PDF; 876 kB) 21 Eylül 2010'da erişildi
- ↑ Nvidia'dan OpenCL'ye (28 Eylül 2009)
- ↑ ATI Stream ve OpenCL'de AMD ( İnternet Arşivinde 9 Ağustos 2009 tarihli orijinalin hatırası ) Bilgi: Arşiv bağlantısı otomatik olarak eklendi ve henüz kontrol edilmedi. Lütfen orijinal ve arşiv bağlantısını talimatlara göre kontrol edin ve ardından bu uyarıyı kaldırın. (1 Ekim 2009)
- ↑ VIA VN1000 yongaseti Grafik İşlemci Enhanced getiriyor ( içinde Memento'yu orijinal Aralık 15, 2009 İnternet Arşivi ) Bilgi: arşiv bağlantısı otomatik olarak sokulmuş ve henüz kontrol edilmedi. Lütfen orijinal ve arşiv bağlantısını talimatlara göre kontrol edin ve ardından bu uyarıyı kaldırın. (10 Aralık 2009)
- ↑ S3 Graphics, Chrome 5400E yerleşik grafik işlemcisini piyasaya sürdü (27 Ekim 2009)
- ↑ Power on Linux için OpenCL Geliştirme Kiti (30 Ekim 2009)
- ↑ CUDA ve OpenCL'nin Performans Karşılaştırması (12 Ağustos 2010; PDF; 62 kB)
- ↑ OpenCL GPGPU Performansı OpenCL ve CUDA / STREAM (1 Kasım 2009)
- ↑ CUDA GPU'lar. 4 Haziran 2012, erişim tarihi 15 Kasım 2019 .
- ↑ CUDA Araç Takımı Arşivi. 30 Temmuz 2013, 2 Nisan 2019'da erişildi .
- ↑ Hassan Mujtaba: NVIDIA Pascal ve Volta GPU'ları Artık En Yeni GeForce 358.66 Sürücüleri Tarafından Destekleniyor - Ayrıca Vulkan API için Ön Destek Ekliyor. İçinde: Wccftech. 4 Kasım 2015. Erişim tarihi: 2 Nisan 2019 (Amerikan İngilizcesi).
- ↑ NVIDIA GV10B GPU Özellikleri. 2 Nisan 2019'da erişildi .
- ↑ CUDA Araç Takımı Arşivi .
- ↑ https://github.com/tensorflow/tensorflow/issues/44750
- ↑ https://docs.nvidia.com/cuda/ampere-tuning-guide/index.html CUDA Toolkit sürüm 11.2.0 için belgeler
- ↑ CUDA hesaplama yeteneği gereksinimleri. 2 Nisan 2019'da alındı .