Şimdi Ara

Çok çekirdekli işlemci test programı(48 thread eklendi):)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
22
Cevap
1
Favori
4.943
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Aslında test programı dediğime bakmayın o işin geyiği,kendi çapımda bişeyler hesaplatmaya çalıştım ve bunu sizlerle paylaşmak istedim:)

    Şimdilik 2 tür hesaplama yöntemi var
    1)Girilen 2 sayı arasındaki asal sayıları bulan program,ben standart olarak 500000 ile 1000000 aralığını seçtim ama siz istediğiniz aralığı girebilirsiniz
    2)Tam olarak neyi hesapladığını bilemediğim,@nadir_en'in daha önce kendi yaptığı programda kulandığı algoritmayı çaldım


    Her 2 hesaplamada thread ayarı ve sayı aralıkları var başka bi ayar gerekmiyo.
    Peki nedir bu thread denilen şey?

    Thread:aslında bi programdır,daha doğrusu bi program,oyun yada test araçı en az 1 thread den oluşur,ne kadar çok thread den oluşacağı ise o programı kodlayana bağlıdır.Bi programda birden fazla thread kulanmanın amacı ise verimliliği artırmaktır.
    Mesela internet sitelerinden örnek vereyim,bi alışveriş sitesine girip bişeyler alıcaksınız ama sizden önce yaklaşık 1 milyon kişininde aynı anda siteye girdiğini düşünün,eğer site tek bi thread üzerinden çalışırsa o 1 milyon kişinin işlerini yapıp siteden ayrılmalarını beklemek zorundasınız:)
    Tamam biraz fazla abartım,durum bukadar kötü değil ama yinede multi thread olarak ayarlanması işleri hızlandırıyo.

    Peki kulandığımız programların birden fazla threaden oluşması bize ne gibi yarar sağlar?
    Aslında bunun tek yararı eğer çok çekirdekli bi işlemcimiz varsa ve programda hızlı hesaplanması gereken çok veri varsa,bu hesaplamaları çekirdekler arasında paylaştırarak zaman kazandırır.Yani 2,3,4 çekirdek destekli denilen programlar aslında 2,3,4 thread den oluşur ve işlemciniz kaç thread destekliyse okadar verim alırsınız,asal sayı hesaplama kısmında bu verim alma olayını daha detaylı anlatıcam.

     Çok çekirdekli işlemci test programı(48 thread eklendi):)

    Mesela kullandığım işlemci 4 çekirdekli ama 8 thread destekli,yani aynı anda 8 thread çalıştırabilir.

    Şimdi tek çekirdekli yani tek thread desdekli işlemcilerde birden fazla program çalışmıyomu?
    Aslında birden fazla program çalışıyo ama aynı anda çalışmıyo,sadece aynı anda çalıştığını sanıyoruz:)
    Bunun sebebi aslında işletim sistemi,işletim sistemi programları programcıklara yani threadciklere bölüyo ve threadcikleri sahip oldukları işlem önceliğine göre işlemciye gönderiyo,bunu okadar hızlı yapıyoki biz aynı anda çalıştığını sanıyoruz,böylece 1 çekirdekli bi işlemcide aynı anda birçok program kulanabiliyoruz

    Çok uzatmadan yaptığım programı anlatmaya başlıyım:)

    Asal sayı hesaplaması:)

     Çok çekirdekli işlemci test programı(48 thread eklendi):)

    Thread sayıları 1,2,3,4,5,6,7,8,16 ve 48.
    Yani 48 çekirdekli bi işlemciniz varsa 48inide aynı anda kulanabilir.
    Yalnız yapılan işten dolayı her thread başına düşen işlem yükü aynı değil,çünkü program bir bilinmeyeni arıyo asalmı değilmi?
    Asal sayı nasıl bulunur,eğer 1 ve kendisinden başka bi sayıya tam bölünmüyosa o sayı asaldır,seçtiğiniz thread sayısına göre sayı aralığı thread sayısına bölünüyo ve her thread kendi payına düşen aralıktaki asal sayıları buluyo,ama her aralıktaki asal sayı miktarı bir değil,aynı bile olsa her asal sayının bulunma zamanı aynı olmuyo,buda her thread başına düşen işlem yükünün farklı olmasına neden oluyo,yani verim düşüyo.
    Mesela 4 çekirdekli bi işlemciniz varsa 4 threadi seçtiğinizde en kısa sürede hepsinide hemen hemen aynı anda bitirmesi gerekli ama öyle olmuyo, threadlerden biri daha kısa sürede bitiyo ve geriye kalan 3 thread 4 çekirdek arasında işletim sistemi tarafından paylaştırılıyo,işlemci kulanımıda %100 den %75 lere düşüyo.
    2 ve daha fazla çekirdeğe sahipse işlemciniz 48 threadi seçmeniz en sağlıklısı olur.


    Bişeyler hesaplıyo ama ne hesaplıyo bende bilmiyorum:P

     Çok çekirdekli işlemci test programı(48 thread eklendi):)

    Burda her thread başına düşen işlem yükü hemen hemen aynı,buyüzden thread sayısını fazla artırmadım,ben bi yararını göremedim çünkü.
    İşlemciniz kaç thread destekliyse okadar thread çalıştırın.

    ha unutmadan çalıştırabilmek için java virtual machine kurulu olması gerek onada buradan ulaşabilirsiniz

    en kısa zamanda alu ve fpu birimlerine ayrı ayrı yüklenen bi test hazırlamaya çalışıcam:)
    pi sayısı hesaplama formülü bilen varmı acaba,bi süperPi de ben yapayım



    < Bu mesaj bu kişi tarafından değiştirildi atyay -- 17 Mayıs 2010; 2:02:46 >







  • hocam elinize sağlık, oldukça sade derli toplu bir arabirimi var, hoşuma gitti

    9.654513 saniye gibi sonuçlar verse daha iyi olurdu, hemen 9 saniye diyeceğine bir de hesaplama aralığını genişletirsek daha sağlıklı sonuçlar alabiliriz
  • 1.8 ghz cakma cift cekirdek 3+ yillik dizustu 17 saniye

     Çok çekirdekli işlemci test programı(48 thread eklendi):)


    3 ghz 4 cekirdek phenomII 19 saniye

     Çok çekirdekli işlemci test programı(48 thread eklendi):)


    cok dengesizlik var, imkan varsa programi gelistirmeyi deneyin yoksa fail olmus yani.




  • revision şart
  • az evvel çalıştırırken işlemci kullanıma baktım da dengesiz program önce 4 çekirdek başlıyor bir kaç saniye sonra 3 çekirdek sonra 2 çekirdek ve tek çekirdekle noktayı koyuyor

     Çok çekirdekli işlemci test programı(48 thread eklendi):)

    burdan görebilirsiniz basamak basamak çekirdek sayısındaki değişimleri



    < Bu mesaj bu kişi tarafından değiştirildi Man From Atlantis -- 15 Mayıs 2010; 18:48:28 >




  • 16 thread açınca Q6600'e %100 yüklendi ve 3 sn'de hesapladı. En iyi 16 threadda çalıştırmak heralde.

    Aslında kullanışlı program olabilir. Ama 250bin az kalıyor. 1 milyona çıkarırsan programın adını da AsalSay1M gibi bir şey koyup SuperPI gibi bir şeye dönüştürebilirsin.
    Bir de saliseleri göstermesini sağlasan daha iyi olur.



    < Bu mesaj bu kişi tarafından değiştirildi adilazimdegilx -- 15 Mayıs 2010; 18:56:01 >
  • işte o saliseler önemli yoksa 3ghzlik bir işlemciyle 3.5 ghzlik aynı işlemci, aynı sonuçları gösterebilir programda..

    8 ve 12 threadli i7 işlemcisi olanlar ya da 6 çekirdekli p2 sahipleri şuanki haliyle işlemcilerinden tam performans alamıyorlar programa göre, çünkü 16dan fazla seçeneğimiz yok

    karşılaştırma yapılacaksa da intel platformu ve amd platformu ayrı ayrı kendi aralarında karşılaştırabilir.. intelsever bir program olmuş gibi görünüyor .45 ACP'nin sonuçlarına göre..



    < Bu mesaj bu kişi tarafından değiştirildi Man From Atlantis -- 15 Mayıs 2010; 19:07:07 >
  • quote:

    Orijinalden alıntı: Man From Atlantis

    işte o saliseler önemli yoksa 3ghzlik bir işlemciyle 3.5 ghzlik aynı işlemci, aynı sonuçları gösterebilir programda..

    8 ve 12 threadli i7 işlemcisi olanlar ya da 6 çekirdekli p2 sahipleri şuanki haliyle işlemcilerinden tam performans alamıyorlar programa göre, çünkü 16dan fazla seçeneğimiz yok

    karşılaştırma yapılacaksa da intel platformu ve amd platformu ayrı ayrı kendi aralarında karşılaştırabilir.. intelsever bir program olmuş gibi görünüyor .45 ACP'nin sonuçlarına göre..

    Hmm. Thread sorununu çözmek için maksimum threadı 128 gibi bir değer yapıp işlemciye her şekilde tam yüklenmesi sağlanabilir.

    Intel&AMD için ise yapılabilecek bir şey yok. Zira iki markanın işlemcilerini karşılaştırabileceğimiz bir program zaten yapılamıyor. Mimari farklılığından ötürü mutlaka sapmalar oluyor. Dünyaca ünlü SuperPI de bile durum öyle. İşlemcileri kendi markalarında ayrı ayrı yarıştırmak gerekiyor.




  • arkadaşlar yorumlarınız için teşekürler
    istediğiniz süre ve aralıkla ilgili düzeltmeyi yaptım
    yalnız çekirdeklere tam yüklenmeyle ilgili küçük bi sorun var
    yapılan işlem belli aralıklardaki asal sayıları bulmak olduğundan her thread başına düşen asal sayı miktarı aynı olmayabiliyo,haliyle threadlerin bitme süresi farklı oluyo kimisi atıyorum 10sn de bitiyosa kimisi 13sn de bitiyo
    mesela 2 ile 800000 aralığını ayarladık diyelim ve thread sayısını 8 yaptık
    her thread başına yaklaşık 100000 aralığı düşüyo sorun şu ki her aralıktaki asal sayılar eşit değil,bu yüzden kimisi daha erken biterken kimisinin işi uzuyo
    threadlerin önceliklerini en yükseğe çıkardım belki küçükde olsa yararı olur
    ama istediğiniz gibi aynı hesapları yapan bi program olması için asal sayıları bulan değil farklı bi hesaplatma yapmam lazım
    aslında amacım işlemci test programı falan yapmak değildi tabiki,sadece thread sayısı artıkça işlemlerde ne gibi farklar oluyo onu görmenizi istedim
    bide şunu söyliyim
    bu programı ayarlarken firmaların neden multi thread yazılımlar için uğraşmadığını daha ii anladım,harbiden çok kafa karıştıran bi durum yada bana zor geldi
    aslında bi kod bloğunu thread olarak çalıştırmak sorun değil sorun thread olarak çalıştırdıktan sonra onu kontrol edebilmekte:)
    gerçi biraz deneyimsizliğiminde kurbanı oldum diyebilirim:)

    edit:intel ve amd sistemler için yapabileceğim bişey yok program bi exe değil java virtual machine tarafından çalıştırılıyo,virtual machine intel için optimize edilmişmi edilmemişmi bilemem



    < Bu mesaj bu kişi tarafından değiştirildi atyay -- 15 Mayıs 2010; 19:52:06 >




  • Öncelikle saliseleri göstermeyi ayarlamışsın güzel olmuş. O thread sorunu için ise programdan yüksek thread seçmek bayağı etkiliyor. Mesela şimdi denedim 1 thread 17 saniyede hesaplama yaparken aynı işlemi 4 thread 6.9sn de yaptı. İşlem sonuna doğru bazı çekirdekler çalışmayı durdurdu. Fakat threadı 16 yaptığımda 4.6 saniyeye düştü ki 17 saniyenin neredeyse dörtte birine indirdi. Böyle yapınca çekirdekler işi bitince kapanmıyor. Heralde thread sayısı çok olunca kendi aralığında işi bitince hesaplanmamış yerlerden devam ediyor çekirdekler.
    Gayet başarılı bir program. Üstünde çalış bence. Biraz reklamla ünlü yapabiliriz
  •  Çok çekirdekli işlemci test programı(48 thread eklendi):)


    48 thread ekledim:)
    bide threadlerin nekadar çalıştığını gösteren bi taplo hazırladım
    link yukarıya eklendi



    < Bu mesaj bu kişi tarafından değiştirildi atyay -- 15 Mayıs 2010; 23:14:22 >
  • eline sağlık ama 12, 24 ve 32 thread eksik olmuş sana zahmet

    bir de test yapanlara ilk mesajında yol göstersen iyi olur, 2 çekirdeğiniz varsa şu kadar thread i seçin 8 çekirdeğiniz varsa şu kadar felan diye sonra çok karışır burası

    neyse 48 threadli test 16'lıdan daha kısa sürdü, herkes 48 threadde test yapıp paylaşsın o zaman..



    < Bu mesaj bu kişi tarafından değiştirildi Man From Atlantis -- 16 Mayıs 2010; 2:59:49 >
  • Çok güzel olmuş böyle. Ellerine sağlık.
  •  Çok çekirdekli işlemci test programı(48 thread eklendi):)


    Core i5 750 ile benim sonuç da bu çıktı. Dört çekirdeğin tamamı işlemciyi %100 kullandı fakat sonlara doğru çekirdekler birer birer kapanarak öyle hesaplandı gibi geldi. Yani son 4 saniyelik kısımda her saniye bir çekirdek kapandı gibi oldu.

    Güzel program olmuş eline sağlık atyay.
  • arkadaş lar kusura bakmayın yeni şeyler eklemekle uğraştığımdan anca cevap verebiliyorum

     Çok çekirdekli işlemci test programı(48 thread eklendi):)

    http://www.mediafire.com/file/5ytyfzngzea/asalSayiBulma.jar

    bu sefer yeni bi hesaplama yöntemi buldum:P
    bu seferki çok daha dengeli,yani thread sayısının çok fazla olmasının bi yararı yok,işlemci 8thread çalıştırabiliyosa 8 thread den sonrasının hiçbi getirisi olmadı bende 12 de bıraktım 6çekirdekli ht destekli inteller için,daha fazlasına gerek yok diye düşündüm çünkü bende i7 720qm var ve 8 thread ile 12 thread arasında fark olmadı,olmasınıda beklemiyodum açıkçası çünkü asal sayıyı bulmak gibi bilinmeyeni aramıyo bilinen sayılar üstünde işlem yapıyo
    aslında @nadir_en'in kendi programında kulandığı algoritmayı çaldım
    />

    isteyen olursa onun konusunuda vereyim
    http://forum.donanimhaber.com/m_37506489/mpage_1/key_/tm.htm


    quote:

    Orijinalden alıntı: Man From Atlantis
    eline sağlık ama 12, 24 ve 32 thread eksik olmuş sana zahmet

    bir de test yapanlara ilk mesajında yol göstersen iyi olur, 2 çekirdeğiniz varsa şu kadar thread i seçin 8 çekirdeğiniz varsa şu kadar felan diye sonra çok karışır burası

    neyse 48 threadli test 16'lıdan daha kısa sürdü, herkes 48 threadde test yapıp paylaşsın o zaman..



    hocam aslında 16dan sonra hem 6 hemde 8 in katı olduğu için 48 yeterli olur diye düşünmüştüm buyüzden araları es geçtim ama yineden "ben merak ediyorum görmek istiyorum" dersen seni kırıcağıma kafamı kırarım:)
    aslında asal sayı hesabında nekadar çok thread olursa okadar ii çünkü thread başına düşen hesaplama yükü biraz dengeleniyo ve tüm çekirdeklerde ona göre maksimuma yakın kullanılıyo tabi abartmamak koşuluyla çünkü thread sayısı aşırı fazla olursa bellek alanıyla ilgili bi sorun çıkıyo onu tam anlayamadım daha

    ilk mesajı birazdan düzenlerim thread nedir ne işe yarar gibi
    kaç çekirdekli için kaç thread seçilmeliyle ilgili,aslında yeni hesaplama yönteminde 2 çekirdekli için 2 thread,4 için 4thread,4çekirdekli 8thread destekli i7 ler için 8 thread en makulu daha fazlası bi yararı yok ama asal sayı hesabı için 1 çekirdekliler hariç herkez 48 seçse sanırım en mantıklısı olur:)
    1 çekirdekliler için bişey farketmez sanırım




  • Teşekkürler
  • canın sağolsun ya uğraşıyorsun o kadar, eline sağlık
  • oktay ne alemde program?!?
  • quote:

    Orijinalden alıntı: nadir_en

    oktay ne alemde program?!?

    hocam nerden aklına geldi bu,1 sene geçmiş aradan
    program üstünde pek bi yenilik yok malesef,sadece bi ara senin yaptığının aynısını 8 thread olarak ayarladım hız farkı olucakmı diye,başka bişey yapmadım:)
    bu aralar c# ile ilgileniyorum,direcx sdk yı kurdum eğer c#da direcx'i kontrol etmeyi başarabilirsem direk DirectCompute'a atlıycam




  • Üstadlar, bir sorum var benim masaüstü veya notebooklarların amd işlemcili modellerinde hyber threading sayısı artırılabiliyor. bu bilgiye ulaştim bir yerden. Sanırım kapalı şekilde olan bir anahtarı açmak için verilmiş bir hile bu. merak ettiğim konu bu işi intel işlemcilere yapma mümkün mü ?
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.