*

  • birden fazla işlemci (ya da thread) ve birden fazla hafıza bölgesi kullanan programlar geliştirmek.
  • programi gelistiren ekibin çalisma sekline göre adlandirilan program gelistirme tekniklerinden biridir.

    _ _ _ _ _
    o o o o o

    sirasiyla yanyana oturan programcilarin (saat 12 istikametine bakarak çalismaktadirlar) gelistirdigi program için 'paralel programlama' tekniginin uygulandigi rahatlikla söylenebilir.

    diger programlama tekniklerinden 'seri programlama' için;

    _
    o
    _
    o
    _
    o
    _
    o
    _
    o

    sirasiyla oturulacagi asikardir. daha karmasik algoritmalar içeren teknige ise 'fuzzy logic (karmasik mantik) programlama' denir.

    _ _ _ _ _
    o o o o o
    _ _ _ _ _
    o o o o o
    _ _ _ _ _
    o o o o o
    _ _ _ _ _
    o o o o o
    _ _ _ _ _
    o o o o o

    yukaridaki örneklerden de tahmin edilecegi gibi bu sirayla programci kisiler oturmalidirlar.

    (bkz: #101: bilgiislem'e giris)
  • (bkz: çift çekirdekli işlemci) lerin yaygınlaşmasıyla gelişim göstermesi, ileride nesneye yönelik programlama kadar önemli olması beklenen programlama çeşidi. henüz çok yaygın değil ve "çocukluk" evresinde.

    ayrıntılı bilgi için:

    http://www.llnl.gov/…utorials/parallel_comp/#whatis
  • (bkz: mapreduce)
  • farkli bir tonlamayla kulaga ispanyolca ya da italyanca gelebilecek iki sozcuktur ayrica. **
  • akademik ortamlarda buyuk clusterlarda yaygin olarak kullanilmasinin yani sira, ozellikle 4-8 islemcili bilgisayarlarin yayginlasmasi ile onumuzdeki 10 yilda adini daha sik duyacagimiz, ve -bence- bilgisayar biliminin en onemli arastirma dallarindan biri olacaktir.

    meshur iki buyuk kutuphanesi (mpi, openmp) vardir. bellek dagitilmis* ise mpi, paylasilmis* ise openmp kutuphanesi kullanilir.
  • bilmem kaç işlemcili bilgisayarı mantıklı hale getiren tek şey, paralel programlama olmadıktan sonra isterse 1000 çekirdekli olsun.

    (bkz: parallel c#)
  • hızlanma sağlama amacıyla bir işlemi(proses) birkaç işlemcinin aynı anda yapmasıdır. yani bugünkü çift çekirdek, 4 çekirdek gibi çekirdekler işletim sisteminde paralel çalışmazlar. en basitinden biri oyun açarken diğeri browser çalıştırır. yani bunlar seri işlemcilerdir.

    genel olarak programcı programın ne yaptığıyla ilgilenir. paralel programlamada ise programın ne yaptığından çok nasıl yaptığıyla ilgilenilir.

    kabaca 3 düzeyi vardır:
    1-donanımsal düzey olarak işlemcilerin nasıl haberleşecekleriyle ilgilenilir. işlemcilerin bellek alanlarının nasıl paylaştırılacağı, özel ve ortak bellek alanları gibi kavramlarla uğraşılır. en teorik düzeydir.

    2-algoritmik düzey: mevcut çözümün paralelleştirmeye uygun olup olmadığına bakılır. uygunsa kaç işlemciyle en optimum çözüm elde edilir o hesaplanır. işlemci sayısını arttırdığınızda elde ettiğiniz hızlanma, işlemcileri haberleşme süreleriyle azalır. o yüzden belli bir işlemci sayısından sonra işlemciler prosesi yürüteceklerine sürekli haberleşmektedirler. paralel algoritma tasarlanırken mümkün olduğunca haberleşmelerden kaçınılır.
    işlemciler arasında hiç haberleşme gerçekleşmeden iş yükü işlemcilere bölünebiliyorsa bu tip problemlere embarrasingly parallel denir. örnek verecek olursa görüntü işleme düzeylerinden piksel seviyesidir.

    3- programlama düzeyi: tasarlanan algoritmanın işlemcilere bölünüp problemin çözüldüğü kısımdır. açık kaynak kodlu olarak mpi ve openmp gibi kütüphaneler mevcuttur. programlama yapılırken linux da proses yaratmaya benzer bir program yapısı vardır. kütüphanelerin içinde işlemciler arası haberleşmeyi sağlayacak olan fonksiyonlar vardır. yüzlerce fonksiyon olmasına rağmen tüm paralel programlama aslında 3-5 tanesinden ibarettir.

    matrislerin veya yüksek boyutlu veri yapılarının olduğu her yerde paralel programlama efektif olarak kullanılabilir. en çok kullanıldığı alan ise görüntü işlemedir.
  • aynı anda birçok işlemcinin, yapılacak işi parçalara ayırıp, seri bir algoritmaya göre çok daha hızlı gerçekleştirme yöntemidir. paralel programlama sayesinde, seri algoritmalar ile çözümü zaman bakımından mümkün olmayan bir çok problem çözülebilmektedir. günümüzde en iyi bilgisayarlar (bkz: top500.org) paralel programlama mantığıyla çalışmaktadır.
hesabın var mı? giriş yap