GPU ve Hızlandırıcı Hesaplama
GPU ve hızlandırıcı hesaplama, genel amaçlı CPU'ların ulaşabildiğinin çok ötesinde veri-paralel iş yüklerini hızlandırmak için büyük ölçüde paralel çok çekirdekli işlemcilerden yararlanmaktadır.
Tanım
GPU ve hızlandırıcı hesaplama, yüksek verimli veri-paralel yürütme için optimize edilmiş özel çok çekirdekli işlemcilerin, bir ana bilgisayar-aygıt programlama modeli altında bir hesaplamanın paralelleştirilebilir kısımlarını boşaltmak ve hızlandırmak amacıyla kullanılmasıdır.
Kapsam
Bu konu, grafik işlem birimlerinin ve diğer hızlandırıcıların verim odaklı, çok çekirdekli SIMD/SIMT makineleri olarak mimarisini; bunları hedefleyen programlama modellerini (CUDA, OpenCL ve direktif tabanlı yük boşaltma); iş parçacığı hiyerarşisi ve bellek hiyerarşisi soyutlamalarını (iş parçacıkları, warps, bloklar, ızgaralar; genel, paylaşımlı ve kayıt belleği); ve elde edilebilir verimi yöneten performans faktörlerini—doluluk (occupancy), bellek birleştirme (memory coalescing) ve ayrışma (divergence)—kapsamaktadır.
Temel sorular
- Verim odaklı, çok çekirdekli hızlandırıcı modeli, genel amaçlı bir CPU'dan nasıl farklılaşmaktadır?
- Hesaplamalar, bir iş parçacığı hiyerarjisi üzerinde büyük ölçüde paralel çekirdekler olarak nasıl ifade edilmektedir?
- Hangi bellek ve yürütme davranışları—birleştirme (coalescing), ayrışma (divergence), doluluk (occupancy)—elde edilebilir performansı sınırlamaktadır?
Temel kuramlar
- SIMT yürütme modeli
- GPU'lar, eşzamanlı olarak (tek talimat, çoklu iş parçacığı) yürütülen warps adı verilen gruplara ayrılmış binlerce hafif iş parçacığını çalıştırmaktadır; performans, warps'ları meşgul tutmaya ve bir warp içindeki kontrol akışı ayrışmasını önlemeye bağlıdır.
- Hiyerarşik iş parçacığı ve bellek modeli
- CUDA, iş parçacıklarını bloklar ve ızgaralar halinde düzenlemekte ve kayıtlar, hızlı paylaşımlı bellek ve büyük genel bellekten oluşan bir bellek hiyerarşisi sunmaktadır; veri ve hesaplamayı bu hiyerarşiye eşlemek, merkezi performans görevidir.
- Genel amaçlı GPU hesaplaması
- Sabit işlevli grafik işlem hatlarından programlanabilir, genel amaçlı hızlandırıcılara evrilme, GPU'ları bilimsel ve veri yoğun hesaplama için ana akım bir platform haline getirmiştir.
Klinik önem
Hızlandırıcılar, modern hesaplama yoğun uygulamaların temelini oluşturmaktadır: derin öğrenme eğitimi ve çıkarımı, bilimsel simülasyon, görüntü ve sinyal işleme ve kriptografi, CPU'lara göre büyüklük mertebesinde hızlanmalar için GPU'lara güvenmektedir.
Tarihçe
GPU'lar, sabit işlevli grafik donanımından programlanabilir paralel işlemcilere evrilmiştir; Nickolls ve meslektaşları tarafından 2008'de tanımlanan CUDA'nın 2007'deki piyasaya sürülmesi, genel amaçlı GPU hesaplamasını erişilebilir kılmış ve hızlandırıcılar daha sonra yüksek performanslı ve makine öğrenimi hesaplamalarının merkezi haline gelmiştir.
Öne çıkan isimler
- John Nickolls
- Wen-mei Hwu
- David Kirk
- John Owens
İlgili konular
Temel eserler
- nickolls2008
- kirk2016
- owens2008
Sıkça sorulan sorular
- Bazı iş yükleri için GPU'lar neden CPU'lardan çok daha hızlıdır?
- GPU'lar, transistörlerinin çok daha fazlasını aritmetik birimlere ayırmakta ve bellek gecikmesini gizlemek için binlerce iş parçacığı çalıştırmakta, tek iş parçacığı hızını toplam verimle takas etmektedir. Bu durum, onları düzenli, yüksek derecede veri-paralel işler için mükemmel kılarken, dallanmalı, gecikmeye duyarlı kodlar için pek uygun değildir.