: 7-25 yaş arası ğrencilere yaşam koçluğu niteliğinde bir kitap yazarsan iyi para kazanırsın hocam :) engin tecrübelerinden faydalanması gereken yeni nesil seni bekliyor. Hocam denedim daha nce... Yurtta aldım bi çekirge, eğittim... Yurtta dinamit yapımı sırasında çıkan olaydan dolayı ülkücüler ldürüyordu nerdeyse... Hazırlıktan bi cekirge aldım, baktım cocuğun hareketleri dengesizleşiyor bıraktım... Cemaatci bi eleman vardı sitede üye, en son yıl başında rakı içiyodu :| Cmez bünyelerde ters etki yaratıyor yani :) Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

7-25 yaş arası ğrencilere yaşam koçluğu niteliğinde bir kitap yazarsan iyi para kazanırsın hocam :) engin tecrübelerinden faydalanması gereken yeni nesil seni bekliyor.

: yasin_55 bunu yazdı: yüksek lisans düşünüyon mu rene? allah yazdıysa bozsun hocam artık okuyacak yerlerim ağrıyor... neden? master falan iyi olur aslinda. tabi 1.5 yillik is deneyimi istiyorlar. benimde istedigim dersleri kasip, MBA uzerine master yapmak. sanirim sansim var, sonucta teknik muhendislik. gerci benim bolumde muhendislikmi degilmi anlamadim Bachelor program Computer Science - four years bachelor program olarak geciyor ama :S artik bitti sayilir, bu saatten sonra yapacak bisey yok...

tekrar tesekkur ederim :)

Upload edersen iyi olur bana da lazım oldu Sen hiç kaval çaldın mı?

renegadealien tesekkur ederim...

siiteye ayraç. I'şıkY'ılı;^^`) Zk't^^` RnSySyTk. dl. SpRtÇzBşBkYd Kryptia. agogE Sa'd-l'Suud az. ç'k 'lmyn'Dşn Pnct'tnAnNttn Blgi, YpBlgi 'Ct'nDrm. CmdyDrm. MdrnDrm hRşYdşR ClptcPth'Strsm M'nPhs' Ld, X/Y YrYnZmnGrçklk, AlgBzklğ KrzFrst'tr Tiytr' Pugchv, Jtrn, İmmlmn, FllngLef, Pik' SuprmcySprrty CoBehTh elFnmno:NzrioRonldo AdnKy TkSs, TkHrf . RtNsTk. KvMp. Mk. TrmDyn ScklkNmRzgr ŞkHcBy ccp. kky Snrlr'Çz SnaSnLzmsn 'NsnKsknçtr BgDppr. MagllnCl'ds. S'thCro's Ch'kW'ng CreazioneDiAdamo^^`, Arctrs. Spic' ArcScnd, YySnye TrbProp, TrbJet, TrbFan 3.10^5km/sn 343m/sn 900-1240m/snMacH RamJt, ScRamJt Przdi^^' Tbu. XL Prsek MAtv^^` mLAT G'dWllHnting . 3id't^^` TareZmenPr ParaMotor TrflrVArsİlşklr +. , ZminŞkil. .. Bu imza @SubZero tarafindan degistirilmistir. "Bu kadar uzun karmakarisik bir imza yapma diye uyardim ama heeheeeey _hey kim sylüyor, kim dinliyor." Imzanizi SubZero'ya bilgi vermeden degistirmeyiniz. Tesekkurler...

Birde bendeki Projeler Matrisleri Hesaplıyo Kac ıslemcıyle ne Kadar Da Hesaplandıgını. ...

yüksek lisans düşünüyon mu rene?

http://hotfile.com/dl/25059750/c86fddb/OpenMpOpenMpiTahribatCom. rar.html buda diğeri olsun Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

Hoşgeldin ncelikle. Elindeki dosyaları bir araya getirip rapidshare ya da benzeri herhangi bir siteye upload edip, download linkini bu konu altına yazabilirsin. Sen hiç kaval çaldın mı?

Hemen yolliyim elimdeki Herseyide Nasil? Nerden onu Bilmiyorum uzun Zamandan Sonra Yeniden Tarikattayım :) ...

: yüksek lisans düşünüyon mu rene? allah yazdıysa bozsun hocam artık okuyacak yerlerim ağrıyor... Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

