Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
3718
Tıklama
0
Öne Çıkarma
Opencl: Neden bu konuda AMD Nvidia'dan önde?
T
13 yıl
Yarbay
Konu Sahibi

http://www.clbenchmark.com/result.jsp?test=CLB10101 sitesinin "results" sekmesinde görüldüğü gibi opencl konusunda AMD kartlarının fiyat/performans oranı 5-10 kat gibi gözüküyor. HD7770 bile gtx 680 kadar puan almış. Sizce bunun nedeni mimari yapı mı yoksa sürücü desteğinin yarım kalması mı yoksa ikisi birden mi?

Not: bendeki 7870 ile test ettim sonuçlar uyumlu. Gtx 680/670/660 olan varsa bir kez deneyip sonuçları doğrulayabilir mi?

İlk testte 17000-18000 puan arası alıyorum ikinci testte ise 170000 civarı. Diğer testleri unuttum.

Opencl kullanılarak Physx benzeri birşey çıkarılsa iyi olmaz mı?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi Tugrul_512bit -- 17 Aralık 2012; 23:33:45 >

R
13 yıl
Yarbay

AMD vs. Nvidia != OpenCL vs. Cuda

OpenCL açık kaynak, Cudo proprietary.

Cuda varken kimse Nvidia kart üstünde OpenCL kasmaz. Dolayısı ile de Nvidia'nın mecbur kalmadıkça OpenCL'de özel bi üstünlük elde etmek için çabalamasına gerek yok. Zaten Cuda ile başladı bu işler, geniş bi taban oluşturdu kendisine, bi anlamda tekel / standart yaratmaya çalıştı başarılı da oldu. Bi üni de Cuda ile ilgili bölüm açılıyorsa ve bu bütün eğitim alanında sanki bilimsel bi standart gibi kabul ediliyorsa bana göre burda yanlışlık var (alternatif olmadığı için aynı zmanda da çok normal).

Lafın kısası Cuda varken Nvidia'nın OpenCL de ben %bilmem kaç gerideyim diye endişe etmesine neden olacak bi durum yok, kümeste tek horoz kendisi iken.

Yanına ilave olrak driver / mimari 'yi de ekleriz elbet. Bi OpenCL kernelini Nvidia kartta en optimize şekilde çalıştırmak için driverın da mimariye göre ayar vermesi kerekiyor bi nebze, yukardakilerle alakalı olarak da driver açısından Nvidia'nın iyice uğraşmasına gerek yok yani (uğraşsalar da çok fazla ileri gitmez).

GPU üstünde çalıştıracağın her kodun esasen o mimariye özel olarak biraz ayar verilmesi gerekir. Nasıl bi sürü oyun saçma sapan bi şekilde Intel CPU üstünde AMD'ye göre biraz daha iyi çalışıyor, bazı oyunlarda saçma sapan farklılık var (compiler flaglardan cpu dispatch'e , belli bi mimarisel yapıyı verimli kılacak kod yapısına vs. kadar), tam olmasa da benzerini Nvidia OpenCL için de düşünebilirsin. Aynı OpenCL kerneli Nvidia'da çalıştırmak içn kodda bi miktar değişiklik yapman lazım ki daha düzgün çalışabilsin. O bi miktar değişikliği yaptıktan sonra yine bi miktar daha değişiklik yapar hale geliyorsun. bunu devam ettirdikçe, elindeki mimariye göre en baştaki problemi kod yazmaya çalıştığın şeyi başka bi şekilde yeni baştan yazarsam daha iyi performans gösterebilir diyorsun. bütün bunlar sana extradan geliştirme zamanı olarak geri dönüyor. Sonuçta Cuda varken kimse Nvidia/OpenCL'e bakmadığı için burda olay.

GCN serisinin yapısal olarak OpenCL'i düzgün işlemeye yatkınlığı çok fazla, esas neden bu zaten. Hiç merak etmediğimdn (merak eden de yoktur) Nvidia ilerde ne tür değişiklikler yapar ve OpenCL performansı yükselir araştırmadım, açıkçası fikrim de yok farklı bi mimariye geçmeden olabilir mi diye.

Çeşitli programlar, GPU üstünde oyun dışı hesaplamaya genelde ilk defa Cuda ile başladıklarından, bundan sonraki versiyonlarında da hem OpenCL hem Cuda desteği olacaktır bi şekilde. Tamamen OpenCL'e yöneldikleri zamn ve Nvidia bununla ilgili bi pazar kaygısı görürse belki işler değişir (Mesela Photoshop cs6 Mercry Graph. Engine / MGE ile opencl/opengl kullanıyor, Cuda kullanmıyor. Premier de bikaç şey dışında OpenCL'e destek veriyor, insanlar bi şekilde AMD'den daha yüksek perf alıp sürekli AMD'ye yönelecek olsaydı mutlaka peşine düşerlerdi).


Bu mesaja 1 cevap geldi.
T
13 yıl
Yarbay
Konu Sahibi

