Herkesin masaüstünde bir devasa paralel paralel süper bilgisayar, bir grafik kartı GPU şeklinde var.
- GPU topluluğunun "merhaba dünyası" eşdeğeri nedir?
- Büyük GPU sağlayıcıları için GPU'yu programlamaya başlamak için ne yapmalıyım?
-Adam
Herkesin masaüstünde bir devasa paralel paralel süper bilgisayar, bir grafik kartı GPU şeklinde var.
-Adam
Yanıtlar:
NVidia'dan CUDA'ya göz atın, IMO GPU programlama yapmak için en kolay platform. Okumak için tonlarca serin malzeme var.
http://www.nvidia.com/object/cuda_home.html
Merhaba dünya GPU kullanarak her türlü hesaplama yapmak olacaktır.
Umarım yardımcı olur.
Sanırım diğerleri ikinci sorunuzu yanıtladı. İlk olarak, CUDA'nın "Merhaba Dünyası" için, belirli bir standart olduğunu düşünmüyorum, ama kişisel olarak, paralel bir toplayıcı (yani N tamsayıları toplayan bir program) öneririm.
NVIDIA SDK'da "azaltma" örneğine bakarsanız, yüzeysel olarak basit görev, birleştirilmiş okumalar, bellek bankası çakışmaları ve döngü açma gibi çok sayıda CUDA değerlendirmesi göstermek için genişletilebilir.
Daha fazla bilgi için bu sunuma bakın:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
ATI Stream Computing SDK'sına bir göz atın . Stanford'da geliştirilen BrookGPU'ya dayanmaktadır .
Gelecekte tüm GPU çalışmaları OpenCL kullanılarak standartlaştırılacaktır . Bu ekran kartı satıcısı nötr olacak Apple destekli bir girişim.
OpenCL , diğer şeylerin yanı sıra GPU'lar için uygun kod programlama yeteneğine sahip bir platformlar arası kütüphane oluşturma çabasıdır. Kodun hangi GPU üzerinde çalışacağını bilmeden yazmasına izin verir, böylece bazı GPU türlerini özel olarak hedeflemeden GPU'nun bazı güçlerini kullanmayı kolaylaştırır. Yerel GPU kodu kadar performans göstermediğinden (veya GPU üreticilerinin izin verdiği kadar doğal olmadığından) şüpheleniyorum, ancak bazı uygulamalar için dengeye değebilir.
Hala nispeten erken aşamalarında (bu cevabın 1.1'i), ancak endüstride bir miktar çekiş kazandı - örneğin, OS X 10.5 ve üzeri sürümlerde yerel olarak destekleniyor.
CUDA başlangıç için mükemmel bir çerçevedir. C'ye GPGPU çekirdekleri yazmanıza izin verir. Derleyici, kodunuzdan GPU mikro kodu üretecek ve CPU üzerinde çalışan her şeyi normal derleyicinize gönderecektir. Sadece NVIDIA'dır ve sadece 8 serisi veya daha iyi kartlarda çalışır. Onunla neler yapılabileceğini görmek için CUDA bölgesini kontrol edebilirsiniz. CUDA SDK'sında bazı harika demolar var . SDK ile birlikte gelen belgeler, kod yazmak için oldukça iyi bir başlangıç noktasıdır. Başlamak için harika bir yer olan bir matris çarpma çekirdeği yazarak size yol gösterecektir.
CUDA veya OpenCL'ye girmeden GPU programlamaya girmenin bir başka kolay yolu, bunu OpenACC aracılığıyla yapmaktır .
OpenACC #pragma acc kernels
, GPU'ya iş göndermek için derleyici yönergeleri (gibi ) ile OpenMP gibi çalışır . Örneğin, büyük bir döngünüz varsa (yalnızca büyük olanlar gerçekten yarar sağlar):
int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
b[i] = b[i] * a;
}
Düzenleme: ne yazık ki, NVIDIA GPU kartları için şu anda sadece PGI derleyicisi OpenACC'yi gerçekten destekliyor.
MATLAB kullanıyorsanız, teknik bilgi işlem için GPU'ları kullanmak oldukça basit hale gelir (matris hesaplamaları ve ağır matematik / sayı kırma). Oyun dışındaki GPU kartlarının kullanımı için yararlı buluyorum. Aşağıdaki bağlantıya göz atın: