Grafik İşlem Biriminde Genel Amaçlı Hesaplama
Grafik İşlem Birimiyle İlgili Genel Amaçlı Hesaplama (kısaca GPGPU , grafik işleme birimi ( leri) hakkında genel amaçlı hesaplama için İngilizce'den gelir) , orijinal kapsamı dışındaki hesaplamalar için bir grafik işlemcisinin kullanılması anlamına gelir . Bu, örneğin teknik veya ekonomik simülasyonlar için hesaplamalar olabilir. Paralel algoritmalar ile ana işlemciye kıyasla çok büyük bir hız artışı elde edilebilir.
genel bakış
GPGPU , grafik işlemcilerinin gölgelendiricilerinden ortaya çıktı . Gücü, pikselleri renklendirme veya büyük matrisleri çarpma gibi tek tip görevleri aynı anda gerçekleştirmede yatmaktadır . Modern işlemcilerin hızındaki artış şu anda (öncelikle) saat hızının arttırılmasıyla sağlanamadığından, paralelleştirme modern bilgisayarlarda daha yüksek bilgi işlem gücü elde etmede önemli bir faktördür. GPU'yu CPU'ya göre kullanmanın avantajı, daha yüksek bilgi işlem gücü ve daha yüksek bellek bant genişliğidir. Hız, esas olarak grafik işlemcisinin aritmetik işlemlerinin yüksek derecede paralelliği ile elde edilir.
model | teorik bilgi işlem gücü | Bellek veri yolu veri hızı ( GByte / s ) |
Depolama türü | Sanat | |
---|---|---|---|---|---|
basit ile | iki katına | ||||
Doğruluk ( GFlops ) | |||||
AMD Radeon Pro Duo | 16.384 | 1.024 | 1.024 | HBM | GPU |
AMD Radeon R9 Öfke X | 8.602 | 538 | 512 | ||
Nvidia Geforce GTX Titan X | 6.144 | 192 | 336 | GDDR5 | |
AMD FirePro W9100 | 5.350 | 2.675 | 320 | ||
Nvidia Tesla K20X | 3.950 | 1.310 | 250 | ||
AMD Radeon HD7970 | 3.789 | 947 | 264 | ||
Intel Xeon Phi 7120 | 2,420 | 1.210 | 352 | yardımcı işlemci | |
PlayStation 4 SoC ( AMD ) | 1.860 | - | 167 | APU | |
Nvidia Geforce GTX580 | 1.581 | 198 | 192.4 | GPU | |
Intel Xeon E7-8890 v3 | 1.440 | 720 | 102.4 (?) | DDR4 | İşlemci |
AMD A10-7850k | 856 | - | 34 | DDR3 | APU |
Intel Core i7-3930K | 307.2 | 153.6 | 51.2 | İşlemci | |
SSE3, 3.6 GHz özellikli Intel Pentium 4 | 14.4 | 7.2 | 6.4 | DDR2 |
Fragment ve vertex shader'ları aynı anda çalışabilir. Diğer bir avantaj, benzer hızlı diğer çözümlere kıyasla düşük fiyatının yanı sıra, günümüzde hemen hemen her bilgisayarda uygun grafik kartlarının bulunabilmesidir.
Tarih
Başlangıçta, gölgelendiriciler yalnızca grafiksel hesaplamalarla yakından bağlantılı özel işlevlerle ilişkilendirildi. Tek tek piksellerin hesaplanmasının hızını hızlandırmak için, birkaç benzer aritmetik birimi kullanarak tek tek piksellerin hesaplanmasını aynı anda yürütmeye geçildi. Daha sonra, gölgelendiricilerin çok sınırlı yeteneklerini, onları herhangi bir görev için büyük ölçüde paralel hesaplama birimlerine dönüştürmek için genişletme fikri: İlk - aşağı yukarı - serbestçe programlanabilir gölgelendiriciler ortaya çıktı. Gölgelendiricileri özgürce programlanabilir bir şekilde tasarlama trendi bugüne kadar devam ediyor ve her yeni nesil teknoloji ile çip tasarımcıları tarafından ileriye doğru itiliyor. Modern GPU'larda bazen bu programlanabilir gölgelendirici birimlerinden 1000'den fazla bulunur ve bu nedenle aynı anda 1000'den fazla bilgi işlem işlemi gerçekleştirebilir.
eleştiri
OpenCL tarafından GPGPU hesaplamalarını uygulamak için tek tip bir arayüz mevcuttur. Geleneksel CPU'lara kıyasla dezavantaj, bu avantajlardan yararlanmak için programların yürütülmesi gereken büyük paralelliktir. GPU'ların işlevleri de sınırlıdır. Bilim sektörü için özel grafik modelleri ( Nvidia Tesla , AMD FireStream ) bulunmaktadır . Bu grafik kartlarının hafızasında hata düzeltme prosedürleri vardır ve kayan noktalı sayıların hesaplanmasındaki doğrulukları daha fazladır ve bu da maliyetlere yansır.
programlama
OpenCL , CUDA ve 2012'den beri C ++ AMP temel olarak GPGPU uyumlu programlar geliştirmek için kullanılabilir . CUDA tescilli iken OpenCL, birçok platformlarda kullanılabilir bir açık standarttır çerçeve gelen Nvidia ve sadece bu üreticiden GPU'ları yayınlanabilir. AMP biridir Microsoft başlatılan C ++ küçük ile birlikte -Spracherweiterung şablonu - kütüphanede onlar ne Microsoft ürünleri, ne de belli Hızlandırıcı için anlamda açık olan donanım , tip veya belirli donanım üreticileri (sadece GPGPUs kullanabilirsiniz sınırlıdır ama aynı zamanda CPU'lar ve gelecekte bulut bilişim gibi başka paralelleştirme seçenekleri ). Microsoft'un AMP uygulamasında GPU'nun DirectX Sürüm 11'i desteklemesi bekleniyor, çünkü yalnızca bu sürümde GPU'ların GPGPU'lar olarak kullanımına özel önem verildi. AMP kullanan bir program yeterince güncel bir GPU bulamazsa, AMP yardımıyla programlanan algoritma, paralelleştirme seçenekleri ( birden fazla işlemci çekirdeğinde çoklu okuma , SIMD talimatları) kullanılarak CPU üzerinde otomatik olarak yürütülür. Bu nedenle AMP, bir algoritma ile yürüten bilgisayarın donanım ekipmanı arasında tam bir soyutlama katmanı oluşturmalıdır. Ek olarak, birkaç yeni C++ dil yapısı ve birkaç yeni kitaplık sınıfıyla sınırlandırılması , paralel algoritmaların geliştirilmesindeki önceki engelleri ve çabaları azaltacaktır. DirectX 11 zaten tüm yaygın GPU serileri tarafından (DirectX 11 tanıtımından daha yeni) ( Intel'in yonga seti ile tümleşik GPU'ları gibi temel performans GPU'ları dahil) tarafından yerel olarak donanım tarafından desteklenmektedir , ancak DirectX 11 yalnızca Windows 7 ile tanıtıldı ve Windows Vista için Sağlandı yalnızca , böylece eski Windows işletim sistemleri AMP ile kullanılamaz. C++ AMP'nin diğer platformlar tarafından mı yoksa Windows dünyasının dışındaki C++ geliştirme ortamları tarafından mı uyarlanıp uyarlanmayacağı şu anda tamamen açık.
Daha yeni bir yaklaşımdır OpenACC gibi, OpenMP, bir derleyici pragmas ile kontrol. Sıradan kaynak kodu, ör. B. C++'da, "#pragma acc parallel" gibi belirli derleyici pragmalarının seri olarak formüle edilmiş for döngülerinin önüne yerleştirilmesiyle otomatik olarak paralelleştirilir. Taşıma çabası nispeten küçüktür. Ancak, otomatik paralelleştirme her zaman optimal çözümlere yol açmaz. Bu nedenle OpenACC, OpenCL'deki gibi açık paralel programlamayı asla tamamen değiştiremez. Bununla birlikte, birçok durumda GPGPU'da yüksek ivme faktörlerini bu basit yolla elde edebilmek faydalı olacaktır. OpenACC, PGI gibi ticari derleyiciler ve GNU Derleyici Koleksiyonu gibi ücretsiz derleyiciler tarafından desteklenir .
Programları bir GPU'da çalıştırmak için bilgi akışını kontrol eden bir ana bilgisayar programına ihtiyacınız vardır. Genellikle, C benzeri bir dilde formüle edilen GPGPU kodu, ana bilgisayar programının talimatıyla çalışma zamanında derlenir ve daha sonraki işlemler için grafik işlemciye gönderilir, bu da daha sonra hesaplanan verileri ana bilgisayar programına döndürür.
Ayrıca bakınız
- grafik kartı
- Hücre (işlemci)
- Akış işlemcisi
- vektör işlemci
- Doğrudan İşleme Yöneticisi - İşleme Düğümleri doğrudan erişime izin verir
- Heterojen Sistem Mimarisi
Edebiyat
- Matt Pharr: GPU Taşları 2 . Addison-Wesley Publishing Company, 2005, ISBN 0-321-33559-7 , Bölüm IV - GPU'larda Genel Amaçlı Hesaplama: Bir Primer.
- David B. Kirk: Devasa Paralel İşlemcileri Programlama: Uygulamalı Bir Yaklaşım [Ciltli Kitap] . Morgan Kaufmann, 2010, ISBN 978-0-12-381472-2 .
İnternet linkleri
- GPU Taşları 2
- GPGPU.org
- Nvidia, Apple Mac'ler için ilk GPGPU'lar üzerinde çalışıyor, AppleInsider (24 Ocak 2008)
- GPU4Vision GPGPU Yayınları, Videoları ve Yazılımları
- GPGPU Hesaplama - yeni başlayanlar ve ileri düzey kullanıcılar için genel bakış (planet3dnow.de 26 Mayıs 2009)
- Tobias Preis, Peter Virnau, Wolfgang Paul, Johannes J. Schneider: GPU, 2D ve 3D Ising modelinin Monte Carlo simülasyonunu hızlandırdı. İçinde: Hesaplamalı Fizik Dergisi. 228, 2009, s. 4468-4477, doi : 10.1016 / j.jcp.2009.03.018 .