GPU Mimarisi
Bir grafik işlem birimi (GPU), bellek gecikmesini gizlemek amacıyla binlerce iş parçacığını yürüten, çok sayıda basit çekirdekten oluşan, iş hacmi odaklı, yoğun paralel bir işlemcidir; başlangıçta grafikler için geliştirilmiş olup günümüzde genel amaçlı ve makine öğrenimi hesaplamalarında yaygın olarak kullanılmaktadır.
Tanım
Bir GPU mimarisi, çok sayıda hafif çekirdeğin çoklu işlemciler halinde gruplandırılmasından oluşan, büyük sayıda iş parçacığını eşzamanlı gruplar halinde yürüten, tek iş parçacığı hızından ziyade yüksek aritmetik iş hacmi ve gecikme gizleme için optimize edilmiş, yüksek derecede paralel bir işlemci tasarımıdır.
Kapsam
Bu konu, GPU donanım organizasyonunu; akış çoklu işlemcilerini (streaming multiprocessor), tek komut çoklu iş parçacığı (SIMT) yürütme modelini, warpları ve iş parçacığı bloklarını (thread block), kayıtlar, paylaşımlı bellek ve genel bellekten oluşan bellek hiyerarşisini ve GPU'ların yoğun çoklu iş parçacığı (massive multithreading) kullanarak gecikmeyi nasıl gizlediğini kapsamaktadır. GPU'ları paralel bir mimari olarak ele almaktadır. CPU SIMD uzantılarını (SIMD ve vektör işlemciler) ve mimari etkilerinin ötesindeki GPU programlama yazılım çerçevelerini hariç tutmaktadır.
Temel sorular
- GPU'lar, az sayıda karmaşık çekirdek yerine çok sayıda basit çekirdekle yüksek iş hacmini nasıl elde etmektedir?
- Tek komut çoklu iş parçacığı (SIMT) yürütme modeli nedir ve warplar nasıl çalışmaktadır?
- Yoğun çoklu iş parçacığı (massive multithreading) bellek gecikmesini nasıl gizlemektedir?
- GPU bellek hiyerarşisi paralel iş yükleri için nasıl organize edilmiştir?
Anahtar kavramlar
- akış çoklu işlemcisi (streaming multiprocessor)
- tek komut çoklu iş parçacığı (SIMT)
- warplar ve iş parçacığı blokları (thread block)
- yoğun çoklu iş parçacığı (massive multithreading)
- gecikme gizleme
- paylaşımlı, genel ve kayıt belleği
- bellek birleştirme (memory coalescing)
- iş hacmi odaklı tasarım
Temel kuramlar
- Yoğun çoklu iş parçacığı (massive multithreading) ile gecikme gizleme
- Tek bir iş parçacığı için gecikmeyi minimize etmek yerine, bir GPU binlerce iş parçacığını çalışır durumda tutar ve bellek üzerinde bir tıkanma olduğunda hazır gruplar arasında geçiş yapar; böylece bol paralellik, birçok aritmetik birimi meşgul tutar ve uzun bellek gecikmelerini gizler.
Mekanizmalar
Bir GPU, çok sayıda akış çoklu işlemcisinden (streaming multiprocessor) oluşmaktadır; her biri SIMT modeli altında iş parçacığı gruplarını (warps) eşzamanlı olarak yürütmektedir. İş parçacıkları, hızlı yonga üzeri belleği paylaşan ve yerel olarak senkronize olan bloklar halinde düzenlenmektedir. Donanım, birçok warp'ı zamanlamakta ve neredeyse sıfır ek yük ile aralarında geçiş yapmaktadır; böylece bir warp belleği beklerken diğeri çalışmakta, aritmetik birimleri meşgul tutmaktadır. Birleştirilmiş bellek erişim desenleri bant genişliği kullanımını maksimize etmektedir.
Klinik önem
GPU'lar, yüksek performanslı ve yapay zeka hesaplamalarında merkezi bir rol oynamaktadır: iş hacmi odaklı tasarımları, onları derin sinir ağlarının eğitimi ve çalıştırılması, bilimsel simülasyon ve veri analizi için baskın bir platform haline getirmektedir. Mimarileri, veri paralel algoritmaları ve birleştirilmiş bellek erişimini ödüllendirmekte, performans açısından kritik yazılımların yazılma şeklini şekillendirmektedir.
Tarihçe
GPU'lar, 1990'larda sabit fonksiyonlu grafik işlem hatlarından (graphics pipeline) programlanabilir gölgelendiricilere (shader) ve ardından tamamen programlanabilir çok çekirdekli işlemcilere dönüşmüştür. 2000'li yılların sonlarında genel amaçlı GPU hesaplama çerçevelerinin tanıtılması, onları bilimsel ve veri iş yüklerine açmış ve iş hacimleri, 2010'lardan itibaren derin öğrenme çağının motoru haline gelmelerini sağlamıştır.
Tartışmalar
- GPU genelliği ve özelleşmiş hızlandırıcılar
- GPU'lar esnek iş hacmi motorlarıdır, ancak giderek daha fazla özelleşmiş hızlandırıcılar (tensör ve matris birimleri gibi) belirli iş yükleri için daha yüksek verimlilik sunmaktadır; tasarımcılar, GPU programlanabilirliğini ve geniş uygulanabilirliğini özel donanımın verimliliğine karşı değerlendirmektedir.
Öne çıkan isimler
- David B. Kirk
- Wen-mei Hwu
- John L. Hennessy
- David A. Patterson
İlgili konular
Temel eserler
- hennessy2019
- kirk2016
Sıkça sorulan sorular
- GPU'lar derin öğrenme için neden bu kadar iyidir?
- Sinir ağlarının eğitimi ve çalıştırılması, büyük ölçüde bol veri paralelliğine sahip yoğun matris ve tensör işlemlerinden oluşmaktadır. Bir GPU'nun çok sayıda çekirdeği ve yüksek bellek bant genişliği, bu işlemleri çok yüksek iş hacmiyle yürütmekte, bu tür düzenli, paralel iş yüklerinde genel amaçlı CPU'ları çok geride bırakmaktadır.
- GPU yürütmesinde warp nedir?
- Bir warp, SIMT modeli altında aynı komutu eşzamanlı olarak yürüten bir iş parçacığı grubudur (genellikle 32). İş parçacıklarını warplar halinde gruplamak, donanımın komut kontrolünü birçok veri öğesine yaymasını sağlar, ancak bir warp içindeki ayrık dallanmalar verimliliği azaltmaktadır.