Gönderen Konu: GPU ve PPU programlama  (Okunma sayısı 5597 defa)

GPU ve PPU programlama

« : 18.12.2007 11:08:02 »
Hızlı düğmeleri aç

atiflz

İleti: 246

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
    • http://izleyenkisi.blogspot.com/
Bildiginiz uzere "GPU" denen seylerin daha esnekce programlanabilmeye baslamasi, islem gucu manyaklarinin dikkatini cekti, ayrica sifreleme gibi alanlarda inanilmaz kullanisli oldular. Bir de Ageia diye bir firma "PPU" kavramini ortya atti, Physx adli urunuyle ve bunun da "SDK"sini ucretsiz olarak degitiyor. Benim merak ettigim ise, bunlari amaci disinda kullandigimizda ne kadar islem gucu alabiliyoruz? Temel bir vektor islemi yaparken vs. ne kadar Gops veriyor ya da benzeri bir olcu? Bilen var mi?

GPU ve PPU programlama

« Yanıtla #1 : 18.12.2007 11:57:50 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
gpu'da ölçü birimi olarak flops kullanılıyor ama sağlıklı bir sayı değil. Sebebi de GPU'daki en yavaş iş floating point işler değil, texture access. Bunun hızını ölçmek de çok zor, bunun iki sebebi var:
-texture access diğer floating işlemlere paralel bir iş, bir fetch ardından o sonuçlanana kadar başka işler yapabiliyor, yeni bir fetch hariç.
-fetch unitler, texture datasını 2x2'lik cacheler halinde alıyor. dolayısıyla sağa sola access etmektense texture datasını sırayla lokal olarak işlemek daha hızlı, ama bu her zaman mümkün olamıyor.

hatta fetching o kadar yavaş ki, çoğu durumda lookup table olarak texture kullanmak yerine, her arithmetic unitte table'ın gerekli kısımlarını online hesaplamak daha hesaplı oluyor.

benim şu ana kadar gördüğüm gpu implementation whitepaperlarda hız ölçütü aynı işin cpu implementationıyla karşılaştırmak suretiyle yapılıyor. "şu iş şu gpu'da şu cpu'nun şu kadar katı daha az zaman aldı." gibi.

physx'i duymadım.

GPU ve PPU programlama

« Yanıtla #2 : 18.12.2007 12:06:54 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
"amacı dışında" kalıbını bilgisayar grafik programlama dışında olarak kabul ettim ama son zamanlarda gpu üreticileri bu amaç dışında kullanılmak üzere de tasarlıyorlar mimarilerini. 32 bit texturelar, unified shaders, integer ops vs. ile birlikte zaten hemen hemen hiç bir veri işleme işi gpu mimarisine garip durmuyor.

GPU ve PPU programlama

« Yanıtla #3 : 18.12.2007 14:55:50 »
Hızlı düğmeleri aç

atiflz

İleti: 246

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
    • http://izleyenkisi.blogspot.com/
Dogru anlamissin abi, grafik isleme disindaki performanslarini merak ediyorum.

GPU ve PPU programlama

« Yanıtla #4 : 18.12.2007 15:57:17 »
Hızlı düğmeleri aç

anesthetic

İleti: 403

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
    • http://resident.tr-demoscene.info/
geforce 6, 7 döneminde sadece büyük ebatta floating veri işleme yöntemleri tercih edilirdi, hatta benim 2-10kat kuralım vardı. bu aralıklarda performans artışı bekliyordum. ama henüz elimi sürmediğim bazı teknolojiler için insanlar 10 üzeri 6 (!) kat hız artışından bahsediyorlar. tabi bu nvidia'nın özel süpercomputerlarından oluşmuş bir cluster için (geforce 8'ler ile aynı programlama modelini kullanıyorlar). ve anahtar kelimeler: shader model 4, geforce 8, cuda, clustering :)

yani sorun cpu'dan hangi problemlerde daha hızlı olacak ise artık bütün problemlerde diyebilirsin. ne kadar hızlı olacak dersen cevap veremem.

GPU ve PPU programlama

« Yanıtla #5 : 18.12.2007 16:19:04 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Tahminimce en iyi performansı almanın sırrı GPU'yu tek başına kullanmanın yanısıra iyi asenkron kod yazmakla da ilişkili. Yani GPU'ya yapacak bir işlem verdikten sonra CPU da boş durmayarak paralel işlem yapmalı. Ancak önemli olan hesaplatılmak istenen formülün GPU, CPU, PPU ya da diğer yani Processing Unit teknolojilerinin arasında nasıl bölüştürüldüğüdür. Örneğin Ray Tracing gibi bir konu CPU ve GPU'ya çok kolay bölüştürülebilecek bir konudur. "Sen şu ray grubunu hesapla, ben de bunları hesaplayayım" gibisinden. Ancak eğer iterasyon gerektiren bir işlem söz konusu ise, yani her bir işlemci diğerinin çıktısını kullanacak ise bu noktada programın asenkron modelinin çok düzgün, performans kaybına yol açmayacak şekilde tasarlanması önem kazanıyor. GPU CPU'dan çok daha güçlü ise ancak CPU'nun vereceği çıktıya ihtiyaç duyup mecburen boşa bekliyorsa, CPU'yu işe hiç bulaştırmadan GPU'nun tek başına çalışması belki daha avantajlı olabilir. Ancak güzel bir model kurup işlemcilerin birim hesap kapasiteleri de göz önünde bulundurularak bir iş birliği sağlanırsa her ikisi de tek başına gösteremediği performansı gösterecektir.
 
Bilelim, Öğrenelim
C64'de 90'lı yıllarda yayınlanmış vertex rotasyonlarını disk drive'ın işlemcisine hesaplatan kodlar olduğunu biliyor muydunuz?