Alakasız olacak ama biz de Mesleki İngilizce dersinde http://mitpress.mit. edu/books/chapters/0262533022chap1. pdf şunu çevirdik bir dnem boyunca. Not tutsaydım koyardım buraya ama hep kağıt üzerinde notlar. Sen hiç kaval çaldın mı?

Yüksek lisans dersi mi bu? Sen hiç kaval çaldın mı?

Cuma sinav varda, su openMP ile MPI i tam olarak cozmem gerek.

Tamamen kendi devimdir hocam :) OpenMp Nedir? OpenMp, Unix ve Windows tabanlı işletim sistemlerinde kullanılabilen bir API'dir. Aracılık yaptığı grev ise, derleyicide derlenen program parçacıklarını paralel programlama ile çoklu işlemciye sahip sistemlerde, işlemcilere dağıtılması ve işletilmesinin sağlanmasıdır. Günümüzde, Intel, IBM, Microsoft, Sun tarafından ve Open Source olarak dağıtılarak, C, C++, Foltran ve Visual Studio 2008 C++ içinde kullanılabilecek çeşitleri mevcuttur. Tam listesine http://openmp.org/wp/openmp-compilers/ adresinden ulaşılabilir. OpenMpi Nedir? OpenMpi ise OpenMp ile yazılan işlemciler arasında çalışan programların ve/veya birden fazla bilgisayar arasında dağıtık olarak çalıştırılan işlemlerin çalışması için gerekli koordinasyon ve sıralamayı düzenleyen protokol bütününe verilen addır. rnek : Gcc derleyicisi ile #include #include int main "gcc program. c program. exe" Şeklinde derler isek program aşağıdaki şekilde çalışacaktır: Aynı programı "gcc program. c -fopenmp -lgomp -lpthread -o program2. exe" Şeklinde derler program aşağıdaki şekilde çalışacaktır: Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

: Yok hocam mühendislik 4. sınıf bilgisayar mimari dersi... Ayın 28'inde 20 senelik ğrencilik hayatımın son sınavına, bu dersten girecem :) Edit : Open Mpden sınava gireceksen, pipeline, cisc mimarisi, risc mimarisi bunlardan sorumlu değilmisin hocam :| bizim 3. sinif dersi, Parallel Software Engineering diye geciyor.

: renegadealien bunu yazdı: ats30 bunu yazdı: 7-25 yaş arası ğrencilere yaşam koçluğu niteliğinde bir kitap yazarsan iyi para kazanırsın hocam :) engin tecrübelerinden faydalanması gereken yeni nesil seni bekliyor. Hocam denedim daha nce... Yurtta aldım bi çekirge, eğittim... Yurtta dinamit yapımı sırasında çıkan olaydan dolayı ülkücüler ldürüyordu nerdeyse... Hazırlıktan bi cekirge aldım, baktım cocuğun hareketleri dengesizleşiyor bıraktım... Cemaatci bi eleman vardı sitede üye, en son yıl başında rakı içiyodu :| Cmez bünyelerde ters etki yaratıyor yani :) "renegadealien ğrenci Eğitim Merkezi" :) Slogan da "İşi uzmanından ğrenin".. :D En azından tavsiye ğüt vs anlatan bir kitap çıkarsan iyi olur hocam. Bakarsın gastelere manşet olur "Profesyonel ğrenci ğretmen oldu" :) Sen bi dene hocam. Mesela "renegadealien ğrencilik Dersleri" gibi birşey. Ayrıca OpenMp, OpenMpi konusunu dkümanlar kısmına ekleyin sunumlar fln lazım olur.. ben indirmedim, 20 dakikadir ugrasiyorum, hep ayni hata... ErrorYou want to download the following file: http://rapidshare.com/files/338332543/OpenMpOpenMpiTahribatCom. rar | 1067 KBCurrently a lot of users are downloading files. Please try again in 2 minutes or become a Premium memberPlease note, the server is not going to check again within the next 2 minutes if downloading is possible again. To provide a fair platform, all user get the same options. Your last attempt was 28 seconds ago.

Arkadaslar OpenMP ve MPI La Ilgılı elımde Bır Cok Hazır Proje Var Cesıtlı Algorıtmalar Dılersenız yollayabıLırım. Benımde Gecen Donemkı Dersım Projem Gauss-Seidel Algoritmasıydı işinize Yararsa Yollayabılırım :) ...

: ats30 bunu yazdı: 7-25 yaş arası ğrencilere yaşam koçluğu niteliğinde bir kitap yazarsan iyi para kazanırsın hocam :) engin tecrübelerinden faydalanması gereken yeni nesil seni bekliyor. Hocam denedim daha nce... Yurtta aldım bi çekirge, eğittim... Yurtta dinamit yapımı sırasında çıkan olaydan dolayı ülkücüler ldürüyordu nerdeyse... Hazırlıktan bi cekirge aldım, baktım cocuğun hareketleri dengesizleşiyor bıraktım... Cemaatci bi eleman vardı sitede üye, en son yıl başında rakı içiyodu :| Cmez bünyelerde ters etki yaratıyor yani :) "renegadealien ğrenci Eğitim Merkezi" :) Slogan da "İşi uzmanından ğrenin".. :D En azından tavsiye ğüt vs anlatan bir kitap çıkarsan iyi olur hocam. Bakarsın gastelere manşet olur "Profesyonel ğrenci ğretmen oldu" :) Sen bi dene hocam. Mesela "renegadealien ğrencilik Dersleri" gibi birşey. Ayrıca OpenMp, OpenMpi konusunu dkümanlar kısmına ekleyin sunumlar fln lazım olur..

Bu hafta, yaz icin 2 ayik, staj kabulu aldim ve bir paperdaki algoritmalari OpenMP, PCL, OpenCV kutuphaneleri ve C++ dili kullanarak implement etmem istendi :) OpenMP calismaya baslamistim ki, arastirirken 2010 yilinda acilmis bu guzel konu da karsima cikti turkce olarak ^_^ Hem up olsun, guzel konu ve teknoloji hem de ben de video paylasayim dedim yeni konu acmadan. Harika bir video serisi: https://www.youtube.com/playlist?list=PLLX-Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG Bu da guzel bir kitap: http://mitpress.mit. edu/books/using-openmp

http://rapidshare.com/files/362406732/OpenMP_MPI. rar.html bulabıldıklerım Bunlar :) ...

Al bunlarda slaytları hocam... http://rapidshare.com/files/338332543/OpenMpOpenMpiTahribatCom. rar.html Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

http://rapidshare.com/files/362423219/ppmpi_c. rar.html al hocam bunlarda bizim ünideki rnek kodlar daha ileri konuların rnek kodlarıda var belki yardımcı olur.

Yok hocam mühendislik 4. sınıf bilgisayar mimari dersi... Ayın 28'inde 20 senelik ğrencilik hayatımın son sınavına, bu dersten girecem :) Edit : Open Mpden sınava gireceksen, pipeline, cisc mimarisi, risc mimarisi bunlardan sorumlu değilmisin hocam :| Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

