CUDA

CUDA

CUDA.png
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 :

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,
Quadro FX 3800M, Quadro FX 3700M, Quadro FX 3600M, Quadro FX 2800M, Quadro FX 2700M, Quadro FX 1700M, Quadro FX 1600M, Quadro FX 770M, Quadro FX 570M, Quadro FX 370M, Quadro FX 360M, Quadro NVS 320M, Quadro NVS 160M, Quadro NVS 150M, Quadro NVS 140M, Quadro NVS 135M, Quadro NVS 130M, Quadro NVS 450, Quadro NVS 420, Quadro NVS 295

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,
GeForce GTX 1660 Ti, GTX 1660 Süper, GTX 1660, GTX 1650 Süper, GTX 1650

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

İnternet linkleri

Bireysel kanıt

  1. docs.nvidia.com .
  2. geliştirici.nvidia.com .
  3. a b c d CUDA Araç Takımı Arşivi. 2 Ağustos 2018'de erişildi .
  4. çevrimiçi: CUDA 10, Nvidia'nın Turing GPU'larını destekler. 2 Nisan 2019'da alındı .
  5. Mike Murphy: Nvidia'nın Open64 ile Deneyimi. ( MS Word ; 83 kB) 6 Ağustos 2009'da alındı .
  6. 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.  @1@ 2Şablon: Webachiv / IABot / 1f0.de
  7. http://pages.mscsoftware.com/rs/mscsoftware/images/Paper_GPU%20Computing%20with%20MSC%20Nastran%202013.pdf
  8. http://on-demand.gputechconf.com/gtc/2014/jp/sessions/9002.pdf
  9. Fermi Bilgi İşlem Mimarisi Teknik Raporu , Nvidia hakkında Fermi (PDF; 876 kB) 21 Eylül 2010'da erişildi
  10. Nvidia'dan OpenCL'ye (28 Eylül 2009)
  11. 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)  @1@ 2Şablon: Webachiv / IABot / developer.amd.com
  12. 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)  @1@ 2Şablon: Webachiv / IABot / www.via.com.tw
  13. S3 Graphics, Chrome 5400E yerleşik grafik işlemcisini piyasaya sürdü (27 Ekim 2009)
  14. Power on Linux için OpenCL Geliştirme Kiti (30 Ekim 2009)
  15. CUDA ve OpenCL'nin Performans Karşılaştırması (12 Ağustos 2010; PDF; 62 kB)
  16. OpenCL GPGPU Performansı OpenCL ve CUDA / STREAM (1 Kasım 2009)
  17. CUDA GPU'lar. 4 Haziran 2012, erişim tarihi 15 Kasım 2019 .
  18. CUDA Araç Takımı Arşivi. 30 Temmuz 2013, 2 Nisan 2019'da erişildi .
  19. 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).
  20. NVIDIA GV10B GPU Özellikleri. 2 Nisan 2019'da erişildi .
  21. CUDA Araç Takımı Arşivi .
  22. https://github.com/tensorflow/tensorflow/issues/44750
  23. https://docs.nvidia.com/cuda/ampere-tuning-guide/index.html CUDA Toolkit sürüm 11.2.0 için belgeler
  24. CUDA hesaplama yeteneği gereksinimleri. 2 Nisan 2019'da alındı .