şükela:  tümü | bugün soru sor
  • paylasimli bellek (shared memory) bulunduran bilgisayarlarda, olceklenebilir (scalable) ve tasinabilir (portable) programlar yazmak icin kullanilan bir standart. aslinda her platformun kendine has bir threading (turkceye oncelik verelim diye kastik ama bir yere kadar, tabi standart var, platform var. ay cikamiycam bu isin icinden) ortami vardir. ama platformdan platforma degistigi icin tasinabilirlik mumkun degildir. "bu boyle olmaya" diyen abiler kafa kafaya vermisler, ve openmp olagelmis. (bkz: http://www.openmp.org/)
  • en basitinden mesela cok karma$ik bir hesapla bir tabloyu dolduruyorsunuz.

    for(int i=0; i<100; i++) tablo[i] = cok_karmasik_hesap(i);

    cok_karmasik_hesap()'in her cagri$ta i$ini bitirmesi 1 dakka suruyor. toplamda da haliyle bu dongu 100 dakka suruyor.

    openmp ile bu satirin ustune $u satiri eklediginizde:

    #pragma omp parallel for

    dongu, programin cali$tigi sistemde kac tane "core" varsa o kadar parcaya bolunup i$lenir hale geliyor. mesela dual core cpu'nuz varsa 0-49 arasini bir core, 50-99 arasini obur core ayni anda yapiyor. boylece 100 dakka suren i$lem 50 dakkaya iniyor. kac core'unuz varsa o kadar katlanarak hizlaniyor.

    eger compiler'iniz openmp desteklemiyorsa, yazdiginiz kod normal single core haliyle cali$iyor, bir degi$iklige ihtiyac duymuyor.
  • (bkz: plinq)
  • basit #pragma larının yanında programcının çeşitli paylaşımlı değişkenlere,döngü içindeki her cycle'daki değişkenlerin birbiriyle bağlantılarına dikkat etmesi,ona göre pragmaya ayarı çekmesi,işlemi corelara dağıtırken işin analizini iyi yapması - her core'dan gelen overheadleri toplayınca tersine performans kaybına yol açabilir - gereken paralel programlama kiti,apisi,hedesi...
  • nerede ne zaman kullanılması gerektiği iyi analiz edilmelidir. zira verim elde edeyim derken sequential bir sonuçtan daha aşağısına düşebilirsiniz
  • pthread kütüphanesinin basitleştirilmiş hali, deadlock ve race condision durumlarını kendi kendine çözebildiği yerler görülür, çözemezse intelin toollarına (intel parallel inspector) sorulur nerde bu deadlock göster bulamadık denilir, intelde, hoca openmp falan uğraşıyorsun da ben intel parallel building blocks die bişi yaptım thread programcılığı yapacaksan bunları kullan rahat et der.
  • yeni versiyonuyla getirmis oldugu task-based parallel programming yontemiyle, dogalliga biraz daha yaklastik dedirtmistir.
  • youtube'da api ile ilgili bir tutorial playlisti bulunmaktadir. tim mattson adeta bilale anlatir gibi anlatmak sozunun canli kaniti gibi catir cutur anlatmaktadir.