Ben bulduklarimi direkt yazili olarak paylasiyorum cunku koyulan linkler siliniyor genelde! Umarim anlamaniza yardimci olur. MPI ile Paralel Programlama Paralel programlamayı herkes duymuştur ama çok az insan kullanmıştır. Paralel programlamanın az kullanılmasının sebebi paralel makinelerin pahalı olması kontrolünün zor olması ve en nemlisi de genel olarak ihtiyacımızın olmamasıdır. Peki paralel hesaplamalar nerede kullanılmaktadır? Araştırma laboratuarları, üniversiteler, ileri teknoloji kullanan şirketler limitlerinin zorlandığı durumlarda paralel makinelere ihtiyaç duymaktadırlar. rnek olarak Koç Üniversitesinde "moleküler simülasyonlar", "quantum computing", "computational electromagnetics", "bioinformatics" ve benim de uğraştığım "computational flow simulation/modelling" gibi değişik araştırma projeleri üzerinde uğraşılmaktadır. Bu paralel hesaplamalar için de MPI adı verilen Message Passing Interface adlı paralel işlem kütüphanelerini kullanmaktayız. Bunun dışında değişik kütüphaneler de vardır. Donanım / Yazılım Donanım olarak en basit makineleri birbirine bağlayarak bile bir cluster elde edebilirsiniz. Bunun için bilgisayarınıza gerekli MPI dosyalarını ve bazı programları kurmanız gerekmektedir. Bunlardan bir tanesi openPBS iş akışını düzenlemektedir ve OSCAR adlı programdır. Her ne kadar işletim sistemi olarak unix/linux tabanlı işletim sistemleri desteklense de windows tabanlı işletim sistemleri için de bu yazılımların versiyonları vardır. Donanım olarak bütün işlemciler desteklenmektedir . Ayrıca ULAKBIM den (128 node' luk güzel bir clusterları var) account almanız mümkün, tabi akademik amaçlar için kullanacağınıza ikna etmeniz gerekecektir. Yine de account alamaz ve test etmek istediğiniz bir kod olursa bana yollarsanız ben deneyebilirim. MPI nedir? Kısaca bahsettik ama MPI nedir? Nasıl çalışır? Başka makinelere/cpu' lara nasıl sonuç yollar... Biraz bunlardan bahsedelim. ncelikle yazdığınız her paralel kodun başına "mpi. h" headerini eklemeniz gerekmektedir. Bu header dışında kullanmanız gereken başka header yoktur. MPI fonksiyonları makineler arası iletişimi, işlem nceliklerini, yük ayarını vs düzenlemektedir. Format olarak MPI fonksiyonları MPI_Xxxxx formatını kullanmaktadır. MPI fonksiyonlarını size kısaca tanıtayım: MPI_Init MPI_Init fonksiyonunu bütün kodlarınıza eklemeniz gerekmektedir. MPI_Init fonksiyonuna komut satırından da parametre verebilirsiniz ama mecbur değilsiniz. MPI_Init size bir değer dnmektedir bu "MPI_SUCCESS" olursa kod geri kalan MPI_X fonksiyonlarını kullanabilecektir, eğer bu değer dnmezse MPI_X fonksiyonlarını kullanamazsınız. MPI_Comm_size Bu fonksiyonumuz proses sayısını bize vermektedir. Genellikle "comm" kısmına MPI_COMM_WORLD üst fonksiyonu yazılmaktadır. MPI_Comm_rank Bu MPI fonksiyonu çağıran prosesin sırasını vermektedir. Başlangıçta bütün prosesler 0 veya -1 değerlerini almaktadır. Daha sonra MPI tarafından sıraya sokulunca bütün prosesler numaralandırılmaktadır. Aşağıda ki rneğimizde greceğimiz gibi makineler 0 dan başlayarak rank alacaklardır. MPI_Abort Adından da anlaşıldığı gibi bütün prosesleri durdurmaktadır. Istenmeyen durumlarda başvurulabilecek bir fonksiyondur. MPI_Get_processor_name İşlemcinin adını ve adın uzunluğunu dnmektedir. MPI_Initialized MPI_Init fonksiyonun çağırılıp çağırılmadığını kontrol etmektedir ve çağırıldıysa "1" dnmektedir. MPI_Init her proses tarafından sadece bir kere çağırılması gerektiği için MPI_Initialized fonksiyonu olası çakışmaları nlemektedir. MPI_Wtime Double deger olarak paralel kodun çalışmaya başlamasından sonra geçen zamanı vermektedir. MPI_Finalize Bütün işlemlerimizden sonra MPI_Finalize diyerek işlemlerimizi sonlandırıyoruz. Yukarıda grdüğünüz fonksiyonlar genel MPI fonksiyonlarıdır ve sadece kodunuzu ynetmek amacıyla kullanılmaktadır. Bunların dışında 100' e yakın daha fonksiyon vardır. Onlara gelecek yazılarımızda değinmeye çalışacağız. Hello World 0 Hello World 1 Hello World 2... Şimdi geldik kod kısmına! Klasikleşmiş "merhaba dünya" rneğimizi bu sefer paralel bilgisayarlarda uygulayacağız. Her bilgisayardan selamlama mesajı gndereceğiz. Bunun için yukarıda açıkladığımız fonksiyonları kullanacağız. HTML-Kodu: #include #include "mpi. h" int main int argc; char argv; Compile edip çalıştırınca cevap olarak aşağıdaki ekranı grmekteyiz. Haklı olarak "sadece bir tane proses gzüküyor" diyeceksiniz. Hatamız burada paralel işlem yapacak bir kodu normal bir C kodunu çalıştırdığımız gibi çalıştırmamızdır. Bunun için paralel makineye iş yüklemek gerekmektedir . Bunun için PBS yazılımının manuelinden nasıl komut aldığına bakıyoruz . rnek olarak yüklediğimiz işe isim vermek istersek #PBS N benim işim diyebiliyoruz. Oluşacak output ve error bilgileri için log dosyaları da oluşturabiliriz. Daha sonra bu yazdığımız 10-15 komutu bir defada çalıştırmak için bir job script yazıyoruz. Bu yazıda amacımız linux ğretmek olmadığı için bunları detaylı olarak açıklamayacağım. Yukarıda bahsettiğim PBS adlı program sizin verdiğiniz komutları değerlendirerek bilgisayarların iş yoğunluğuna gre verilen işleri sıraya sokmaktadır ve ona gre cpu, hard disk, memory tahsisi yapmaktadır. Size bu iş için yazdığım job scripti gstereyim. Aşağıda grdüğünüz comment yani yorumlar, geri kalan kısımlar execute edilecek komutlardır. Yazımın sonunda size daha kestirme bir yoldan da bahsedeceğim ama o yntem sistem admini tarafından grülürse hiç hoş karşılanmayan bir durumdur . HTML-Kodu: #!/bin/sh iş ismi "ozkanen" ismi verdim #PBS -N ozkanen Output files olusacak output ve olusacak error loglarını buraya koyabiliriz #PBS -o ozkanen. out #PBS -e ozkanen. err Buraya dikkat edin!!! 4 grdüğünüz kısım 4 makine kullanacağım demek 1 grdüğünüz kısım 1 makinede 1 işlemci kullanacağım demek #PBS -l nodes=4:ppn=1 programın ne kadar çalışacağını sylemektedir #PBS -l cput=32:00:00 #PBS -l walltime=32:00:00 Queue name clusteri paralel olarak kullanacagim icin asagidaki kodu yazıyorum clusterları isterseniz tek tek de kullanabilirsiniz #PBS -q parallel #PBS -m abe cevap cıkınca bana mail at demek oluyor aşağıda #PBS -M oeren@ku.edu.tr Script Commands aşağı kısımlar o kadar nemli değil sadece size işlerin çalıştığını ve nerede çalıştığını size sylüyor cd $PBS_O_WORKDIR echo "Running test" echo 'group main' > machines cat $PBS_NODEFILE | awk ' ' >> machines echo 'current directory is' pwd echo 'Running test' aşağıda./hello adını verdiğimiz dosyayı çalıştırıyoruz istersek cevapları output dosyamıza yazdırabiliriz./hello out işimiz bittiği zaman bize bittiğini haber vermektedir echo "job complete" exit 0 Bu job scripti yazdıktan sonra oerentest. job ismi ile kaydediyorum. Çalıştırmak için de qsub oerentest. job diyorum. a komutu yazdığım zaman ekranda 91621 kodu ile işimin sisteme girildiğini grüyorum. Status anlamına gelen S sütunundan yüklediğim işimin Q durumunda olduğunu grüyorum. Kodum saniyelik bir run yapıp bana cevap verecek ama yukarıda grdüğünüz gibi sıra olduğu için PBS sıraya sokuyor (32 node da olsa her zaman fazla iş var). Eğer dikkatlice bakarsanız NDS de 4"yazdığını grürsünüz bu 4 tane makine istiyorum anlamındadır, ayrıca ben dahil kimse memory' den kısıtlama yapmadığı için Req memory kısmı boş gzükmektedir. Ayrıca Req Time sütununa bakarsanız 32 saatlik bir iş verdiğimi ve Elap Time sütununa bakarsanız hiç çalışmadığını greceksiniz. Bayağı uzun sürdüğü için ben bu işimi bir output dosyama yazdırıp sonraya bırakıyorum ve filmimi seyrediyorum. Aradan bayağı bir zaman geçtikten sonra sıradakilerin işi bitip benim işim de çalışınca sabırsızca beklediğim mydat. out dosyam oluşuyor. VI editrü ile mydat. out dosyasına bakarsak : Beklediğimiz sonucu grüyoruz. Şimdi kodumuza tekrar dnelim. Temel bir C kullanıcısına yabancı gelen aşağıdaki satırlara bakalım: HTML-Kodu: // verilen proseslerin toplam sayısını bize size olarak dnmektedir MPI_Comm_size ; // prosesin hangi bilgisayarda çalıştığı rank olarak dnmektedir MPI_Comm_rank ; // sonuçları print ediyoruz printf ; Yabancı fonksiyonlardan ilki olan Comm_size fonksiyonunu çağırıyoruz. HTML-Kodu: MPI_Comm_size ; Yukarıda da bahsettiğim gibi MPI_Comm_size fonksiyonu bize paralel makineye yüklediğimiz işin kaç bilgisayar tarafından çalıştırılacağını "size" değeri ile vermektedir. MPI_COMM_WORLD değişkeni ise çalıştığımız environmenti vermekteyiz. Makinemiz bunu default çalışma parametresi almaktadır. Şimdi elimizde size değeri 4 makineye iş yüklediğimiz için 4 olarak bize dnmektedir. Sırada rank fonksiyonumuz var! HTML-Kodu: MPI_Comm_rank ; Rank fonksiyonu bize proseslerin MPI tarafından sıraya sokulduktan sonra hangi sırada olduğunu rank ile bize dnmektedir. En başta ki MPI_COMM_WORLD değerini de size fonksiyonunda olduğu gibi default olarak giriyoruz. MPI tarafından sıraya biz herhangi bir tanımlama yapmadığımız için ( prosesleri sıraya sokmak için ve bunların arasında etkileşimlere gre sıra nceliği tanımlayabileceğimiz fonksiyonlar vardır. Bunlar arasında MPI_Send, MPI_Recv, MPI_Ssend, MPI_Bsend, MPI_Buffer_attach, MPI_Rsend fonksiyonlarını sayabilirim bunları gelecek yazımda detaylı olarak anlatacağım ve rnek kodla açıklayacağım. rnek olarak MPI_Recv fonksiyonu bir bilgisayardan mesaj aldığı zaman o mesajı gerçekleştirene kadar beklemektedir . Kolay Ytem : Job Script yazmadan çalıştırmak Yazıma girişte size bu job scripti yazmadan daha kolay bir şekilde bu programı çalıştırabileceğimizi sylemiştim . Şimdi gelelim kolay ynteme! Komut satırına mpirun np 3 hello yazıyoruz. Bunun anlamı şudur Bana 3 tane makine kullanarak hello uygulamasını çalıştır. Bu satırı yazdıktan sonra MPI aktif hale geliyor biz iş sırasını düzenlemediğimiz için MPI hangi prosesten nce cevap gelirse onları sıraya sokarak ekrana cevapları dndürüyor. Komutta eğer 3 yerine 12 yazarsak 12 node kullanarak çalıştırıyoruz. Grdüğünüz gibi her defasında ayrı bir sıra oluşuyor hangi işlemci daha hızlı cevabı gnderirse onun prosesi daha nce gzüküyor. zkan Eren'e tesekkurler! O Asagida ki OpenMP anlatimi bir dergiden alintidir. İlk yazımın konusuna karar vermek her ne kadar güç olsa da, son günlerde gelişen işlemci teknolojilerinin ulaştığı çok çekirdekli mimariler ile birlikte paralel programlama olgusunun bilgisayar alanıyla gerek teorik, gerekse pratik olarak ilgilenen herkesin karşısına daha sık çıkacağını ve popülerliğini artırıp bir gereklilik halini alacağını düşündüğüm için bu konuyu irdeleyerek başlamak istedim. Kullanım alanlarına ve OpenMP'ye geçmeden nce konu hakkında kafamızda bir resim oluşması için çok fazla teorik detaya boğulmadan paralel hesaplama hakkında temel bilgileri sizlerle paylaşmak istiyorum. Bilgisayar yazılımlarının geçmişine baktığımızda, yazılan programların sıralı hesaplamaya gre tasarlandığını grürüz. Detaylandıracak olursak: -Yazılımlar tek çekirdekli bir işlemciye sahip bir bilgisayarda çalışmak üzere kodlanır -Problem birbirinden ayrı, sıralı ynergeler serisine indirgenir -Her ynerge bir diğerinin ardından işleme alınır -Bir işlem süresinde sadece bir ynerge çalıştırılır. Bunun yanı sıra, paralel hesaplama ya da paralel programlama mevcut çoklu hesaplama kaynaklarının eş zamanlı kullanılması üzerine kuruludur. Paralel hesaplamanın çalışma prensiplerine daha detaylı bakacak olursak: -Çoklu işlemciler üzerinde çalışmak üzere tasarlanır -Problem eş zamanlı çzülebilecek farklı alt parçalara blünür -Her parça kendi içerisinde sıralı ynergelere ayrılır -Her parçadan ynergeler eş zamanlı olarak farklı işlemciler üzerinde çalıştırılır Resimden de grdüğünüz üzere paralel hesaplama da aslında içerisinde sıralı hesaplamayı barındırıyor çünkü her ynerge için bir işlemciye sahip olmak gibi bir lüksümüz olmayacaktır J. İşlemci sayımız arttıkça her parçaya düşen ynerge sayısı da aynı oranda düşecektir. OpenMP Nedir? OpenMP sektrün nde gelen donanım ve yazılım üreticilerinin bir araya gelerek oluşturduğu bir uygulama arayüzüdür . OpenMP programcılara taşınabilir, lçeklenebilir, paylaşılan bellek sistemini kullanan paralel uygulamalar yazmaları için bir model sağlar. OpenMP ile C, C++ ve FORTRAN dilleri ve UNIX ve Microsoft Windows gibi platformlar için uygulamalar geliştirebiliriz. Yazdığımız OpenMP ynergeleri herhangi bir değişiklik gerektirmeden bu platformlarda derlenebilir. Eğer kullanılan derleyici paralel programlamayı desteklemiyorsa OpenMP ynergeleri yorum olarak algılanır ve grmezden gelinir. Bu taşınabilirlik programcıyı birçok yükten kurtarır ve arka planda paralel programlama yapabilmek için gerekli derin problemlerle uğraşmak zorunda kalmayız, OpenMP bizi bu dertten kurtarıyor. OpenMP aslında bir multithreading uygulamasıdır ve tüm threadlerin ortak bir belleği paylaşması prensibi üzerine inşa edilmiştir. OpenMP paralelleştirme işlemini otomatik olarak yapmaz, programcı bunu açık olarak yapmalıdır ve tüm kontrol programcıdadır. OpenMP fork-join paralel çalışma metodunu kullanır. Ana thread, programcının kontrolünde paralelleştirilen blgelere geldiğinde verilen direktiflere uygun olarak çatallaşır ve alt threadler yaratır. Yapılacak iş bu threadlere blünerek eş zamanlı olarak çalıştırılır. Tüm threadler yapacağı işi bitirip paralel blgenin sonuna geldiğinde senkronize olup lürler ve yalnızca ana thread çalışmaya devam eder. Birazda Uygulama Temel bilgileri edindiğimize gre giriş seviyesinde OpenMP komutlarına gz atabiliriz. Uygulama rneklerimizde C/C++ dillerini kullanacağız. ncelikle OpenMP komutlarının küçük/büyük harfe duyarlı olduğunu hatırlatmak isterim. OpenMP komutlarını kullanabilmek için kodumuza omp. h kütüphanesini dahil etmemiz gerekiyor. Genel kullanım kalıbı: #pragma omp direktif_ismi Parallel direktifi: Paralel blge başlangıcını belirtir. Bir thread bu direktife geldiğinde threadlerden bir takım kurar ve ana thread olur. Ana thread de bu takımın bir parçasıdır ve 0 ile numaralandırılır. Paralel blge başlangıcından itibaren kod çoğaltılarak threadler tarafından işletilir. Paralel blge bitiminde ise uygulanan bir bariyer vardır ve bu blgenin tesine yalnızca ana thread geçebilir. Kaç adet thread yaratacağımızı belirlemenin birkaç yolu vardır: -IF cümleciği yazmak -NUM_THREADS cümleciğine parametre vererek -omp_set_num_threads fonksiyonu ile paralel blge oluşturmadan nce thread sayısını belirlemek. rnek: omp_set_num_threads(8); rnek bir kod inceleyelim: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include main { int nthreads, tid; / Threadler çatallaşır ve bir takım oluşturur. Her thread kendine has tid değişkeninin bir kopyasını yaratır / #pragma omp parallel private { / omp_get_thread_num fonksiyonu ile thread numarası alınır ve yazdırılır / tid = omp_get_thread_num ; printf ; / Bu if şartını sadece ana thread doğrulayıp çalıştıracaktır / if (tid 0) } / Tüm threadler ana threadle birleşir ve sonlanırlar / } Kodun paralel kısmının başlangıcını incelersek aslında çok basit bir yapıya sahip olduğunu grürüz. Dikkat etmemiz gereken nokta pragma bloğunun " " işareti ile sonlanmasıdır. Bu süslü parantezler arasında kalan blge paralel blgemizdir. Bir diğer nokta private cümleciğidir. Bu cümlecik parametre olarak aldığı değişkenin tüm threadlere "zel" olduğunu belirtir. Bu değişkenin her bir thread için diğer threadler tarafından ulaşılamayan zel kopyaları oluşturulur. Eğer shared deseydik bu değişken tüm threadler tarafından grülebilir olacaktı. omp_get_thread_num fonksiyonu kod bloğunu çalıştıran threadin numarasını verir genellikle ana threade bazı işler yaptıracağımızda thread numarasını almak için kullanılır. omp_get_num_threads komutu ise takımda kaç adet thread olduğunu dndürür. Bu kodu çalıştırdığımızda rneğin 4 adet threadimiz varsa paralel blgemiz 4 kez işletilir. for direktifi ve dngüleri paralelleştirmek: Bu direktif sayesinde for dngülerimizi paralelleştirerek çalışma sürelerini kısaltıp performans kazanımı sağlayabiliriz. Bu direktifi kullanıyorsak dngümüzün içinde kontrolü dngü dışına atacak komutlardan kaçınmalıyız . for direktifini kullanırken bize yardımcı olacak cümlecikler şunlar: - schedule: Dngümüzün threadler arasında nasıl blüneceğini belirler. Bir yığın parametresi ile dngü tekrarlarımızı kaç parçaya bleceğimizi belirleriz. STATIC parametresi ile kullanırsak yığınlarımız threadler arasında statik olarak dağıtılır. Yığın parametresi vermezsek mümkünse tekrarlar eşit olarak blünecektir. DYNAMIC parametresi ile kullandığımızda verdiğimiz yığın parametresi threadlere dinamik olarak dağıtılır ve işini bitiren thread bir sonraki yığını yapmaya başlar. - nowait: işini bitiren threadlerin diğer threadleri beklememesini sağlar. rnek Kod Parçası: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 for (i=0; i < 1000; i++) a = b = i 1.0; chunk = 100; / Paralel blge başlangıcı / #pragma omp parallel shared private / Paralel blge sonu / } Nasıl Derleriz? gcc derleyicimizde kodumuzu derlerken sonuna fopenmp parametresini vermemiz yeterli olacaktır. Paralel programlama ve OpenMP konularının her biri başlı başına derin ve tamamını bu yazımda aktaramayacağım kadar geniş konular. Bu yüzden ufakta olsa bu konulara bir giriş yaparak bilenlere hatırlatmak, daha nce duymamış olanlara ise farklı bir pencere açabilecek bu konuları tanıtmakla yetineceğim. Yazımı sonlandırmadan nce sizlerle çok ilginç ve nemli iki projeyi paylaşmak istiyorum. Bunlar dünya çapında yürütülen paralel hesaplama projelerinden SETI@Home ve Folding@Home. Bu iki projede de çok kompleks ve tek bir bilgisayarda yapılmaya kalkıldığında milyonlarca yıl sürebilecek hesaplamalar parçalara ayrılıp internet ağı aracılığıyla yüz binlerce gnüllü tarafından kendi bilgisayarlarında setler halinde yapılıp projeye yollanıyor. Bu şekilde muazzam bir işlemci gücüne ulaşılarak imkansız gibi grünen hesaplamalar mümkün hale geliyor. SETI@Home projesi uzaydan gelen sinyalleri analiz ederek dünya dışı akıllı yaşam formu bulmayı amaçlayan bilimsel bir deney. Folding@Home projesi ise birçok kanser türü ve Alzheimer ve Parkinson gibi hastalıklara tıbbi ve genetik çzümler üretebilmek için proteinleri moleküler olarak incelemeyi amaçlıyor. zellikle Folding@Home projesinin ilginizi çekebileceğine inanıyorum. Gelecek yazılarda grüşmek üzere. OpenMP ile ilgili daha detaylı bilgi almak isteyenler için: https://computing.llnl. gov/tutorials/openMP/ SETI@Home projesinin web adresi: http://setiathome.berkeley. edu/index. php Folding@Home projesinin web adresi: http://folding.stanford. edu/ Yararlanılan Kaynaklar: https://computing.llnl. gov/tutorials/openMP/ https://computing.llnl. gov/tutorials/parallel_comp/ http://en. wikipedia. org/wiki/Parallel_computing http://en. wikipedia. org/wiki/OpenMP Volkan DEMİRCAN'a tesekkurler!

: ÇEK sagol...