2010-04-15 25 views
22

Akış verilerini işlemek için GPU kullanmanın yollarını araştırıyorum. İki seçeneğim vardı ama hangi yöne gideceğime karar veremedim? KullanımOpenCL veya CUDA Giden yol?

  1. Kolaylığı (iyi API)
  2. Toplum ve Dokümantasyon
  3. Performans
  4. Future
Ben C kod edeceğiz

ve şu şekildedir:

Benim kriterler

vardır Linux altında C++.

+1

Ayrıca bakınız: http://stackoverflow.com/questions/2384930 –

cevap

36

OpenCL farklı grafik donanımı arasında

  • taşınabilir üretim kodundan arayüz

    • sınırlı operasyonlar fakat preprepared kısayolları

    CUDA

    • ayrı dil (CUDA C)
    • nVidia sadece donanım
    • (bir C-benzeri bir dilde kodlayan) kodu profili ve hata araçları
    • çok üzerinde
    • hemen hemen tam kontrol

    Alt hat - OpenCL taşınabilir, sadece CUDA nVidia'dır. Ancak, bağımsız bir dil olan CUDA çok daha güçlüdür ve bir sürü gerçekten iyi araçlara sahiptir. Kullanım ait

    1. kolaylığı - OpenCL kutudan çıktığı kullanımı daha kolaydır, ancak kurulum neredeyse
    2. Toplum ve Dokümantasyon C. kodlama gibi oluyor CUDA kodlama ortamı size bir kez - her ikisine de sahip kapsamlı dokümantasyon ve örnekler, ancak CUDA'nın daha iyi olduğunu düşünüyorum.
    3. Performans - CUDA dolayısıyla daha iyi ince ayarlanmış daha yüksek performans için olabilir, daha fazla kontrol sağlar.
    4. Gelecek - gerçekten söylemek zor.
  • +9

    Aslında OpenCL'i kullanarak bir daha avantaj var, bu çok CPU görevleri parallelize olabilir. – systemsfault

    +0

    @holydiver, geçerli bir nokta, ancak GPU hakkında soru sormuştunuz :) –

    +4

    @holydiver, bu ruhta ne Windows ne de MacOS X'in parlak bir geleceği olduğunu söyleyemezsiniz:> –

    17

    Benim kişisel deneyimleri vardı:

    1. API: OpenCL biraz daha karmaşık API vardır. Ancak, çoğu zaman çekirdek kodu yazarak harcayacaksınız ve burada ikisi de neredeyse aynı.

    2. Topluluk: CUDA çok daha büyük bir topluluk şimdi til kadar sonra OpenCL vardır, ama bu muhtemelen yaklaşık dışarı bile olur.

    3. Dokümantasyon: Her ikisi de çok iyi belgelenmiştir.

    4. Performansı: Biz OpenCL sürücüleri henüz tam olarak optimize olmadığını, deneyim yaptı.

    5. Gelecek: değil bir satıcı veya belirli bir donanım ile sınırlı açık bir standart olduğu gibi gelecek OpenCL ile yatıyor!

    Bu değerlendirme, muhtemelen büyük olasılıkla 2010'dan alınmıştır.

    6

    OpenCL tüm yolu CUDA'yı kullanmak için özel bir nedeniniz olmadıkça. OpenCL, GPU'larda çalışmaya ek olarak Intel i7 gibi çoklu yayınlarda da çalışır. OpenCL kullanarak, gelecek yıl devreye girmesi gerekiyordu Dünyanın en büyük süper bilgisayar, Blue Waters, IBM POWER7 hesaplama düğümlerine Droid cep telefonlarından donanım çok daha geniş yelpazede çalıştırabilirsiniz.