Cuda kullanarak yapılan programlar Opencl kadar verimli mi? Mesela benzer kartlar(gtx660 ile oc'li hd 7870) arasında Cuda ve Opencl için yakın işlem gücü beklenir mi?


Bu mesaja 1 cevap geldi.
R
13 yıl
Yarbay

Hem ewt hem hayr. Çünkü farklı bi Programlama yapısı / API ile farklı bi donanıma bişey yazmaya çalışıyorsun. Fermi/Kepler için Cuda ile bi probleme özel kod yazmakla, GCN için OpenCL kod yazmak tamamen apayrı şeyler, direk olarak karşılaştırılamazlar. Ancak çözmen gereken sorun/problem sınırları tam olarak belli ise karşılaştırabilirsin. Cuda çözümün Nvdia'da çalışmasına rağmen AMD'de çalışmaz, dolayısı ile sınırlı bi kullanıcı kitlesine erişirsin. Cuda ile iray vs. OpenCL ile Luxrender'ı tam olarak nasıl karşılaştıracaksın mesela onun gibi. Birebir aynı problemin çözümü için hem Cuda hem OpenCL ile aynı miktarda üzerinde uğraşılmış geliştirilme zamanı harcanmış pek bişey yok. Elma ile armutu farklı sepetlerde taşıyıp hangisi lezzetli demeye benzer bu bi miktar. Ama bu aynı sonuca özel, aynı ana mimariyi kullanan x86 da Intel vs. AMD 'ye benzemez. Hem kartların mimarileri farklı, hem de Cuda/OpenCL'in driver tarafından donanıma nasıl aktarıldığı faln farklı. Nvidia kartlar cuda ile kendi içlerinde iyiler. Ama Cuda esasen bi standart değil, ilk olması sebebiyle yaygın, kapalı ve Nvidia'ya özel (proprietary). O yüzden herkez için GPU üstünde çalışan bişey yapmak istenirse OpenCL'e yöneliliyor ki, bundan sonra olacak olan bu zaten. Sadece AMD değil, mobil GPU geliştirenler de dahil OpenCL destekleri var.

Bullets Phycs OpenCL kullanabilen açık kaynak bi fizik motoru. Oyunlar bu tür şeylere yönelirler yönelmezler geliştiricinin bileceği bişey. Physx'i oyun içn lisanslayan firma geri kalan geliştirmeyi de üstlenmiş oluyor. Olduğu gibi bırakabilir de, Nvidia dışında x87 kullanıp CPU üstünde çalışıp sistemin canını okuyacak hale de gelebilir, veya üstünde geliştirme yapar SSE faln kullanabilmesini sağlar, single-thread x87 kullanacakken multi-thread SSE kullanabilir hal getirebilir. Veya bi tür wrapper geliştirir, lisansladığı Physx motorunu OpenCL üstünde çalışmasını sağlar, veya wrapper olmaz da Physx' kodunun belli kısımlarını OpenCL 'de çalışacak şekilde yeniden dizayn eder (bunların hiçbirini görmemiş olsak da neredyse).

Senin esas sorduğun, özel olarak bi problemi bi programın hızlandırılması gereken kısmını bi Cuda da Kepler ile yazıp sonra bunun performansını benzer şekilde GCN Opencl ile yazılmış ile karşılaştırmak çok özel uç durum olur ki %100 emin değilim. Belli bi yere kadar, geçmişteki AMD kartlar da dahil OpenCL üstünde iyi performans verebiliyor ama. Bi 6950 ile Tesla c2070'i mesela matris çarpımı için karşılaştırırsak, matris büyüklüğü 8192x8192'ye gelene kadar 6950 daha yüksek performans verir(6950 openCL vs. tesla Cuda şeklinde, tesla Opencl ile çok düşük perf verir). Ama 2d FFT de Tesla 6950'ye göre çok daha yüksek perf verirken GCN serisi hepsinden yukarıya çıkıyor (Cuda FFT vs. AMD FFTCL'e göre).

Genel geçer masaüstü şeyler için bakarsan, programlar en fazla alana ulaşmak amacıyla geliştirilmeye çalışılacağından OpenCL'in daha çok tercih edilmeye başlayacağını görmemiz lazım. Insanlar belirgin oranda baskın değişim görmeden şu kart / mimari daha iyi demezler, Opencl ile AMD daha iyi perf verir driver açısından sorun çıkartmazsa avantajlı konuma gelme ihtimali var. Maya için gtx580'den 7970'e geçenler memnunlar mesela, getirisi fazla çünkü. gtx680 alıp kullanan da var, eh işte durumunda.


Bu mesaja 1 cevap geldi.
T
13 yıl
Yarbay
Konu Sahibi

Deneme için bir kütleçekim modellemesi yapmıştım. Kernel, 65536 adet kütlenin birbirleri ile etkileşimini hesaplıyordu (tüm kuvvet çiftlerini hesaplayarak) ve kernel süresi 65ms idi(HD7870). Acaba Cuda'ya geçsem gtx660-ti ile bu süre nereye kadar iner bir fikrin var mı? Atıyorum 40 ms olur mu?





< Bu mesaj bu kişi tarafından değiştirildi Tugrul_512bit -- 18 Aralık 2012; 13:17:09 >
Bu mesaja 1 cevap geldi.
R
13 yıl
Yarbay

Kodun OpenCL'de temiz ise, eksik olduğunu düşündüğün yerler yoksa, stackoverflow vs. den faln yardım almayı denedinse, kısacası çözümün yapmayı istediğin şey için optimize ise cuda + nvidia ile çok daha iyi sonuç alamaman lazım. Aynı problemin çözümünü hem cuda hem Opencl de yeterince uygun şekilde yazabilecek kadar hakimsen zaten yazdığın kodun yeterli olduğunu düşünmen lazım. Cuda ile llgili olan templatelerden hareketle çözüm geliştireceksen her daim problemine uymuyorlar. Hangisinde iyi isen onunla devam et derim ben.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.