Şimdi Ara

Nvidia, CUDA x86'yı duyurdu: CUDA artık tüm x86 sistemlere açık (3. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
84
Cevap
0
Favori
5.487
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 12345
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • quote:

    Orijinalden alıntı: canerpense

    Hocam madem bu kadar iddialısın, bu fikirlerinin nedenlerinide açıklarmısın? Özellikle şu son söylediğinin...


    Bunlar kendi fikrim veya bir iddia değil, az buçuk yazılımla uğraşan herkes bilir (ben kendi halinde bir programcıyım ).

    Sıra tabanlı programlarda kodlar sırayla işletilir. Bir sonraki satırın işletilmesi için genellikle bir öncekinin tamamlanıp sonucunun alınması gerekir. Yani diyelim ki program 100 satır koddan oluşuyor. İçerisinde yüzlerce paralel işlemci bulunan bir gpu nun bu programı tek hamlede işletebileceğini düşünebilirsiniz ama bu mümkün değil. Çünkü kodlar birbirine bağımlı ve genellikle bir öncekinin çıktısı sonrakinin girdisi oluyor. Dolayısıyla aynı anda çalıştırma yanlış işleyişe sebep olur ve mecburen onca işlemciden aynı anda sadece bir tane çalışabilir. Daha öncede dediğim gibi programların ezici çoğunluğu bu mantıkla çalışıyor.

    Tabi belirtmeden geçmeyelim. Programın mantıksal olarak ayrı çalışan bölümleri olabilir. Programcılar böyle bölümleri kanallara ayırırlar. Her kanal ayrı işlemci (veya çekirdek) tarafından yürütülür. Dikkat ederseniz burada bir paralellik var ama öyle zorunlu değil. Tek çekirdekli işlemci de bunun hakkından gelir ama çok çekirdekli olursa, bir kanalın tıkanması sonucu bütün sistemin yavaşlaması engellenmiş olur çünkü diğer çekirdekler yoluna devam eder.

    Şimdi gelelim gpu nun performansını göstereceği bir uygulamaya. Arkadaşın verdiği video formatı çevirme mükemmel bir örnek. Bildiğiniz gibi filmler fotoğraf karelerinden oluşuyor. Her saniyede 25 kare civarı var. 1 saatlik filmde 90000 kare eder. Bunların herbiri diğer formata çevrilecek. Bütün sorun tek bir kareyi çevirecek yöntemi bulmak. Bu yöntem (algoritma) bir kere bulundumu eğer kapasite varsa bütün kareler aynı anda çevrilebilir çünkü bir kareyi çevirmek için öncekinin bitmesine hiç gerek yok.

    Bu örnekte mesela gtx480 için her paralel işlemciye 187 kare, hd5870 için 56 kare, amd 1090t için 15000 kare ve p4 için 90000 kare düşüyor. Tabi bu işlemcilerin kapasiteleri birbirinden çok farklı. Bir adet ati stream processor ve bir adet core i7 çekirdeğini karşılaştırırsak... En iyisi karşılaştırmayalım.

    Transistör ve paralel işlemci sayısına bakarsak ati ve nvidia nında par. işl. kapasiteleri farklı görünüyor. Nvidia nınkilerin daha gelişmiş oldukları belli.

    @atyay
    Mesajını yeni gördüm. Bu kadarmı benzerlik olur pes!
    demircibu yada kapak olsun. Öyle sağdan soldan duyduğun bikaç teknik terim ile sallamayla olmaz bu işler.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 23 Eylül 2010; 0:25:52 >




  • GPU nun parelel işlemlerdeki gücü CPU lara göre çok yüksek.
    I7 980x 80 GigaFlop parelel işlem gücüne sahipken HD 5970 5 TerraFlop luk bir güce sahip.
    Mevcut uygulamalarda parelel işlem desteği olmadığı için GPU nun kullanılm oranı çok kısıtlı.
    GPU nun uçuk parelel işlem gücünün farkına varan yazılımcılar ağır işlemleri
    GPU üzerinden uygun kodlar ile yaptırmaya yöneliyorlar.
    Bunun en yakın örneği de HTML5 kodları.
    Microsoft HTML5 ile sayfaları GPU üzerinden hızlandırmaya başladı.

    Nvidia'nın bu adımı Cuda nın yaygınlaşma maliyetlerini düşürmek ve tercih edilebilirliği arttırmak için
    attığını düşünüyorum. Verimli çalışması konusu da hala muamma.

    Intel'in GPU lara önem vermesi, AMD'nin Fusion işlemcileri, Nvidia nın Tesla kartları ve yazılımcılar:
    GPU'nun yüksek veriminden faydalanma faydalandırma yoluna başvurdular.
    Bu gelişimlerin nimetlerini yakında göreceğiz.




  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: canerpense

    Hocam madem bu kadar iddialısın, bu fikirlerinin nedenlerinide açıklarmısın? Özellikle şu son söylediğinin...


    Bunlar kendi fikrim veya bir iddia değil, az buçuk yazılımla uğraşan herkes bilir (ben kendi halinde bir programcıyım ).

    Sıra tabanlı programlarda kodlar sırayla işletilir. Bir sonraki satırın işletilmesi için genellikle bir öncekinin tamamlanıp sonucunun alınması gerekir. Yani diyelim ki program 100 satır koddan oluşuyor. İçerisinde yüzlerce paralel işlemci bulunan bir gpu nun bu programı tek hamlede işletebileceğini düşünebilirsiniz ama bu mümkün değil. Çünkü kodlar birbirine bağımlı ve genellikle bir öncekinin çıktısı sonrakinin girdisi oluyor. Dolayısıyla aynı anda çalıştırma yanlış işleyişe sebep olur ve mecburen onca işlemciden aynı anda sadece bir tane çalışabilir. Daha öncede dediğim gibi programların ezici çoğunluğu bu mantıkla çalışıyor.

    Tabi belirtmeden geçmeyelim. Programın mantıksal olarak ayrı çalışan bölümleri olabilir. Programcılar böyle bölümleri kanallara ayırırlar. Her kanal ayrı işlemci (veya çekirdek) tarafından yürütülür. Dikkat ederseniz burada bir paralellik var ama öyle zorunlu değil. Tek çekirdekli işlemci de bunun hakkından gelir ama çok çekirdekli olursa, bir kanalın tıkanması sonucu bütün sistemin yavaşlaması engellenmiş olur çünkü diğer çekirdekler yoluna devam eder.

    Şimdi gelelim gpu nun performansını göstereceği bir uygulamaya. Arkadaşın verdiği video formatı çevirme mükemmel bir örnek. Bildiğiniz gibi filmler fotoğraf karelerinden oluşuyor. Her saniyede 25 kare civarı var. 1 saatlik filmde 90000 kare eder. Bunların herbiri diğer formata çevrilecek. Bütün sorun tek bir kareyi çevirecek yöntemi bulmak. Bu yöntem (algoritma) bir kere bulundumu eğer kapasite varsa bütün kareler aynı anda çevrilebilir çünkü bir kareyi çevirmek için öncekinin bitmesine hiç gerek yok.

    Bu örnekte mesela gtx480 için her paralel işlemciye 187 kare, hd5870 için 56 kare, amd 1090t için 15000 kare ve p4 için 90000 kare düşüyor. Tabi bu işlemcilerin kapasiteleri birbirinden çok farklı. Bir adet ati stream processor ve bir adet core i7 çekirdeğini karşılaştırırsak... En iyisi karşılaştırmayalım.

    Transistör ve paralel işlemci sayısına bakarsak ati ve nvidia nında par. işl. kapasiteleri farklı görünüyor. Nvidia nınkilerin daha gelişmiş oldukları belli.

    @atyay
    Mesajını yeni gördüm. Bu kadarmı benzerlik olur pes!
    demircibu yada kapak olsun. Öyle sağdan soldan duyduğun bikaç teknik terim ile sallamayla olmaz bu işler.


    Peki hocam, şunu açıklarmısın bana o zaman: 4 yada daha fazla sayıda "seri" thread'lere sahip bir işlemcide bu bahsettiğin kodlar nasıl işleniyor?

    Hatta "Hyper-Thread"ing ile olmayan bir thread oluşturulup bu thread üzerinden nasıl işlenebiliyor aynı anda?

    Aynı mantıkla 1.8ghz hızında çalışan 300 küsür shader "thread" üzerinden işlem yaptırılabilir gibi geliyor bana. Ki işlem yaptırılıyor ama ben günlük normal kullanım manasında diyorum.

    1 çekirdekten çoklu çekirdeklere geçerken bahsettiğiniz işleç sorunu yaşanmıştı ancak Intel gibi şirketlerin programcılara kolaylık sağlayan bir takım yeni kütüphaneler sağlaması sayesinde, bu adaptasyon sürecinin artık yavaş yavaş sonuna gelindiğini görüyoruz.

    Benzer bir süreçle CPU'dan GPU'ya aktarılabilir sanırım izleçler artık, L1 cache belleği ve programlanabilir "core" ları bile var artık GPUların.

    Ayrıca demircibu hocamınızın söylediği tablo doğrudur, Intel bu şekilde bir tabloyu kendi göstermişti. Hatta Nvidia'da farkın çok daha dramatik olduğunu göstermişti:

    http://blogs.nvidia.com/ntersect/2010/06/gpus-are-only-up-to-14-times-faster-than-cpus-says-intel.html#more

    quote:

    At this event, Intel presented a technical paper where they showed that application kernels run up to 14 times faster on a NVIDIA GeForce GTX 280 as compared with an Intel Core i7 960. Many of you will know, this is our previous generation GPU, and we believe the codes that were run on the GTX 280 were run right out-of-the-box, without any optimization.



    < Bu mesaj bu kişi tarafından değiştirildi Chembond -- 23 Eylül 2010; 2:06:16 >




  • quote:

    Orijinalden alıntı: canerpense


    Peki hocam, şunu açıklarmısın bana o zaman: 4 yada daha fazla sayıda "seri" thread'lere sahip bir işlemcide bu bahsettiğin kodlar nasıl işleniyor?


    kastetiğin şey bir çekirdekteki iş hattı sayesinde her iş hatında farklı threadlerin çalışmasımı?
  • quote:

    Orijinalden alıntı: atyay


    quote:

    Orijinalden alıntı: canerpense


    Peki hocam, şunu açıklarmısın bana o zaman: 4 yada daha fazla sayıda "seri" thread'lere sahip bir işlemcide bu bahsettiğin kodlar nasıl işleniyor?


    kastetiğin şey bir çekirdekteki iş hattı sayesinde her iş hatında farklı threadlerin çalışmasımı?


    Demek istediğim şey, senin verdiğin örnekteki kodun yani bir programın birden çok çekirdekte çalışmaması gerekiyor, değil mi? Bu durumda 1den çok çekirdek destekli (birden çok thread destekli değil mi yani aynı yazamanda?) programlar nasıl çalışıyor? Çekirdekler üzerinde farklı threadler halinde paralel olarak çalışmıyor mu?




  • quote:

    Orijinalden alıntı: canerpense

    Demek istediğim şey, senin verdiğin örnekteki kodun yani bir programın birden çok çekirdekte çalışmaması gerekiyor, değil mi? Bu durumda 1den çok çekirdek destekli (birden çok thread destekli değil mi yani aynı yazamanda?) programlar nasıl çalışıyor? Çekirdekler üzerinde farklı threadler halinde paralel olarak çalışmıyor mu?


    threadin ne olduğunu daha önce yaptığım basit bi programı tanıtırken açıklamıştım
    http://forum.donanimhaber.com/m_39773581/mpage_1/f_/key_//tm.htm#39801371

    benimde anlatmak istediğimde bu zaten yani paralel çalışabilmesi için threadlere bölünmesi gerekli
    eğer threadlere bölünmezse işlemci yada işletim sistemi bunu kendi kafasına göre yapamaz
    1. verdiğim örneği threadlere bölebilirsin ama 2. verdiğim örneği threadlere bölersen 1 threadli haline göre sonuçları yanlış olur yukardada yazdım zaten,2. örneği threadlere bölebilmek için kodda değişiklik yapılması gerekli ama sorunda işte her kodu bu şekilde değiştiremiyosun

    birbirine bağımlı kodları paralel olarak çalıştırabilirsin aslında ama bu sadece bellekten kaynaklanan gecikmenin önüne geçmeyi sağlar,2.verdiğim örnekte kodların aynı anda çalıştırıldığını farzedelim ilk işlem gerçekleştiğinde değişen değerler belleğe yazılmak yerine direk 2.paralel işlemciye 2. işlem için gönderilir, belleğe yazıp ordan tekrar geri çekmekle zaman kaybetmezsin böylece ama arada dağlar kadar performans farkı olmaz ki kodların boyutu çok büyük olursa yani for döngüsünün içinde 2-3 satır yerine 100satırlık kod olduğunu düşün hangi veriyi nerede tutucak?




  • quote:

    Orijinalden alıntı: canerpense

    Demek istediğim şey, senin verdiğin örnekteki kodun yani bir programın birden çok çekirdekte çalışmaması gerekiyor, değil mi? Bu durumda 1den çok çekirdek destekli (birden çok thread destekli değil mi yani aynı yazamanda?) programlar nasıl çalışıyor? Çekirdekler üzerinde farklı threadler halinde paralel olarak çalışmıyor mu?


    Sorun çalıştırılamaması değil, her programı istediğin kadar kanala (thread) bölüp çalıştırabilirsin teknik olarak problem yok. Problem "mantıksal" olarak ortaya çıkıyor yani istenilen değerler elde edilemiyor ve program hatalı çalışmış oluyor (hiçbir hata mesajı vermeden).

    Bu söylediğim bir zincir gibi birbirine bağlı olarak çalışmak zorunda olan kodlar için geçerli. Fakat programın farklı bir bölümü (farklı bir zincir) başka bir kanala atanabilir. Bu iki kanal eşzamanlı çalışırken birbirlerini ilgilendirmeyen bölümleri çalıştırdıkları için birbirlerinin verilerini bozma gibi bir şansları yoktur.

    Şu video çevirme işine geri dönelim. Karelerin herbirinin bağımsız olduğunu söylemiştik. Ama eğer atıyorum bir karenin çevrilmesi için bir öncekinin herhangi bir bilgisi gerekseydi (çevrildikten sonraki) bu durumda format çevirme işi de gpu lar için imkansız olacaktı. Ama şu durumda işlemciden kat kat hızlı çevirebilmesi için hiçbir engel yok.




  • Bir konuya daha açıklık getirelim ;
    GPU bir mikrodenetleyicidir.
    CPU bir mikroişlemcidir.
    Mikrodenetleyiciler özel bir amaç için mikroişlemcilere ek bileşenler getirelerek yapılır.
    Mikroişlemciler ise en genel şekilde işlem yapmak için tasarlanmıştır. Bunun dışında mikroişlemcilerde çoğunlukla CISC, mikrodenetliyecilerde ise RISC mimari kullanır. Bu mimariler o işlemci ya da denetleyicinin tek seferde yapacağı işlem yapma yeteniğini etkiler. Kısaca CISC mimarisi tek seferde daha büyük işler yapmayı amaçlar. RISC mimarisi ise daha basit işlemler yapmaya yöneliktir.
    GPU'lar kabaca mikroişlemcilerden bozma ve sadece belli bir amaca yönelik çalıştığı için (grafik işleme gibi) CPU'larla karşılaştırmak yanlıştır.
    Eğer genel bir karşılaştırma yapacaksanız aşağıda fikir vermesi açısında bir liste vardır. İsteyenler bakabilir.
    http://en.wikipedia.org/wiki/Worldwide_Top_20_Semiconductor_Sales_Leaders




  • CUDA BİR PROGRAMLAMA DİLİ DEĞİL diye diye klavyemde tüy bitti.. editör de yanlışında ısrar ediyor.

    Yanlış bilgiler ile yola çıkılınca da başka başka yerlere varılıyor..
  • hocam bilen biliyor ve anlayan anladı zaten, boşuna uğraşma bence.
  • hocam ben özellikle EDİTÖR ün öğrenmesini istiyorum ve de haber metnin düzeltmesini istiyorum. Böyle bir siteye editörlük yapıyorlar ama haala sürekli gündemde olan bazı konular ile ilgili yanlış bilgiler yazıp ortaya bırakıp gidiyorlar.

    Bazı insanlar sadece haber metnini okuyor, yorumları okumadan geçenler var. O nedenle haber metninin düzeltilmesini istiyorum..
  • seni çok iyi anlıyorum ve şahsi tecrübemden yola çıkarak özellikle "boşuna uğraşma" dedim.

    bazı konularda bazı şeylerin daha basit ve ya yanıltıcı gibi yazılmış olması genelde bilgisizlikten değil.
    daha fazla geniş kitleye hitap edip anlaşılırlık ve basitlik adına teknik detay ve doğruluktan verilen ödün...
  • quote:

    Orijinalden alıntı: gerbay

    CUDA BİR PROGRAMLAMA DİLİ DEĞİL diye diye klavyemde tüy bitti.. editör de yanlışında ısrar ediyor.

    Yanlış bilgiler ile yola çıkılınca da başka başka yerlere varılıyor..


    Arkadaşım cuda programalama dili değilse ne bize bir açıklarmısın?

    Şurayı iyi oku:

    CUDA (Compute unified device architecture), GPU (Graphics Processing Unit) için NVIDIA'nın sunduğu C programlama dili tabanlı IDE (Integrated Development Environment)'tir.
    PathScale tabanlı bir C derleyicisi ve C ile yazılmış algoritmaların GPU üzerinde çalışmasını sağlayan geliştirme araçları kümesidir.Özetlemek gerekirse CUDA programlama diliyle oluşturulmuştur.
  • quote:

    Orijinalden alıntı: .45 ACP

    baba nasil haber yaptin ya cipset yakti millet.




    iyiydi...
  • @ultiMance
    hocam sen gerçekten bir paralel işlem mimarisi ile bir programlama dili arasındaki farkı mı soruyorsun şimdi?

    biraz okumakta ve bilgilenmekte fayda var:http://www.nvidia.com/object/cuda_home_new.html



    < Bu mesaj bu kişi tarafından değiştirildi sahafiec -- 23 Eylül 2010; 11:37:21 >
  • quote:

    Orijinalden alıntı: sahafiec

    @ultiMance
    hocam sen gerçekten bir paralel işlem mimarisi ile bir programlama dili arasındaki farkı mı soruyorsun şimdi?

    biraz okumakta ve bilgilenmekte fayda var:http://www.nvidia.com/object/cuda_home_new.html


    Paralel işlem mimarisi bunu biliyorum da sonuçta CUDA programlama diliyle oluşturulmuyor mu?
  • hocam GPU'lar da neticede programlama dili yardımı ile oluşturuluyor ve tasarlanıyor.
    ama bu yüzden biz onlara programlama dili demiyoruz değil mi?
  • quote:

    Orijinalden alıntı: sahafiec

    hocam GPU'lar da neticede programlama dili yardımı ile oluşturuluyor ve tasarlanıyor.
    ama bu yüzden biz onlara programlama dili demiyoruz değil mi?

  • Arkadaşlar her şey birbirine karışmış. Bunun böyle olmasından ben editörü sorumlu tutuyorum.

    CUDA bir mimari, programlama dili falan değil.. Bu kadar itiraz oluyor kimse gidip nVidia nın sayfasına bile bakmıyor.. bakınız CUDA neymiş (sahafiec linkini vermiş zaten);http://www.nvidia.com/object/what_is_cuda_new.html

    @ultiMance
    CUDA programlama dili ile oluşturulmuyor..

    bu arada @sahafiec, hocam GPU lar da programlama dili yardımı ile oluşturulmuyor. Dil olarak kullanılan bir dil var ama programlama dili değil.
    Verilog, VHDL gibi diller kullanılıyor ama bunlar programlama dili kategorisinde değil de donanım tanımlama dili kategorisinde yer alıyor.

    "VHDL - VHSIC hardware description language"
    "VHSIC - very-high-speed integrated circuit"

    özet olarak;

    Sandybridge ne kadar programlama diliyse CUDA da o kadar programlama dili..




  • hocam tam bir yazılımcı olarak yazmışsın, bense bir donanımcı olark tabii ki VHDL'i kastettim.
    VHDL'i hiç kod görmeden görsel de kullanabilirsin ama "hardcore programming" olarak notepad ile de yazabilirsin.
    aradaki farkı biliyorsan programlama dilinin ne kadar genel bir tabir olduğunu biliyorsun zaten.
    bu geniş çerçeve içerisinde herkes için anlaşılır bir misal verdim özellikle GPU derken.

    bu arada bu konulara bu detay seviyesinde girirsek her zaman, ki bu mühendisin doğasında olan birşey, bu forumda çok az sayılı kişilerle iletişim kurabiliriz. sana hitaben bir önceki mesajımda bunu kastetmiştim, haberlerin herkes tarafından anlaşılabilmesi adına bazı detaylar ve derinlikler basitleştiriliyor...



    < Bu mesaj bu kişi tarafından değiştirildi sahafiec -- 23 Eylül 2010; 12:41:00 >
  • 
Sayfa: önceki 12345
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.