• Sonuç bulunamadı

Algılayıcı ağları için yönlendirme algoritmasının paralel ANCOR ile gerçeklenmesi

N/A
N/A
Protected

Academic year: 2021

Share "Algılayıcı ağları için yönlendirme algoritmasının paralel ANCOR ile gerçeklenmesi"

Copied!
67
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

KOCAEL˙I ¨UN˙IVERS˙ITES˙I * FEN B˙IL˙IMLER˙I ENST˙IT ¨US ¨U

ALGILAYICI A ˘GLARI ˙IC¸ ˙IN Y ¨ONLEND˙IRME ALGOR˙ITMASININ PARALEL ANCOR ˙ILE GERC¸ EKLENMES˙I

Y ¨UKSEK L˙ISANS

Bilgisayar M ¨uhendisi ˙Ilker Mustafa MANAP

Anabilim Dalı : Bilgisayar M ¨uhendisli ˘gi Danıs¸man: Yrd. Doc¸. Dr. H. Engin DEM˙IRAY

(2)
(3)

¨ ONS ¨OZ

Mobil uygulamaların yaygınlas¸ması ve kullanıcı sayısındaki artıs¸, kablosuz a ˘glarda[1] yeni yaklas¸ımların getirilmesini zorunlu kılmıs¸tır. C¸ alıs¸mamda, yeni ortaya atılan bir y ¨onlendirme algoritmasının[2, 3], daha etkin bir s¸ekilde sim ¨ulasyonunun yapılabilmesi ic¸in zorunlu olan paralelles¸tirilmesi is¸lemini gerc¸ekles¸tirdim. Daha b ¨uy ¨uk parametrelerle gerc¸ekles¸tirilebilecek sim ¨ulasyonların, aras¸tırmacılara algoritmalarını iyiles¸tirmede yardımcı olaca ˘gını d ¨us¸ ¨un ¨uyorum.

Tezimin hazırlanması sırasında bana manevi destek olan es¸im Serap Manap’a, algoritma analizi ve tasarlanması sırasındaki yardımlarından dolayı Deniz Demiray ve kardes¸im Cevat Manap’a, son olarak c¸alıs¸mam sırasında yaptı ˘gı y ¨onlendirmeler ve tavsiyeleri ic¸in danıs¸manım Yrd. Doc¸. Dr. H. Engin Demiray’a tes¸ekk ¨ur ¨u bir borc¸ bilirim.

(4)

˙IC¸˙INDEK˙ILER ¨ ONS ¨OZ . . . i ˙IC¸˙INDEK˙ILER . . . iii S¸ EK˙ILLER D˙IZ˙IN˙I . . . iv S˙IMGELER . . . v ¨ OZET . . . vi

˙ING˙IL˙IZCE ¨OZET . . . vii

1 G˙IR˙IS¸ . . . 1

2 ALGILAYICI A ˘GLARI . . . 2

2.1 Algılayıcı A ˘gların Yapıtas¸ları . . . 3

2.1.1 Donanım . . . 3

2.1.2 Kablosuz haberles¸me . . . 4

2.1.3 Ortak is¸aret is¸leme . . . 4

2.2 Kablosuz Algılayıcı A ˘gları Uygulamaları . . . 5

2.2.1 Veri toplama uygulamaları . . . 5

2.2.2 Hesap a ˘gırlıklı uygulamalar . . . 5

3 PARALEL S˙ISTEMLER . . . 7

3.1 Paralel Bilgisayar Tipleri . . . 8

3.1.1 Paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistemler . . . 8

3.1.2 Mesaj gec¸is¸li c¸oklu bilgisayar . . . 10

3.1.3 Flynn sınıflandırması . . . 11

3.2 Mesaj Gec¸is¸li C¸ oklu Bilgisayarların Mimari ¨Ozellikleri . . . 12

3.2.1 Statik a ˘g mesaj gec¸is¸li c¸oklu bilgisayarları . . . 12

3.2.2 Haberles¸me y ¨ontemleri . . . 14

3.2.3 Girdi/C¸ ıktı . . . 16

4 MESAJ GEC¸ ˙IS¸ L˙I PROGRAMLAMA . . . 17

4.1 Mesaj Gec¸is¸li Programlamanın Temelleri . . . 17

4.1.1 S ¨urec¸ yaratılması . . . 17

4.1.2 Mesaj gec¸me fonksiyonları . . . 18

4.1.3 Engellenmeyen ve engelleyici mesaj gec¸is¸i . . . 20

4.1.4 Mesaj sec¸me . . . 21

4.1.5 Yayma (broadcast), da ˘gıtma (scatter), toplama (gather), indirgeme (reduce) 21 4.2 MPI ile Paralel Programlama . . . 23

4.2.1 OpenMPI ve pyMPI paketlerinin kurulumu . . . 24

4.2.2 Merhaba d ¨unya uygulaması . . . 24

4.2.3 Mesaj g ¨onderme ve alma . . . 26

5 GEN˙IS¸ KARINCA KOLON˙ILER˙INDE DO ˘GAL YAS¸ AM . . . 28

6 KARINCA KOLON˙IS˙I ˙ILE Y ¨ONLEND˙IRME . . . 29

6.1 Es¸les¸tirme . . . 30

6.2 Y ¨onlendirme Algoritması ANCOR . . . 31

6.2.1 ˙Ilklendirme safhası . . . 33

6.2.2 G ¨uc¸lendirme safhası . . . 33

(5)

7 PARALEL ALGOR˙ITMA: PANCOR . . . 36

7.1 Paralel Uygulama Detayları . . . 37

7.1.1 Merkezde c¸alıs¸an kısım . . . 37

7.1.2 K ¨olelerde c¸alıs¸an kısım . . . 40

8 SONUC¸ LAR VE ¨ONER˙ILER . . . 45

KAYNAKLAR . . . 48

EKLER . . . 50

¨ OZGEC¸ M˙IS¸ . . . 58

(6)

S¸ EK˙ILLER D˙IZ˙IN˙I

S¸ ekil 4.1 send() recv()’den ¨once . . . 20

S¸ ekil 4.2 recv() send()’den ¨once . . . 20

S¸ ekil 4.3 Mesajlas¸mada tampon b ¨olge kullanımı . . . 21

S¸ ekil 4.4 Yayma is¸lemi . . . 22

S¸ ekil 4.5 Da ˘gıtma is¸lemi. . . 22

S¸ ekil 4.6 Toplama is¸lemi. . . 23

S¸ ekil 4.7 ˙Indirgeme is¸lemi . . . 23

S¸ ekil 6.1 Feromon - Zaman grafi ˘gi. . . 31

S¸ ekil 6.2 Feromon - Uzaklık grafi ˘gi . . . 32

S¸ ekil 7.1 16896 mesaj sonrasında feromon yo ˘gunluk haritası . . . 40

S¸ ekil 7.2 43392 mesaj sonrasında feromon yo ˘gunluk haritası . . . 41

S¸ ekil 7.3 88704 mesaj sonrasında feromon yo ˘gunluk haritası . . . 41

S¸ ekil 7.4 99072 mesaj sonrasında feromon yo ˘gunluk haritası . . . 42

S¸ ekil 7.5 115968 mesaj sonrasında feromon yo ˘gunluk haritası . . . 42

S¸ ekil 7.6 Karınca hareketi akıs¸ s¸eması . . . 43

S¸ ekil 8.1 Karıncaların hedefi bulma adım ortalamaları. . . 47

(7)

S˙IMGELER

Kısaltma Ac¸ıklaması

ANCOR : Ant Colony Routing

ccNuma : Cache Coherent Non-Uniform Memory Access

CSMA/CA : Carrier Sense Multiple Access with Collision Avoidance GPS : Global Positioning System

MIMD : Multiple Instruction Multiple Data MISD : Multiple Instruction Single Data MPI : Message Passing Interface NUMA : Non-Uniform Memory Access

OPDM : Optimal Pheromone Distribution Model PANCOR : Parallel ANCOR

PDA : Personal Digital Assistant PVM : Parallel Virtual Machines RF : Radio Frequency

SIMD : Single Instruction Multiple Data SISD : Single Instruction Single Data SoC : System on Chip

SPMD : Single Instruction Multiple Data TLB : Translation Lookaside Buffer

(8)

ALGILAYICI A ˘GLARI ˙IC¸ ˙IN Y ¨ONLEND˙IRME ALGOR˙ITMASININ PARALEL ANCOR ˙ILE GERC¸EKLENMES˙I

˙Ilker MUSTAFA MANAP

Anahtar Kelimeler: Paralel Hesaplama Sistemleri, Algılayıcı A ˘glar, Y ¨onlendirme Sim ¨ulasyonu

¨

Ozet:Bu c¸alıs¸mada, algılayıcı a ˘glarında y ¨onlendirme algoritmalarından ANCOR[2, 3] ic¸in paralel bir model ¨onermekteyiz. Algılayıcı a ˘gları[1], genelde c¸ok sayıda d ¨u ˘g ¨ume sahip a ˘glardır. Algoritmanın seri uygulaması[2, 3], algılayıcı a ˘glarının gerektirdi ˘gi sim ¨ulasyon boyutlarına c¸ıkamamaktadır. Onerdi ˘gimiz modelle, d ¨u ˘g ¨um¨ sayısı bir s ¨urecin kapsayabilece ˘gi kadar bir hafıza alanı ile, karınca sayısı ise sim ¨ulasyona eklenebilecek sistem sayısı ile kısıtlanmaktadır. Algoritmanın daha b ¨uy ¨uk parametrelerle sim ¨ulasyona sokulabilmesi, karınca kolonisi kullanılarak gerc¸ekles¸tirilen seri modelin do ˘gal hayata daha uygun bir yapıda modellenebilmesini sa ˘glamıs¸tır.

(9)

PARALLEL IMPLEMENTATION OF SENSOR NETWORK ROUTING ALGORITHM ANCOR

˙Ilker MUSTAFA MANAP

Keywords: Parallel Computing Systems, Sensor Networks, Routing Simulation Abstract: We are proposing a parallel model for the sensor network routing algorithm ANCOR[2, 3]. Sensor networks[1] generally have large number of nodes. The serial implementation[2, 3] of the algorithm cannot be applied to the simulations where large number of nodes and data packets. Our model limits the number of nodes with the memory available to the master process and limits the number of data packets with the number of slave computers. Running the simulation with larger parameters helps to better simulate the natural behavior of ants movements, resulting in more efficient routing of data packets.

(10)

1 G˙IR˙IS¸

Karınca kolonisi optimizasyonu[4], gerc¸ek karıncaların davranıs¸larından esinlenen bir optimizasyon y ¨ontemidir. Bir karınca kolonisinde y ¨onetici merkez kavramı bulunmadı ˘gından, kararlar pozitif geri beslemelerle ve yerel de ˘gis¸ikliklerin toplam etkisi ile alınmaktadır. Karınca kolonisi ile optimizasyon yaklas¸ık 20 yıldır aras¸tırma konusudur. ¨Ozellik sec¸me[5], veri madencili ˘gi[6] gibi c¸es¸itli uygulamalarının yanında, karınca kolonileri ile algılayıcı a ˘gları ¨uzerinde y ¨onlendirme[2, 3, 5, 7] ¨uzerine az sayıda c¸alıs¸ma bulunmaktadır. Yeni yayınlanmıs¸ olan ANCOR[2, 3] gibi c¸alıs¸malarda ortaya konulan seri algoritmalar, seri algoritmaların sınırlarından dolayı, do ˘gal yas¸amın tam olarak modellenmesinde yetersiz kalmaktadırlar. Bu c¸alıs¸ma ile, karınca kolonileri kullanılarak algılayıcı a ˘glarında y ¨onlendirme algoritmalarından olan ANCOR[2, 3]’un paralel modellemesi gerc¸eklenmis¸tir.

(11)

2 ALGILAYICI A ˘GLARI

Tas¸ınabilir elektronik cihazlar son yıllarda oldukc¸a pop ¨uler olmus¸ ve insan hayatına diz ¨ust ¨u bilgisayar, PDA, GPS cihazları, cep telefonları, m ¨uzik c¸alarlar s¸eklinde girmis¸lerdir. G ¨un ¨um ¨uzde, ticari malzemeler kullanılarak, bir c ¨uzdan boyutunda elektronik cihazların yapılması m ¨umk ¨un olmaktadır. Bu k ¨uc¸ ¨uk cihazlarda, Microsoft Windows ya da Linux is¸letim sistemlerinin ¨ozel s ¨ur ¨umleri c¸alıs¸abilmektedir. Kablosuz ba ˘glantı ¨ozellikleri bulunan bu cihazlara, bulundu ˘gu ortamı algılayabilecek ısı, nem gibi algılayıcılar eklenebilmektedir. B ¨oylece, genis¸ alana yayılmıs¸ pek c¸ok algılayıcı, birbirlerine kablosuz olarak eris¸ebilmekte ve kablosuz algılayıcı a ˘glarının[1, 8] ilk

¨ornekleri de ortaya konmus¸ olmaktadır.

Bir algılayıcı d ¨u ˘g ¨um ¨u; algılayıcı, hesaplayıcı, iletis¸im, tetikleyici ve enerji kayna ˘gından olus¸ur. Bu parc¸alar, genellikle bir ya da birkac¸ elektronik kart ¨uzerine yerles¸tirilmis¸ olup, en fazla birkac¸ santimetrek ¨upl ¨uk bir hacim ic¸ine sı ˘gabilirler. D ¨us¸ ¨uk g ¨uc¸ t ¨uketimine sahip elektronik devreler ve a ˘g teknolojileri ile olus¸turulan bir algılayıcı d ¨u ˘g ¨um ¨u, 2 AA boyutunda pil kullanılarak %1 d ¨us¸ ¨uk c¸alıs¸ma oranı ile yaklas¸ık ¨uc¸ sene c¸alıs¸abilmektedir.

Bir kablosuz algılayıcı a ˘gı, birbirleri ile kablosuz kanallardan haberles¸erek bilgi paylas¸an ve beraber c¸alıs¸an c¸ok sayıda d ¨u ˘g ¨umden olus¸ur. Kablosuz algılayıcı a ˘glar, do ˘gal hayatı izleme, askeri g ¨ozetleme, arama kurtarma, yapı sa ˘glı ˘gı g ¨ozetlemesi, akıllı evler ve hatta hasta g ¨ozetlemesinde kullanılmaktadır.

Belirli bir amac¸ ic¸in olus¸turulan kablosuz algılayıcı a ˘gın ilk kurulumundan sonra, d ¨u ˘g ¨umler uygun a ˘g yapısını kendi kendilerine olus¸tururlar. Daha sonra, d ¨u ˘g ¨umlerde bulunan algılayıcılar, akustik, sismik, manyetik ortam bilgilerini toplamaya bas¸larlar. Bilgi toplama is¸lemi, ya belirli zaman aralıklarında, ya da belirli bir eylemin gerc¸ekles¸mesi durumunda tetiklenebilir. D ¨u ˘g ¨umlerin konumları, k ¨uresel konumlama sistemi kullanılarak elde edilebilece ˘gi gibi, yerel konum hesaplama algoritmaları da

(12)

kullanılabilir. A ˘gdan elde edilecek bilgilerle, izlenen nesne ya da ortama ait genel g ¨or ¨un ¨um olus¸turulur. Kablosuz algılayıcı a ˘gların temel felsefesi, kısıtlı yeteneklere sahip d ¨u ˘g ¨umlerin birlikte c¸alıs¸arak karmas¸ık g ¨orevleri gerc¸ekles¸tirebilecek olmasıdır.

Bir kablosuz a ˘g kullanım senaryosunda, kullanıcılar, kablosuz a ˘ga sorgularını, baz istasyonlarından g ¨onderebilirler. Baz istasyonları, kullanıcı ve kablosuz algılayıcı a ˘g arasında aray ¨uz sa ˘glar. Bu haliyle kablosuz algılayıcı a ˘g, da ˘gıtık bir veritabanı gibi c¸alıs¸ır.

2.1 Algılayıcı A ˘gların Yapıtas¸ları

2.1.1 Donanım

D ¨u ˘g ¨umleri olus¸turan donanımın temel parc¸aları, farklı teknolojilerdeki ilerlemelerle s ¨urekli gelis¸mekte ve de ˘gis¸mektedir.

¨

Oncelikle, Entegre ¨Uzerinde Sistem (System-on-Chip) teknolojisi ile, bir bilgisayar sistemi tamamen bir entegre ¨uzerinde gerc¸eklenmis¸tir. Atmel, Intel ve Texas Instruments gibi s¸irketlerin sa ˘gladı ˘gı SoC tipi g ¨om ¨ul ¨u is¸lemciler, UC Berkeley’deki motes, UCLA’daki Medusa ve WINS d ¨u ˘g ¨umlerinde kullanılmaktadır.

˙Ikinci olarak, ticari radyo frekans devreleri kısa mesafe kablosuz haberles¸meyi c¸ok d ¨us¸ ¨uk enerji harcaması ile sa ˘glayabilmektedir. RF Monolithics, Chipcon, Conexant Systems ve National Semiconductor firmalarının ¨ur ¨unleri motes, Medusa ve WINS d ¨u ˘g ¨umlerinde kullanılmaktadır. Y ¨uzlerce kilobit hızlara c¸ıkabilen bu ticari radyo

¨ur ¨unleri, paket aktarımı ve alımı is¸lemleri ic¸in 20 mW’tan az enerji harcamaktadırlar.

¨

Uc¸ ¨unc ¨u olarak, mikro-elektro-mekanik sistemler teknolojisi ile, aynı CMOS entegresi ic¸ine c¸ok sayıda algılayıcının yerles¸tirilebilmesi sa ˘glanmıs¸tır. Termal, akustik, sismik, manyetik, elektromanyetik algılayıcılar, optik, kimyasal ve biyolojik alıcılar, hız ¨olc¸ ¨um cihazları, g ¨unes¸ radyasyonu algılayıcıları, basınc¸ ¨olc¸erler gibi algılayıcılar ticari olarak alınabilmektedir. Yukarıdaki algılayıcılar kullanılarak akustik mesafe ¨olc¸me, hareket takibi, titres¸im algılama ve do ˘gal hayatı izleme gibi c¸ok farklı alanlarda uygulamalar gelis¸tirilmesi m ¨umk ¨und ¨ur.

(13)

Yukarıdaki teknolojiler gelis¸mis¸ paketleme y ¨ontemleri kullanılarak k ¨uc¸ ¨uk bir algılayıcı d ¨u ˘g ¨um ic¸ine algılama, hesaplama, haberles¸me ve enerji birimlerinin yerles¸tirilmesini sa ˘glamıs¸tır.

2.1.2 Kablosuz haberles¸me

Kablosuz algılayıcı a ˘gları, donanım teknolojilerinin yanında kablosuz iletis¸im teknolojilerindeki gelis¸melerden de etkilenmektedir. Kablosuz yerel alan a ˘gları ic¸in ilk standart, 802.11 protokol ¨u 1997 yılında yayınlanmıs¸tır. Bu standart daha sonra daha y ¨uksek veri hızı ve CSMA/CA mekanizması ic¸in ortam eris¸im kontrol ¨u eklenerek 802.11b olarak y ¨ukseltilmis¸tir. Diz ¨ust ¨u bilgisayarlar ve PDA’lar ic¸in tasarlanmıs¸ olsa da, 802.11 protokol ¨u ilk kablosuz algılayıcı a ˘g denemelerinde kullanılmıs¸tır. 802.11 protokol ¨un ¨un y ¨uksek enerji gereksinimi ve c¸ok y ¨uksek veri aktarım hızları, kablosuz algılayıcı a ˘gları ic¸in uygun de ˘gildir. Bu nedenle, enerji t ¨uketimi ve veri hızı ac¸ısından kablosuz algılayıcı a ˘glarına daha uygun bir ortam eris¸im kontrol ¨u protokol ¨u gelis¸tirilmesi ic¸in c¸es¸itli aras¸tırma grupları c¸alıs¸malar yapmıs¸lardır. 802.15.4 protokol ¨u ile kablosuz algılayıcı a ˘gların ihtiyac¸larına uygun d ¨us¸ ¨uk g ¨uc¸ t ¨uketimi, d ¨us¸ ¨uk veri hızına sahip bir kablosuz kis¸isel alan a ˘gı standardı yayınlanmıs¸tır.

Kablosuz a ˘glarda y ¨onlendirme teknikleri, kablosuz algılayıcı a ˘glarda ¨onemli bir aras¸tırma konusu olmus¸tur. ˙Ilk kablosuz algılayıcı a ˘glarda genellikle kablosuz hareketli a ˘glar ic¸in kullanılan y ¨onlendirme protokolleri kullanılmıs¸tır. Bu protokoller, y ¨uksek g ¨uc¸ gereksinimleri nedeniyle kablosuz algılayıcı a ˘glar ic¸in uygun de ˘gildir. Bu protokollerin de ˘gis¸tirilerek kablosuz algılayıcı a ˘glara uygun hale getirilmesi ve yeni y ¨onlendirme teknikleri yo ˘gun olarak aras¸tırılan konulardır.

2.1.3 Ortak is¸aret is¸leme

D ¨u ˘g ¨um tarafından alınan ham ortam verisi is¸lendikten sonra ortaya kullanılabilir veri c¸ıkmaktadır. Ham verinin d ¨u ˘g ¨um ¨uzerinde is¸lenmesi ve sadece is¸lenmis¸ verinin kullanıcıya aktarılması gerekmektedir. Hesaplama ic¸in gereken enerji, kablosuz haberles¸me ic¸in gereken enerjiden daha azdır. Bu nedenle, c¸ok miktarda veriyi merkeze tas¸ıyıp is¸lemek yerine, d ¨u ˘g ¨umlerin veriyi is¸leyip, sadece sonucu merkeze g ¨ondermesi c¸ok daha az enerji harcanmasını sa ˘glayacaktır.

(14)

Bilgi birles¸tirme, ortak is¸aret is¸leme ic¸in ¨onemli konulardan birisidir. G ¨ozetlenen ortamın etkileri nedeniyle, d ¨u ˘g ¨umlerden okunan verilerde hatalar olabilir. Bilgi birles¸tirme y ¨ontemleri ile, birden fazla d ¨u ˘g ¨umden alınan bilgiler kullanılarak ortam g ¨ur ¨ult ¨us ¨un ¨un veriden ayrıs¸tırılması sa ˘glanmaktadır.

2.2 Kablosuz Algılayıcı A ˘gları Uygulamaları

Kablosuz algılayıcı a ˘gları uygulamaları veri toplama uygulamaları ve hesap a ˘gırlıklı uygulamalar olarak iki temel grupta toplanabilir.

2.2.1 Veri toplama uygulamaları

Do ˘gal Ortam C¸ alıs¸maları : Do ˘gal ortam c¸alıs¸maları, kablosuz algılayıcı a ˘glarının en yaygın kullanım buldu ˘gu alanlardan birisidir. Uygulamalarda, g ¨ozlenen varlıkların genellikle biyofiziksel ve biyokimyasal ¨ozellikleri algılanır. C¸ o ˘gu senaryoda, minimum, maksimum ve ortalama bulma gibi veri birles¸tirme is¸lemlerinin ye aldı ˘gı basit is¸aret is¸leme yeterli olmaktadır.

C¸ evre G ¨ozetleme : Bu uygulamalarda, c¸ok genis¸ alanlara yerles¸tirilen c¸ok sayıda d ¨us¸ ¨uk maliyetli algılayıcılar kullanılır. Orman yangını alamı, sel baskını alarmı, toprak nem miktarı izleme, g ¨unes¸ radyasyonu haritalama gibi is¸lerde kullanılmıs¸tır.

2.2.2 Hesap a ˘gırlıklı uygulamalar

Binalarda Yapısal B ¨ut ¨unl ¨uk ˙Izleme : Kamu yapılarının yapısal b ¨ut ¨unl ¨u ˘g ¨un ¨u izlemek uzun zamandır hem end ¨ustride hem de akademik alanda aras¸tırma konusu olmus¸tur. Yapıların b ¨ut ¨unl ¨uk kontrol ¨u g ¨orsel inceleme, akustik yayım, ultrasonik testler ve radar tomografi gibi geleneksel y ¨ontemlerle yapılmaktadır. Kablosuz algılayıcı a ˘gların ortaya c¸ıkmasıyla, binalarda yapısal b ¨ut ¨unl ¨uk izleme ic¸in daha yeni, binalara zarar vermeyen ve ucuz y ¨ontemler kullanmak m ¨umk ¨un olmus¸tur. Yapısal b ¨ut ¨unl ¨uk izleme uygulamalarında, algılayıcıların topladı ˘gı ham veri miktarı c¸ok fazladır. Bu nedenle, algılayıcıların sadece gerekli olan bilgileri aktarması, sistemin c¸alıs¸ma s ¨uresinin uzatılması ac¸ısından ¨onemlidir.

(15)

A ˘gır Sanayi Uygulamaları : Montaj hatları gibi end ¨ustriyel uygulamalarda algılayıcılar fazlasıyla kullanılmaktadırlar. Kablosuz algılayıcıların kullanılmasıyla sorun c¸ıktı ˘gında bakım yapılması m ¨umk ¨un olmaktadır. End ¨ustriyel uygulamalarda, zorlu s¸artlarda bile g ¨uvenilir c¸alıs¸ma ¨onemlidir. Makinalardan kaynaklanacak olan radyasyon, mikrois¸lemci arızalarına ya da kablosuz iletis¸imde problemlere yol ac¸abilir. Ayrıca ortam ısı ve nem de ˘gerlerinin c¸ok de ˘gis¸ken olması, g ¨uvenilir donanımların kullanılmasını gerektirir. End ¨ustriyel uygulamalar genellikle y ¨uksek hesaplama g ¨uc ¨u gerektiren karmas¸ık is¸aret is¸leme y ¨ontemleri kullanılır.

(16)

3 PARALEL S˙ISTEMLER

Bilgisayar bilimlerinde s ¨urekli olarak elde bulunandan daha fazla hesaplama g ¨uc ¨une ihtiyac¸ duyulmaktadır. Bu hesaplama g ¨uc ¨u, sayısal modelleme ve m ¨uhendislik problemlerinin sim ¨ulasyonunda yo ˘gun olarak kullanılmaktadır. Bu hesaplama ve sim ¨ulasyonlar, c¸ok b ¨uy ¨uk veri k ¨umeleri ¨uzerinde tekrarlı is¸lemlerin gerc¸ekles¸tirilerek sonuc¸lar ¨uretmesini gerektirirler. Hesaplamaların uygun bir zaman aralı ˘gında tamamlanması beklenir. Uretim yapılan bir sistem d ¨us¸ ¨un ¨uld ¨u ˘g ¨unde, uygun s ¨ure¨ saniyeler, en fazla dakikalar olabilir. Hesaplaması 2 hafta s ¨uren bir sim ¨ulasyon, tasarımcının zamanını fazlasıyla harcayabilir. Makul zamanda biten sim ¨ulasyonlar, tasarımcılara hata yaptıklarında telafi etme ya da modeli en iyiles¸tirme ac¸ısından fayda sa ˘glarlar. Sistemler karmas¸ıklas¸tıkc¸a, sim ¨ulasyonları da daha uzun zaman alacaktır. Bazı problemler belirli bir zaman diliminde c¸ ¨oz ¨ulmek zorundadır. Ertesi g ¨un ic¸in yapılacak hava tahmininin hesaplaması 2 g ¨un s ¨urd ¨u ˘g ¨unde, sonuc¸ anlamsız olacaktır.

Bilgisayarla hava tahmini[9], g ¨uc¸l ¨u bilgisayarların yaptı ˘gı is¸e verilen ¨orneklerden biridir. Atmosfer, ¨uc¸ boyutlu h ¨ucreler s¸eklinde modellenir. Her bir h ¨ucre ic¸in ısı, basınc¸, nem, r ¨uzgar hızı, r ¨uzgar y ¨on ¨u belirli zaman aralıkları ic¸in, bir ¨onceki zaman dilimindeki de ˘gerler kullanılarak hesaplanır. Her bir h ¨ucre ic¸in, zamanda ileri do ˘gru bu hesaplar tekrar tekrar yapılır. Burada sim ¨ulasyonu anlamlı kılan ¨ozellik, h ¨ucre sayısıdır. ¨Orne ˘gin t ¨um atmosferi kapsayan, h ¨ucre boyu1mil × 1mil × 1mil olan ve 10 mil y ¨uksekli ˘ge kadar alanı ic¸eren bir sim ¨ulasyonu d ¨us¸ ¨unelim. Verilen b ¨uy ¨ukl ¨uklerle, yaklas¸ık5 × 108h ¨ucre bulundu ˘gu g ¨or ¨ul ¨ur. her bir hesaplamanın 200 kayar nokta is¸lemi

gerektirdi ˘gini varsayalım. Bir zaman diliminde 1011 kayar nokta is¸lemi gerekecektir. Hava tahminini 10 g ¨un ic¸in 10’ar dakikalık dilimlerle yapmaya kalktı ˘gımızda, 104

zaman dilimi ve toplamda1015kayar nokta is¸lemi gerekecektir. 1 Gflop’luk (109 kayar nokta is¸lemi / saniye) bir bilgisayar ile sim ¨ulasyon 106 saniye, yaklas¸ık 11 g ¨unde

tamamlanabilecektir. Sim ¨ulasyonun 10 dakika ic¸inde tamamlanmasını istersek, 1.7 Tflop (1 Tflop,1012kayar nokta is¸lemi / saniye) g ¨uc ¨unde bir sisteme ihtiyac¸ vardır.

(17)

Hesaplama hızını artırmanın bir yolu, bir problem ¨uzerinde birden fazla is¸lemci kullanılmasıdır. B ¨uy ¨uk problem parc¸alara b ¨ol ¨un ¨ur ve her bir parc¸a farklı bir is¸lemciye verilir. Bu tarz uygulamalar gelis¸tirmeye paralel programlama adı verilir. Hesaplama platformu (paralel bilgisayar), ¨ozel tasarlanmıs¸ c¸ok is¸lemcili bir bilgisayar olabilece ˘gi gibi, ba ˘gımsız bilgisayarların biraraya getirilmesiyle de olus¸turulabilir. Bu yaklas¸ım, performansta b ¨uy ¨uk artıs¸ sa ˘glar. Buradaki temel fikir, n tane bilgisayarın, bir bilgisayarın n katı kadar hesaplama g ¨uc ¨u sa ˘glayabilece ˘gidir. B ¨oylece problem teorik olarak 1n zamanda c¸ ¨oz ¨ume kavus¸turulabilir. Problemler genellikle k ¨uc¸ ¨uk parc¸alara kolaylıkla b ¨ol ¨unemezler. Veri transferi ve hesaplamaların senkronizasyonu gibi is¸lemler nedeniyle, hesaplamanın yapılamadı ˘gı zaman dilimleri bulunmaktadır. Bu zaman dilimlerinin varlı ˘gı, bir problemin n bilgisayarda 1n zamanda bitirilememesine neden olur. Buna ra ˘gmen problemin yapısına ve paralelles¸tirilebilmesine g ¨ore problemin c¸ ¨oz ¨um s ¨uresi ¨onemli ¨olc¸ ¨ude kısalacaktır.

3.1 Paralel Bilgisayar Tipleri

Paralel programlama, ¨uzerinde c¸alıs¸aca ˘gı uygun bir platforma ihtiyac¸ duyar. Bu platform, c¸ok sayıda is¸lemciye sahip bir bilgisayar ya da c¸ok sayıda birbirine ba ˘glı bilgisayardan olus¸abilir.

3.1.1 Paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistemler

Geleneksel bir bilgisayar, hafızadaki bir programı c¸alıs¸tıran bir is¸lemciden olus¸ur. Her bir hafıza g ¨oz ¨une, adres adı verilen sayısal de ˘ger ile konumlanılır.

Tek is¸lemcili modeli genis¸letmenin do ˘gal yollarından biri, c¸ok sayıda is¸lemcinin c¸ok sayıda hafıza mod ¨ullerine ba ˘glı oldu ˘gu modeldir. Bu modelde her bir is¸lemci, herhangi bi hafıza b ¨olgesine eris¸ebilir. ˙Is¸lemcilerle hafıza mod ¨ulleri arasındaki ba ˘glantı bir a ˘g (interconnection network) ile sa ˘glanır. Paylas¸ımlı hafızalı c¸ok is¸lemcili sistem bir tek adres uzayı kullanır. B ¨ut ¨un hafıza ic¸inde her bir alanın ayrı bir adresi vardır ve bu adrese sistemdeki her bir is¸lemci tarafından eris¸ilebilir.

C¸ o ˘gu tek is¸lemcili sistem, sanal hafıza y ¨ontemini kullanır. Sanal hafıza, gerc¸ek sistemde bulunan hiyerars¸ik ve farklı hızlara sahip hafızaların y ¨uksek hızlı ana hafıza gibi g ¨or ¨unmesini sa ˘glayan y ¨ontemdir. Hafıza b ¨olgelerini otomatik olarak daha yavas¸

(18)

hafıza olan diske aktarıp, gerekti ˘ginde diskten ana hafızaya y ¨ukleyebilirler. Burada her bit hafıza alanı ic¸in iki adres bulunur: ˙Is¸lemci tarafından ¨uretilen sanal adres, gerc¸ek adres alanına ulas¸mak ic¸in kullanılan gerc¸ek adres. Sanal adres ile gerc¸ek adres arasında d ¨on ¨us¸ ¨um yapabilmek ic¸in donanımsal bir tablo (Translation Look-aside Buffer, TLB) kullanılır. Sanal hafıza modeli, paylas¸ımlı hafızaya sahip c¸ok is¸lemcili bilgisayarlara uygulanabilir. B ¨oylece, her hafıza alanının gerc¸ek bir adresi varken, her bir is¸lemci farklı sanal adreslerle bu hafıza b ¨olgelerine eris¸ebilir.

Paylas¸ımlı hafızaya sahip c¸okis¸lemcili bilgisayarlar programlar c¸alıs¸tırılırken, her bir is¸lemcinin c¸alıs¸tıraca ˘gı uygulama hafızada saklanır. Her uygulamanın eris¸ece ˘gi veri de hafızada saklanır. Programcının c¸alıs¸an uygulamayı ve uygulamanın kullanaca ˘gı veriye eris¸im s¸eklini tanımlaması birkac¸ farklı s¸ekilde olabilir. Ozel¨ paralel programlama yapıları ve paylas¸ımlı de ˘gis¸kenlere ve paralel kod bloklarının tanımlanabilmesine olanak sa ˘glayan yeni bir paralel progamlama dili gelis¸tirilebilir. Derleyici, programcının tanımlamasından, c¸alıs¸abilir uygulamayı olus¸turacaktır. Bir di ˘ger y ¨ontem ise, is¸ parc¸acıkları (thread) kullanarak y ¨uksek seviyeli dillerle tanımlanan uygulama bloklarının her bir is¸lemci tarafından c¸alıs¸tırılabilmesini sa ˘glamaktır. Bu uygulama blokları, paylas¸ımlı ortak hafızaya eris¸im yetene ˘gine sahiptir.

Programcı ac¸ısından, paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistemler, paylas¸ımlı hafızaya eris¸imde sa ˘gladıkları kolaylıklar nedeniyle daha kolay programlanabilen sistemlerdir. Fakat b ¨oyle bir sistemde b ¨ut ¨un is¸lemcilerin paylas¸ımlı hafızaya hızlı eris¸imini sa ˘glamak, donanımsal olarak sa ˘glanması zor bir ¨ozelliktir. Bu tarz b ¨uy ¨uk sistemlerde, is¸lemcilerin kendilerine fiziksel olarak yakın hafıza b ¨olgelerine daha hızlı eris¸imi sa ˘glayan hiyerars¸ik ya da da ˘gıtık hafıza yapıları bulunur. Bu tarz hafıza eris¸im yapısına sahip sistemlere de ˘gis¸ken hızlı hafıza eris¸imli sistemler (non-uniform memory access systems, NUMA) adı verilir.

Geleneksel tek is¸lemcili sistemlerde hızlı ¨onbellek, yakın zamanda eris¸ilen hafıza b ¨olgelerinin kopyalarını tutar. Bu durum, c¸ok is¸lemcili sistemlerde hafıza b ¨olgelerine eris¸imde farklı hızların otaya c¸ıkmasına neden olur. Ayrıca, farklı ¨onbelleklerde bulunan aynı veri b ¨olgesi ic¸eri ˘ginin birbirinin aynı olmasının sa ˘glanması da ciddi bir

(19)

problemdir. Bir is¸lemcinin ¨onbelle ˘ginde de ˘gis¸tirilen veri b ¨olgesinin, di ˘ger is¸lemcilerin ¨onbelleklerinde yer alıyorlarsa de ˘gis¸tirilmesi gerekir. Bu durumu donanımsal olarak c¸ ¨ozen sistemler (SGI-Altix) bulunmaktadır. Bu sistemlere ¨onbellek tutarlı de ˘gis¸ken hızlı hafıza eris¸imli sistemler (cache coherent NUMA) denir.

3.1.2 Mesaj gec¸is¸li c¸oklu bilgisayar

Paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistemler, ¨ozel olarak tasarlanmıs¸ bilgisayar sistemleridir. C¸ ok is¸lemcili sistemler ic¸in bir alternatif ise, birbirinden farklı bilgisayar sistemlerinin bir a ˘g ba ˘glantısı ile olus¸turdukları sistemdir. Sistemi olus¸turan her bir bilgisayar, bir is¸lemci ve di ˘ger sistemler tarafından eris¸ilemeyen yerel hafızaya sahiptir. Bir mesaj gec¸is¸li c¸oklu bilgisayar sisteminde hafıza, sistemi olus¸turan bilgisayalara da ˘gıtılmıs¸tı ve her bir bilgisayar kendi hafıza adres alanına sahiptir. Her bir is¸lemci sadece kendi yerel hafıza alanına eris¸ebilir. Bilgisayarlar arasındaki a ˘g ba ˘glantısı, is¸lemcilerin birbirlerine mesaj g ¨onderebilmelerini sa ˘glar. Mesajların ic¸inde, di ˘ger is¸lemcilerin hesaplamalarını yapabilmesi ic¸in gereken veriler bulunur. Bu s¸ekilde c¸alıs¸an sistemlere mesaj gec¸is¸li c¸oklu bilgisayar (message passing multicomputer) adı verilir.

Mesaj gec¸is¸li c¸oklu bilgisayar sistemlerini programlarken, problemin aynı anda c¸alıs¸abilecek parc¸alara b ¨ol ¨unmesi gerekmektedir. Programlama yapılırken, ¨ozel paralel programlama dilleri ya da genis¸letilmis¸ seri programlama dilleri kullanılır. Genellikle kullanılan y ¨ontem ise, geleneksel programlama dillerini bir mesaj gec¸is¸ k ¨ut ¨uphanesi ile birlikte kullanarak uygulama gelis¸tirmektir. Problem, birbirinden ba ˘gımız c¸alıs¸tırılabilecek alt parc¸alara b ¨ol ¨un ¨ur. Bu alt parc¸alara s ¨urec¸ adı verilir. S ¨urec¸ler, ba ˘gımsız bilgisayarlarda c¸alıs¸tırılabilirler. ¨Orne ˘gin 10 s ¨urec¸ ve 10 bilgisayar var ise, her bir bilgisayar bir s ¨urec¸ c¸alıs¸tırır. Sistemi olus¸turan bilgisayarlardan daha fazla s ¨urec¸ var ise, her bir bilgisayar birden fazla s ¨ureci zaman paylas¸ımlı olarak c¸alıs¸tırabilir. S ¨urec¸ler birbirlerine mesaj g ¨ondererek haberles¸irler. Mesaj g ¨onderme, verinin ve sonuc¸ların s ¨urec¸ler arasında paylas¸ılmasının tek yoludur.

Mesaj gec¸is¸li c¸oklu bilgisayar sistemleri, paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistemlere g ¨ore daha kolay ¨olc¸eklenirler. A ˘ga eklenecek yeni sistemler, mesaj gec¸is¸li c¸oklu bilgisayar sistemini kolaylıkla daha y ¨uksek performans seviyelerine tas¸ır.

(20)

Mesaj gec¸is¸li c¸oklu bilgisayar sisteminin programlanması, paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistemlerin programlanmasına g ¨ore daha karmas¸ıktır. Mesaj gec¸is¸ini sa ˘glayan kod parc¸alarının programcı tarafından ¨ozellikle yazılması gerekmektedir. S ¨urec¸ler veriyi paylas¸amazlar. Bu nedenle verinin s ¨urec¸ten s ¨urece kopyalanması gerekmektedir. Verinin kopyalanmak zorunda olması, c¸ok b ¨uy ¨uk veri setlerinde c¸alıs¸mak zorunda olan problemlerde ciddi performans sorunlarına yolac¸maktadır.

Mesaj gec¸is¸li c¸oklu bilgisayarlarda, veriye aynı anda eris¸im sırasında kontrol gerektirmeyen ¨ozel mekanizmalar vardır. Bu mekanizmalar, paralel uygulamanın c¸alıs¸ma s ¨uresini ciddi oranlarda kısaltır. Mesaj gec¸is¸li yapının kullanılmasındaki en c¸arpıcı sebep, bu yapının bir a ˘ga ba ˘glı bilgisayar grubuna direkt olarak uygulanabilmesidir. Pek c¸ok ¨ozel tasarlanmıs¸ paylas¸ımlı hafızaya sahip c¸okis¸lemcili sistem, s ¨urekli artan is¸lemci hızı ve is¸lemci mimarisi nedeniyle oldukc¸a kısa ¨om ¨url ¨u olmaktadır. Genellikle hızlı ve yeni bir is¸lemci kullanmak, is¸lem hızı ve enerji t ¨uketimleri ac¸ısından c¸ok sayıda eski is¸lemci kullanmaktan daha efektif olacaktır. Yeni is¸lemciler eski is¸lemcilerden daha fazla performansı, eski is¸lemcilere g ¨ore daha d ¨us¸ ¨uk maliyetlerle sa ˘glayacaktır.

3.1.3 Flynn sınıflandırması

Tek is¸lemcili bir bilgisayar sisteminde, c¸alıs¸tırılacak olan komut dizileri bir programdan olus¸turulur. Flynn[10], bilgisayarlar ic¸in bir sınıflandırma yapmıs¸ ve tek is¸lemcili bilgisayarları tek komut dizisi-tek veri dizisi (single instruction single data, SISD) olarak adlandırmıs¸tır.

Genel amac¸lı c¸okis¸lemcili bir sistemde, her bir is¸lemci farklı bir uygulamayı c¸alıs¸tırabilir. Her bir is¸lemci, ayrı bir programdan kaynaklanan komut dizilerini c¸alıs¸tırabilir. Bu tip bilgisayarlar, c¸oklu komut dizisi-c¸oklu veri dizisi (multiple instruction multiple data MIMD) olarak adlandırılır.

Aynı komut dizisinin birden fazla is¸lemci ¨uzerinde birbirinden farklı veri setlerine uygulanabildi ˘gi sistemlere tek komut dizisi-c¸oklu veri dizisi (single instruction multiple data, SIMD) adı verilir.

(21)

Flynn sınıflandırmasında d ¨ord ¨unc ¨u model, c¸oklu komut dizisi-tek veri dizisi (multiple instruction single data, MISD) olarak adlandırılır. Bu model, hataya dayanıklı ¨ozel sistemler ic¸in gec¸erli olabilir.

3.2 Mesaj Gec¸is¸li C¸ oklu Bilgisayarların Mimari ¨Ozellikleri

3.2.1 Statik a ˘g mesaj gec¸is¸li c¸oklu bilgisayarları

Mesaj gec¸is¸li c¸oklu bilgisayarlar, mesajların tas¸ınması ic¸in bir ba ˘glantıya ihtiyac¸ duyarlar. En c¸ok kullanılan a ˘g yapısı, statik a ˘g yapısıdır. Statik a ˘g yapısında bilgisayarlar arasında fiziksel ba ˘glar bulunur. Her bilgisayarda, is¸lemci, hafıza ve di ˘ger bilgisayarlarla ba ˘glantı ic¸in bir aray ¨uz kartı bulunur.

A ˘g Kriteri: A ˘g tasarımında dikkat edilmesi gereken bant genis¸li ˘gi, a ˘g gecikmesi, ba ˘glantı sayısı ve maliyet gibi birkac¸ nokta vardır. Bant genis¸li ˘gi, birim zamanda transfer edilebilecek bit sayısını g ¨osterir. A ˘g gecikmesi, bir mesajın a ˘ga aktarılması ic¸in gec¸en s ¨uredir. Haberles¸me gecikmesi, yazılım kaynaklı gecikmeler, aray ¨uz gecikmeleri ve mesajın aktarılması ic¸in gec¸en s ¨urenin toplamıdır. Mesaj gecikmesi ya da bas¸lama s ¨uresi, boyu 0 olan bir mesajın aktarılması ic¸in gec¸en s ¨ureye denir.

˙Iki bilgisayar arasında g ¨onderilen mesajın gecikmesi hesaplanırken, mesajın gec¸ti˘gi ba ˘glantı sayısı ¨onem kazanır. C¸ ap, a ˘g ¨uzerinde birbirine en uzak iki bilgisayar arasında bulunan ba ˘glantı sayısıdır. C¸ ap, en k ¨ot ¨u durumda ortaya c¸ıkacak gecikmenin hesaplanması ic¸in kullanılır.

Paralel bir problemin efektif c¸ ¨oz ¨um ¨unde, a ˘gın yapısının ¨onemi c¸ok b ¨uy ¨ukt ¨ur. A ˘gın c¸apı, bir mesajın a ˘g ¨uzerinde dolas¸aca ˘gı en uzun mesafeyi g ¨osterir ve paralel algoritmanın iletis¸im alt sınırını olus¸turur. ¨Orne ˘gin sayıların sıralanmasında, her bir sayının a ˘gdaki bir bilgisayarda tutuldu ˘gunu varsayalım. Amac¸, bilgisayarların numaralarına g ¨ore sayıları yer de ˘gis¸tirmektir. Burada en k ¨ot ¨u senaryo, bir sayısı, a ˘g ¨uzerinde en uzakta olan bilgisayara tas¸ımaktır. E ˘ger a ˘g c¸apı dise, herhangi bir sıralama algoritmasının iletis¸im alt sınırı en k ¨ot ¨u durumda en azd adım gerekti ˘ginden,dsayıda haberles¸me adımından az olamaz.

(22)

Tamamen Ba ˘glı A ˘g: Tamamen ba ˘glı a ˘glarda, her bilgisayarın sistemdeki di ˘ger bilgisayarlarla arasında bir ba ˘g bulunur. nsayıda bilgisayar, her bilgisayarda bulunan n − 1 sayıda ba ˘glantı ile di ˘ger bilgisayarlara ba ˘glıdır. Toplamda n×(n−1)2 ba ˘glantı bulunur. Bu yapı, sadece k ¨uc¸ ¨uk sayılar ic¸in uygulanabilir. n b ¨uy ¨ud ¨ukc¸e, her bilgisayar ic¸inden− 1ba ˘glantı sa ˘glamak hem m ¨uhendislik hem de maliyet ac¸ısından zorlas¸acaktır. Bu durumda, kısıtlı ba ˘glantılı statik a ˘glar (Do ˘gru/halka, ızgara, hiperk ¨up, a ˘gac¸) kullanılır.

Do ˘gru/Halka: Bir sıra halinde bulunan bilgisayarlarda ba ˘glantılar sadece koms¸u bilgisayarla sınırlıdır. Sıra yapısı, iki uc¸taki bilgisayarlar arası ba ˘glantı kurularak halka yapısına d ¨on ¨us¸t ¨ur ¨ulebilir. Her bilgisayarda, sa ˘g ve solundaki bilgisayarlarla ba ˘glantısını sa ˘glayan iki ba ˘glantı bulunur. Sıra s¸eklinde olan yapılarda c¸ap n− 1, halka s¸eklinde olan yapılarda ise⌊n

2⌋’dir.

A ˘gın tamamen ba ˘glı yapıları sa ˘glayamadı ˘gı durumlarda, direkt ba ˘glı olmayan iki bilgisayar arasında iletis¸im sa ˘glanabilmesi ic¸in bir y ¨onlendirme algoritmasına ihtiyac¸ duyulur. Sıra ya da halka yapısında y ¨onlendirme algoritması, sa ˘ga ya da sola ilerlemek s¸eklindedir. Farklı a ˘g yapılarında kullanılan de ˘gis¸ik y ¨onlendirme algoritmaları bulunmaktadır.

Izgara: Izgara s¸eklindeki a ˘g yapılarında her bilgisayar, iki boyutlu bir matrisin elemanları gibi ya da bir ızgaranın birles¸im noktalarına yerles¸mis¸ gibi g ¨or ¨un ¨ur. Kenarlarda bulunan bos¸ uc¸lar di ˘ger uc¸ ile birles¸tirilirse, torus yapısı olus¸ur.

Izgara ve torus yapıları, kolay kurulabilmeleri ve genis¸leme kapasiteleri nedeniyle c¸ok pop ¨ulerdir. Uc¸ boyutlu ızgaralar, her bir bilgisayarın ¨uc¸ boyutta ikis¸er ba ˘glantı¨ yapmasıyla olus¸turulabilir. ¨Uc¸ boyutlu ızgaralar, m ¨uhendislik ve bilimsel problemlerin c¸ ¨oz ¨um ¨u ic¸in daha uygun a ˘g ortamı sa ˘glarlar.

A ˘gac¸: A ˘gac¸ a ˘glarında ilk bilgisayar k ¨ok olarak adlandırılır. Her bilgisayar, kendisinden daha as¸a ˘gıda bulunan iki bilgisayara, kendisinden daha yukarıda bulunan bir bilgisayara ba ˘glıdır. A ˘g k ¨okten as¸a ˘gıya do ˘gru genis¸ler. K ¨ok ¨un altındaki ilk seviyede iki

(23)

bilgisayar bulunur. ˙Ikinci seviyede d ¨ort bilgisayar,j. seviyede ise2j bilgisayar bulunur.

A ˘gın tamamında ise2j+1−1bilgisayar bulunur. Bu tip a ˘glarda b ¨ut ¨un dallar doldurulmus¸ ise tamamlanmıs¸ ikili a ˘gac¸ olarak adlandırılır. Y ¨ukseklik, k ¨okten en alt seviyeye kadar olan ba ˘glantı sayısıdır. A ˘gac¸ s¸eklindeki a ˘glarda a ˘gın tamamlanmıs¸ olması ya da her bilgisayarın altında iki ba ˘glantı olması s¸art de ˘gildir.

A ˘gac¸ yapıları, parc¸ala ve ele gec¸ir algoritmaları ic¸in uygundur. A ˘gac¸ yapılarında k ¨oke do ˘gru trafik artmaktadır. Bunu engellemek ic¸in s¸is¸man a ˘gac¸ a ˘gları kullanılır. S¸ is¸man a ˘gac¸ a ˘glarında k ¨oke do ˘gru c¸ıkıldıkc¸a ba ˘glantı sayısı artırılır.

Hiperk ¨up: d-boyutlu hiperk ¨up a ˘gında her bilgisayar, di ˘ger bilgisayarlara, her boyutta bir ba ˘glantı olacak s¸ekilde ba ˘glıdır. d-boyutlu hiperk ¨up a ˘gında, her bir bilgisayarad-bitlik bir adres verilir. Adresteki her bir bit, bir boyuta kars¸ılık gelir ve 0 ve 1 de ˘gerlerini alabilir. Uc¸ boyutlu hiperk ¨upte her bilgisayara 3 bitlik adres verilir.¨ 000 adresli bilgisayar, 001, 010 ve 100 adresli bilgisayarlara ba ˘glıdır. Burada dikkat edilmesi gereken, bir bilgisayara ba ˘glı olan di ˘ger bilgisayarlarının adreslerinin, bilgisayarın adresinden sadece bir bit farklı olmasıdır. Bu ¨ozellik boyut sayısı y ¨ukselse de aynı s¸ekilde korunur.

Hiperk ¨uplerin ¨onemli avantajlarından birisi, a ˘g c¸apının log2n kadar olmasıdır.

Hiperk ¨uplerin ¨ozel yapılarından dolayı minimum mesafe, c¸ıkmaza s ¨ur ¨uklenmeyen y ¨onlendirme algoritması bulunmaktadır.

3.2.2 Haberles¸me y ¨ontemleri

Kaynak d ¨u ˘g ¨umden hedef d ¨u ˘g ¨ume bir mesaj g ¨onderirken en uygun durum, kaynaktan hedefe direkt bir ba ˘glantının bulunmasıdır. C¸ o ˘gu sistemde bir mesajın kaynaktan hedefe varabilmesi ic¸in y ¨onlendirilmesi gerekmektedir. Mesajlar transfer edilirken iki temel y ¨ontem kullanılır: Paket anahtarlama, devre anahtarlama.

Devre anahtarlamada, kaynaktan hedefe kadar kesintisiz bir yol olus¸turulur. Mesaj bu yol ¨uzerinden aktarılır. Mesaj aktarımı tamamlanana kadar yol bozulmadan bekler. Basit telefon s¸ebekesi devre anahtarlama sistemlerine ¨ornek olarak verilebilir. Kurulan

(24)

bir telefon ba ˘glantısı, iki uc¸tan birisi konus¸mayı sonlandırana kadar kesilmez. A ˘g yapısı b ¨uy ¨ud ¨ukc¸e, iki bilgisayar arasındaki ba ˘glantıda aradaki ba ˘glantıların haberles¸me ic¸in rezerve edilmesi, sistemin b ¨ut ¨un ¨un ¨un performansını negatif y ¨onde etkiler.

Paket anahtarlamalı sistemde, g ¨onderilecek mesaj paketlere b ¨ol ¨un ¨ur. Her pakette y ¨onlendirme ic¸in gerekli olan kaynak ve hedef adresleri bulunur. Paketlerin tas¸ıyabilece ˘gi veri boyları sınırlıdır. Bu nedenle, mesajın boyu paket ic¸indeki veri boyu sınırını gec¸ecek olursa, a ˘ga birden fazla mesaj g ¨onderilmis¸ olur. Posta sistemi , paket anahtarlamalı sistemler ic¸in bir ¨ornektir. Mektuplar, g ¨ondericinin posta kutusundan alınarak posta merkezilerine getirilir. Burada posta kutusu uygulama, posta merkezi ise bilgisayarın mesaj tampon b ¨olgesidir. Merkeze alınan mektup, alıcının merkezine g ¨onderilir. Alıcı merkezi de mektubu alıcının posta kutusuna yerles¸tirir. Bu s¸ekilde gerc¸ekles¸en paket anahtarlamalı iletime, depola ve y ¨onlendir (store and forward) adı verilir. Depola ve y ¨onlendir modeliyle c¸alıs¸an paket anahtarlamalı sistemler eldeki veri paketi y ¨onlendirilirdikten sonra ba ˘glantının farklı paketler ic¸in de kullanılabilmesini sa ˘glar. Depola ve y ¨onlendir modeli, hedef ile olan ba ˘glantı sa ˘glansın ya da sa ˘glanmasın, paketlerin bir tamponda bekletilmesini zorunlu tutar. Bu durum, a ˘g gecikmesinin y ¨ukselmesine neden olur. Tampon b ¨olgede saklama gereklili ˘gi, sanal kestirme y ¨onteminin kullanılması ile ortadan kalkar. Sanal kestirme y ¨onteminde, hedef ile ba ˘glantı sa ˘glanmıs¸ ise, mesaj tampon b ¨olgeye aktarılmadan direkt olarak hedefe g ¨onderilir. E ˘ger hedef ile ba ˘gantı yoksa, mesajın depolanması ic¸in bir tampon b ¨olge kullanılması zorunludur.

A ˘g gecikmesini azaltmak ve kullanılan tampon b ¨olgeleri k ¨uc¸ ¨ultmek amacıyla solucan deli ˘gi y ¨onlendirmesi (wormhole routing) Dally and Seitz[11] tarafından ortaya atılmıs¸tır. Depola ve y ¨onlendir metodunda mesaj, hedefle ba ˘glantı sa ˘glandı ˘gında bir b ¨ut ¨un olarak g ¨onderilir. Solucan deli ˘gi y ¨onlendirmesinde mesaj flit adı verilen k ¨uc¸ ¨uk parc¸alara ayrılır. Hedef ile kaynak arasındaki ba ˘glantı, flit ic¸indeki her bir bit ic¸in bir kablo sa ˘glayabilir. Bu durumda bir flit, paralel olarak aktarılabilir. Ba ˘glantı sa ˘glandı ˘gında, g ¨onderilecek olan mesajın sadece bas¸lık kısmı hedefe aktarılır. Mesajın izleyen flitleri aradaki ba ˘glantı sa ˘glandıkc¸a g ¨onderilir. B ¨oylece, flitler, a ˘g ¨uzerinde da ˘gıtık olarak tas¸ınır. Bas¸taki flit ilerledikc¸e, bir sonraki de ilerleyebilmektedir. D ¨u ˘g ¨umler arasında bir istek/onaylama mekanizmasının bulunması flitleri d ¨u ˘g ¨umler

(25)

arasında hareket ettirmek ic¸in gerekmektedir. Bir flit tampon b ¨olgeden ayrılmaya hazır oldu ˘gunda, bir sonraki d ¨u ˘g ¨ume bir istek g ¨onderir. ˙Istek g ¨onderilen d ¨u ˘g ¨um bir flit tamponu bos¸aldı ˘gında, g ¨onderici d ¨u ˘g ¨umden fliti alır. Mesaj aktarımı sırasında mesajın parc¸alarının birbirine ba ˘glı olması y ¨uz ¨unden aradaki ba ˘glantının korunması gerekmektedir.

3.2.3 Girdi/C¸ ıktı

B ¨ut ¨un bilgisayar sistemlerinin girdi c¸ıktı cihazları ve mekanizmaları bulunmaktadır. Disk sistemleri uygulamaların ve verilerin saklanması ic¸in kullanılır. Bir bilgisayarın diskinde bulunan bilgiye di ˘ger bir bilgisayarın eris¸mek istemesi, a ˘g ¨uzerinden s ¨ozkonusu verinin tas¸ınmasını gerektirecektir. Aynı veriye c¸ok sayıda bilgisayarın eris¸mek istemesi durumunda ise, performans problemleri bas¸g ¨osterir. Bu durumla bas¸a c¸ıkabilmek ic¸in, paralel dosya sistemleri gelis¸tirilmektedir. Paralel dosya sistemlerinde, disk alanı bir grup bilgisayar tarafından t ¨um sisteme sa ˘glanır. Disk eris¸imindeki hız, paralel dosya sistemini olus¸turan bilgisayar sayısının artırılması ile artar. Lustre[12] ve PVFS[13] en c¸ok kullanılan paralel dosya sistemlerindendir. Bu sistemlerin mimarisi, dosya sistemini sunan bilgisayar grubuna eklenti yapıldıkc¸a t ¨um paralel hesaplama sisteminin disk eris¸im hızını artıracak s¸ekilde tasarlanmıs¸tır.

(26)

4 MESAJ GEC¸ ˙IS¸ L˙I PROGRAMLAMA

Bu b ¨ol ¨umde mesaj gec¸is¸li uygulamaların temel yapısından ve s ¨urec¸ler arasında haberles¸menin nasıl yapıldı ˘gından bahsedilecektir. Zamanla eskiyen Paralel Sanal Makinalar[9] (Parallel Virtual Machines, PVM) k ¨ut ¨uphanesi, yerini daha genis¸ kapsamlı olan Mesaj Gec¸is¸ Aray ¨uz ¨u (Message Passing Interface, MPI[9]) k ¨ut ¨uphanesine bırakmaktadır. MPI, aslında bir k ¨ut ¨uphane de ˘gil, standarttır. Bu nedenle farklı firmalar standarda uygun MPI gerc¸eklemeleri c¸ıkarabilirler. Donanım da ¨ureten HP, IBM gibi s¸irketlerin kendi donanımları ic¸in yazılmıs¸ MPI standardına uyan k ¨ut ¨uphaneleri bulunmaktadır.

4.1 Mesaj Gec¸is¸li Programlamanın Temelleri

Paralel uygulamalar, y ¨ukek seviyeli bir dile yapılacak k ¨ut ¨uphane eklentisi ile yazılabilirler. C ve Python gibi dillere yapılan k ¨ut ¨uphane eklentileri ile mesaj gec¸is¸li uygulamalar yazmak m ¨umk ¨und ¨ur. K ¨ut ¨uphanelerde bulunan komutlar yardımıyla, paralel sistem ¨uzerinde s ¨urec¸ler arası haberles¸me yapmak m ¨umk ¨und ¨ur. Bu programlama yapısında, hangi s ¨urec¸lerin c¸alıs¸tırılaca ˘gı, s ¨urec¸ler arasında ne zman mesaj g ¨onderilece ˘gi, mesajların ic¸inde hangi bilgilerin olaca ˘gını programcının vermesi gerekmektedir. Paralel bir uygulama yazmak ic¸in farklı bilgisayarlarda ayrık s ¨urec¸ler bas¸latabilmek ve s ¨urec¸ler arasında mesaj alıp verebilmek yeterli olmaktadır.

4.1.1 S ¨urec¸ yaratılması

Paralel programların farklı sayıda is¸lemci ¨uzerinde testleri sırasında birden fazla s ¨urec¸ bir is¸lemci ¨uzerinde c¸alıs¸tırılabilir. Bu durumda is¸lemci zaman paylas¸ımı yaparak kendisine verilen s ¨urec¸leri c¸alıs¸tırır. Bu s¸ekilde uygulama en hızlı olacak s¸ekilde c¸alıs¸tırılamaz, ancak programın c¸ok sayıda is¸lemci ¨uzerinde c¸alıs¸tırılması test edilmis¸ olur. Paralel uygulamalarda, bir is¸lemci ¨uzerinde bir s ¨urec¸ c¸alıs¸tırılacak s¸ekilde d ¨uzenleme yapılarak, sistemin verilen uygulama ic¸in en iyi performansı vermesi sa ˘glanır.

(27)

Paralel sistemlerde iki t ¨url ¨u s ¨urec¸ yaratılabilir: Statik s ¨urec¸ yaratılması, dinamik s ¨urec¸ yaratılması. Statik s ¨urec¸ yaratılması durumunda, sistemdeki bilgisayarlar uygulama bas¸latıldı ˘gında hangi uygulamayı her bir is¸lemcide kac¸ aedt c¸alıs¸tıracaklarını bilirler. Bu de ˘gerler uygulama komut satırından c¸alıs¸tırılırken verilir. C¸ o ˘gu paralel uygulamada bir y ¨onetici s ¨urec¸ ile c¸ok sayıda k ¨ole s ¨urec¸ler bulunur. Tekli program c¸oklu veri (Single Instruction Multiple Data, SPMD) modeline g ¨ore hazırlanmıs¸ uygulamalarda y ¨onetici ve k ¨ole s ¨urec¸leri bir program ic¸ine yerles¸tirilmis¸tir. Uygulama bas¸latıldı ˘gında, s ¨urecin paralel sistemdeki konumuna (r ¨utbe) g ¨ore, uygulamanın y ¨onetici ya da k ¨ole kısmı devreye girmektedir. Paralel sistem heterojen mimaride bilgisayarlardan olus¸uyor ise uygulamanın her bir mimari ic¸in derlenmesi gerekir. B ¨oylece, t ¨um sistem farklı mimarilerde bilgisayarlardan olus¸sa bile, her bilgisayar kendi mimarisine uygun programı c¸alıs¸tırabilir.

Dinamik s ¨urec¸ yaratmada, uygulamanın c¸alıs¸ması sırasında yeni s ¨urec¸ler uygulama tarafından bas¸latılır. S ¨urec¸ yaratma ic¸in s ¨urec¸ yapıları ya da sistem c¸a ˘grıları kullanılır. S ¨urec¸ler yaratılabildikleri gibi yok edilebilirler. Bu durumda uygulamanın c¸alıs¸ması sırasında sistemde de ˘gis¸en sayılarda s ¨urec¸ aktif olabilir.

4.1.2 Mesaj gec¸me fonksiyonları

MPI k ¨ut ¨uphanesi ic¸inde c¸ok sayıda fonksiyon olmasına ra ˘gmen, temel bir paralel uygulamanın yazılabilmesi ic¸in az sayıda fonksiyon yeterli olmaktadır. En temel fonksiyonlar mesaj g ¨onderme ve mesaj alma fonksiyonlarıdır. Fonksiyonlara parametre olarak hangi bilgileri g ¨onderecekleri ya da gelen bilgiyi hangi tampon b ¨olgeye aktaracakları verilir.

send(parametre listesi) recv(parametre listesi)

Burada send() komutu mesajı g ¨onderecek s ¨urec¸ tarafından c¸a ˘gırılır. Mesaj alacak olan s ¨urecin de recv() komutunu c¸a ˘gırması gerekmektedir. Kullanılacak olan parametreler uygulamanın yazıldı ˘gı programlama diline g ¨ore farklılık g ¨osterebilir. C dilinde g ¨onderilecek verinin bir tampon b ¨olgede hazırlanıp, g ¨onderim komutu ic¸inde tipinin belirtilmesi gerekir. Python dilinde ise, karmas¸ık nesnelerden olus¸an bir dizi, hic¸bir is¸leme gerek kalmadan g ¨onderim komutuna verilebilir. C kullanarak MPI ile mesaj

(28)

int x=1;

MPI_Send(&x,1,MPI_INT,1,msgtag,MPI_COMM_WORLD); C kullanarak MPI ile mesaj alımında:

int x;

MPI_Recv(&x,1,MPI_INT,0,msgtag,MPI_COMM_WORLD,status); Python kullanarak MPI ile mesaj g ¨onderimde:

x=1

mpi.send(x,0)

Python kullanarak MPI ile mesaj alımında: cevap,durum = mpi.recv()

Es¸zamanlı Mesaj G ¨onderme: Es¸zamanlı terimi, mesajın g ¨onderimi tamamlanmadan program kontrol ¨un ¨u bırakmayan fonksiyonlar ic¸in kullanılır. Burada, mesaj tampon b ¨olgesi kullanılmaz. Es¸zamanlı g ¨onderim fonksiyonu, kars¸ı taraftaki uygulama tarafından mesaj alım is¸lemi bas¸latılana kadar bekler. Es¸zamanlı g ¨onderim ve alım yapan uygulamalarda mesaj de ˘gis¸im is¸lemi bitene kadar iki s ¨urec¸te beklemek zorundadır. Bu fonksiyonlar, s ¨urec¸lerin arasında veri aktarımı ile beraber, paralel uygulamanın akıs¸ını da d ¨uzenlerler.

Es¸zamanlı mesaj alıs¸veris¸inde ¨uc¸ yollu is¸aretles¸me protokol ¨u kullanılır. ¨Once kaynak s ¨urec¸, hedef s ¨urece mesaj g ¨onderme iste ˘gini g ¨onderir. Hedef, mesajı almaya hazır oldu ˘gunda hazırım mesajını kayna ˘ga g ¨onderir. Hazırım mesajını alan kaynak, gerc¸ek mesajı hedefe g ¨ondermeye bas¸lar.

S¸ ekil 4.1’de kaynak send() kısmına hedeften ¨once gelir. Bu durumda, kaynak s ¨ureci hedef s ¨urecinden cevap alana kadar beklemeye bas¸lar. E ˘ger kaynak s ¨urecinin mesajlarına ihtiyac¸ duyan bas¸ka s ¨urec¸ler de varsa, bu s ¨urec¸ler de beklemeye gec¸ecektir. S¸ ekil 4.2’de hedef s ¨ureci kaynak s ¨urec¸ mesajı g ¨ondermeye bas¸layana kadar bekler. Bu nedenle, send() ve recv() komutlarının s ¨urec¸ler ic¸inde nerede bas¸layaca ˘gı, uygulamanın c¸ıkmaza girmemesi ac¸ısından ¨onemlidir. S ¨urec¸lerin nasıl bekletilece ˘gi, sistemden sisteme farklılık g ¨osterebilir.

(29)

S¸ ekil 4.1: send() recv()’den ¨once

S¸ ekil 4.2: recv() send()’den ¨once

4.1.3 Engellenmeyen ve engelleyici mesaj gec¸is¸i

Engelleyici terimi, mesaj g ¨onderimi bitmeden fonksiyondan uygulamaya geri d ¨onmeyen anlamında kullanılmaktadır. Es¸zamanlı ve engelleyici bu ac¸ıdan aynı anlama gelmektedir. Engellenmeyen terimi, mesaj hedef tarafından alınsın ya da alınmasın fonksiyondan c¸ıkarak uygulamaya d ¨onen anlamında kullanılır. Sistemlerde S¸ ekil 4.3’te g ¨or ¨uld ¨u ˘g ¨u gibi, g ¨onderilecek mesajı gec¸ici olarak tutan tampon b ¨olgeler bulunur. Tampon b ¨olge, g ¨onderilecek olan mesajın hedef tarafından recv() komutu ile alınana kadar saklanmasını sa ˘glar. Uygulamanın c¸alıs¸ması sırasında, hedef s ¨urec¸ recv() komutuna kaynak s ¨urecin send() komutundan ¨once gelirse, mesaj tampon b ¨olgesi bos¸tur ve hedef s ¨ureci beklemeye gec¸er. Kaynak tarafında ise, s ¨urecin yerel is¸lemleri tamamlandıktan ve mesaj tampon b ¨olgeye yerles¸tirildikten sonra, kaynak s ¨ureci hedefin mesajı almasını beklemeden devam edebilir. B ¨oylece uygulamanın toplam c¸alıs¸ma s ¨uresi kısalabilir. Pratikte, tampon b ¨olgeler sınırlı b ¨uy ¨ukl ¨ukte olurlar. Uygulamanın c¸alıs¸ması sırasında tampon b ¨olgenin doldurulması m ¨umk ¨und ¨ur. Bu durumda hem tampon b ¨olgenin durumunu kontrol etmek hem de hedef s ¨urecin mesajı aldı ˘gından emin olabilmek ic¸in fazladan mesajlas¸ma yapılması gerekebilir.

(30)

S¸ ekil 4.3: Mesajlas¸mada tampon b ¨olge kullanımı

4.1.4 Mesaj sec¸me

S¸ imdiye kadar send() komutuna parametre olarak g ¨onderilecek mesaj ve hedef s ¨urec¸, recv() komutuna da gelen mesajı aktaraca ˘gı bellek b ¨olgesi ve mesajın gelece ˘gi s ¨urec¸ verildi ˘gini g ¨ord ¨uk. Hedef s ¨urec¸, mesajı bekledi ˘gi s ¨urec¸ dıs¸ında gelen mesajların hepsini g ¨ozardı edecektir. Bu durumda, gelen t ¨um mesajların alınabilmesi ic¸in s ¨urec¸ yerine ¨ozel bir sembol ya da rakam kullanılır. B ¨oylece recv() komutu herhangi bir s ¨urec¸ten gelen mesajı alabilir.

Daha esnek bir kullanım sa ˘glamak amacıyla mesajlar is¸aretlenebilir. Bu is¸aret mesajın bas¸lık bilgisine eklenir. ˙Is¸aret olarak pozitif tamsayı kullanılır. B ¨oylece g ¨onderilen ve alınan mesajların gruplanabilmesiyle beraber, sadece belli bir is¸arete sahip mesajların alınabilmesi de m ¨umk ¨und ¨ur.

4.1.5 Yayma (broadcast), da ˘gıtma (scatter), toplama (gather), indirgeme (reduce)

Yayma, aynı mesajın sistemdeki b ¨ut ¨un s ¨urec¸lere g ¨onderilmesi is¸lemidir. Yayma is¸leminde rol alacak olan s ¨urec¸lerin bir grup olus¸turması gereklidir. Yayma is¸lemi verilen grup ic¸inde gerc¸ekles¸ir. S¸ ekil 4.4’de s ¨urec¸ 0 yayma is¸leminin k ¨ok s ¨urecidir.

¨

Ornekte, k ¨ok s ¨urec¸ di ˘ger s ¨urec¸lere yayılacak olan veriyi tampona aktarır. S¸ ekil 4.4’de SPMD modelindeki gibi b ¨ut ¨un s ¨urec¸ler aynı bcast() komutunu c¸a ˘gırırlar. bcast() komutu es¸zamanlı, engelleyici bir komuttur. B ¨ut ¨un s ¨urec¸ler bcast() komutunu tamamlayana kadar, yayma is¸lemine karıs¸mıs¸ olan t ¨um s ¨urec¸ler bekler.

(31)

S¸ ekil 4.4: Yayma is¸lemi

S¸ ekil 4.5: Da ˘gıtma is¸lemi

Da ˘gıtma terimi, k ¨ok s ¨urec¸te bulunan bir dizinin her bir elemanını ayrı bir s ¨urece g ¨onderme is¸lemidir. ¨Orne ˘gin dizinin 5. elemanı, 5 numaralı s ¨urece g ¨onderilir. Da ˘gıtma is¸lemi S¸ ekil 4.5’de g ¨osterilmis¸tir. Yayma is¸leminde oldu ˘gu gibi, da ˘gıtma is¸leminde de bir grup s ¨urec¸ is¸leme dahil olur.

Toplama is¸lemi, bir s ¨urecin di ˘ger s ¨urec¸lerden farklı de ˘gerleri toplaması s¸eklinde gerc¸ekles¸ir. Toplama is¸lemi, genellikle s ¨urec¸ler tarafından yapılan bir hesaplama is¸lemi sonrasında kullanılır. Her bir s ¨urec¸ problemin kendisi ile ilgili k ¨uc¸ ¨uk parc¸asını hesaplar. K ¨ok s ¨urec¸, hesaplanan de ˘gerleri toplama is¸lemi ile toplayarak b ¨uy ¨uk problemin sonucunu c¸ıkarır. Toplama is¸lemi, yayma is¸leminin tam tersi olacak s¸ekilde c¸alıs¸ır. Orne ˘gin 5. s ¨urecin hesapladı ˘gı de ˘ger, k ¨ok s ¨urecindeki dizinin 5. g ¨oz ¨une¨ yerles¸ir. Toplama is¸leminin nasıl gerc¸ekles¸ti ˘gi, S¸ ekil 4.6’da verilmis¸tir.

(32)

S¸ ekil 4.6: Toplama is¸lemi

S¸ ekil 4.7: ˙Indirgeme is¸lemi

Kimi zaman toplama is¸lemi aritmetik ya da mantıksal operat ¨orlerle birles¸tirilebilir. ¨

Orne ˘gin veriler di ˘ger s ¨urec¸lerden alınır ve k ¨ok s ¨urec¸te toplama is¸lemine sokulabilir. Bu tip operasyonlara indirgeme (reduce) adı verilir. C¸ o ˘gu mesaj gec¸is¸li sistemde yayma, da ˘gıtma, toplama ve indirgeme is¸lemleri ic¸in c¸es¸itli y ¨ontemler sa ˘glanmaktadır. ˙Is¸lemlerin sistemin daha da as¸a ˘gısında nasıl gerc¸ekles¸ti˘gi ise, sistemlere ba ˘glı olarak farklılık g ¨osterebilmektedir.

4.2 MPI ile Paralel Programlama

Uzun yıllar boyunca pek c¸ok paralel programlama dili ortaya c¸ıkmıs¸ fakat hic¸birisi MPI kadar yaygınlas¸ma s¸ansı bulamamıs¸tır. MPI k ¨ut ¨uphanesi, y ¨uksek seviyeli dillere eklenti olarak gelir ve bu dillere farklı bilgisayarlarda c¸alıs¸an s ¨urec¸ler arasında mesaj aktarabilme yetene ˘gini kazandırır. MPI kullanarak programlama genelde C ve FORTRAN kullanarak yapılmaktadır. Burada ¨orneklerimizi C ve Python dillerinde gerc¸ekleyece ˘giz.

(33)

MPI, C diline direkt k ¨ut ¨uphane olarak eklenebilir. Paralel uygulamamızı gelis¸tirirken kullandı ˘gımız pyMPI, standart Python yorumlayıcısının kendisinin MPI k ¨ut ¨uphaneleri ile beraber derlenmesiyle yaratılan yeni Python yorumlayıcısının ic¸ine yerles¸tirilir.

4.2.1 OpenMPI ve pyMPI paketlerinin kurulumu

OpenMPI[14], birc¸ok aras¸tırma laboratuvarı ve ticari s¸irketlerin olus¸turdu ˘gu bir organizasyon tarafından gelis¸tirilen ac¸ık kaynak kodlu bir MPI2.0 standardı gerc¸eklemesidir. Pek c¸ok unix tabanlı sisteme kurulabilir. Kullandı ˘gımız Pardus ve CentOS gibi Linux da ˘gıtımları ic¸in ayrıca hazırlanmıs¸ paketleri bulunmaktadır. As¸a ˘gıdaki is¸lemler, herhangi bir Linux da ˘gıtımında, mpi k ¨ut ¨uphanesinin nasıl c¸alıs¸maya hazır hale getirilece ˘gini g ¨ostermektedir.

As¸a ˘gıdaki is¸lemler bir linux kabu ˘gunda gerc¸ekles¸tirilir: wget http://www.openmpi.org/software/ompi/v1.2/\ downloads/openmpi-1.2.8.tar.bz2 wget http://surfnet.dl.sourceforge.net/sourceforge/\ pympi/pyMPI-2.5b0.tar.gz tar jxf openmpi-1.2.8.tar.bz2 cd openmpi-1.2.8

./configure; make ; make install cd ..

tar zxf pyMPI-2.5b0.tar.gz cd pyMPI-2.5b0

./configure --with-libs=/usr/local/lib ; make ; make install

Yukarıdaki is¸lemler sonrasında, is¸letim sistemimizde MPI kullanarak uygulama gelis¸tirmek ic¸in gerekli olan b ¨ut ¨un k ¨ut ¨uphane ve programlama dilleri hazırlanmıs¸ olacaktır.

4.2.2 Merhaba d ¨unya uygulaması

Merhaba d ¨unya uygulamasının C s ¨ur ¨um ¨u as¸a ˘gıdadır. #include <mpi.h>

#include <stdio.h>

(34)

{ int rutbe; int surecsayisi; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD, &rutbe); MPI_Comm_size(MPI_COMM_WORLD, &surecsayisi);

printf("R¨utbe %d, S¨ure¸c Sayısı %d, Merhaba d¨unya\n", \ rutbe,surecsayisi);

MPI_Finalize(); return 0;

}

Yukarıdaki uygulama merhaba.c adı ile kaydedilir ve as¸a ˘gıdaki gibi derlenerek ve c¸alıs¸tırılır:

mpicc merhaba.c -o merhaba mpirun -np 4 merhaba

Yukarıda derleme is¸lemi sırasında, MPI k ¨ut ¨uphanesi ic¸in gereken eklemeleri mpicc uygulaması kendisi yapmaktadır. Gerekiyorsa bas¸ka matematik gibi di ˘ger k ¨ut ¨uphaneleri -l parametresi ile derleme is¸lemine sokabiliriz. Programın c¸ıktısı ise as¸a ˘gıdaki gibidir:

R¨utbe 3, S¨ure¸c Sayısı 4, Merhaba d¨unya R¨utbe 0, S¨ure¸c Sayısı 4, Merhaba d¨unya R¨utbe 1, S¨ure¸c Sayısı 4, Merhaba d¨unya R¨utbe 2, S¨ure¸c Sayısı 4, Merhaba d¨unya

Aynı uygulamanın Python kodu ise as¸a ˘gıdaki gibidir: import mpi

rutbe = mpi.rank

surecsayisi = mpi.size

print "R¨utbe %d S¨ure¸c sayısı %d, Merhaba d¨unya" % \ (rutbe, surecsayisi)

Python yorumlamalı bir dil oldu ˘gundan derleme gerektirmez. Yukarıdaki uygulama ise as¸a ˘gıdaki gibi c¸alıs¸tırılır:

mpirun -np 4 pyMPI merhaba.py Programın c¸ıktısı ise as¸a ˘gıdaki gibidir:

(35)

R¨utbe 0 S¨ure¸c sayısı 4, Merhaba d¨unya R¨utbe 3 S¨ure¸c sayısı 4, Merhaba d¨unya R¨utbe 2 S¨ure¸c sayısı 4, Merhaba d¨unya R¨utbe 1 S¨ure¸c sayısı 4, Merhaba d¨unya

Yukarıdaki uygulamalarda, 4 s ¨urec¸ yaratılmıs¸ ve her bir s ¨urec¸ ekrana istenen metni yazmıs¸tır. Program c¸ıktılarında, r ¨utbelerin hep aynı sırada olmadı ˘gı g ¨or ¨ul ¨ur. Paralel sistem her bas¸latıldı ˘gında, s ¨urec¸lerin komutları gerc¸ekles¸tirmesi her zaman ic¸in aynı sırada olmayacaktır. Bu durumda, sistemin es¸zamanlı y ¨ur ¨uyebilmesi ic¸in engelleyici komutlar kullanılır.

4.2.3 Mesaj g ¨onderme ve alma

Mesaj g ¨onderip alan uygulamanın C s ¨ur ¨um ¨u as¸a ˘gıdaki gibidir: #include <mpi.h>

#include <stdio.h>

int main(int argc, char** argv) { int rutbe; int surecsayisi; int i; int rakam; int koledeki_rakam; MPI_Status durum; rakam = 1; koledeki_rakam = 0; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD, &rutbe); MPI_Comm_size(MPI_COMM_WORLD, &surecsayisi); if (rutbe == 0) {

for (i = 1; i < surecsayisi; i++)

MPI_Send(&rakam,1,MPI_INT,i,500,MPI_COMM_WORLD); } else { MPI_Recv(&koledeki_rakam,1,MPI_INT,0,500, \ MPI_COMM_WORLD,&durum);

koledeki_rakam = rutbe * 10 + koledeki_rakam; printf("Rutbe %d, Rakam %d\n ",rutbe, \

(36)

MPI_Finalize(); return 0;

}

Yukarıdaki uygulama gonder-al.c adı ile kaydedilir ve as¸a ˘gıdaki gibi derlenerek ve c¸alıs¸tırılır:

mpicc gonder-al.c -o gonder-al mpirun -np 4 merhaba

Programın c¸ıktısı ise as¸a ˘gıdaki gibidir: Rutbe 3, Rakam 31

Rutbe 1, Rakam 11 Rutbe 2, Rakam 21

Aynı uygulamanın Python kodu ise as¸a ˘gıdaki gibidir. import mpi rutbe = mpi.rank surecsayisi = mpi.size rakam = 1 koledeki_rakam = 0 if rutbe == 0: for i in range(1,surecsayisi): mpi.send(rakam,i) else:

cevap, durum = mpi.recv()

koledeki_rakam = rutbe * 10 + cevap

print "R¨utbe %d Rakam %d" % (rutbe, koledeki_rakam) Programın c¸ıktısı ise as¸a ˘gıdaki gibidir:

R¨utbe 1 Rakam 11 R¨utbe 3 Rakam 31 R¨utbe 2 Rakam 21

(37)

5 GEN˙IS¸ KARINCA KOLON˙ILER˙INDE DO ˘GAL YAS¸ AM

B ¨ut ¨un karınca kolonilerinde hayatın aynı s¸ekilde y ¨ur ¨ud ¨u ˘g ¨u genellikle d ¨us¸ ¨un ¨ulse de b ¨uy ¨uk ve k ¨uc¸ ¨uk karınca kolonilerinin arasında c¸es¸itli farklar bulunmaktadır. B ¨uy ¨uk karınca kolonileri, feromon adı verilen bir kimyasal maddenin salgılanması ile haberles¸mektedirler.

Mallon[15], karınca sayısındaki azalmanın, bireysel kararlardaki ¨onemi artırdı ˘gını g ¨ostermis¸tir. Bu makalede, c¸ok sayıda noktaya sahip algılayıcı a ˘gları uygulama alanı olarak sec¸ildi ˘ginden, bireysel tercihlerin dramatik etkilerinin azaltılması ya da etkisiz kılınması hedeflenmektedir. Bu nedenle, az sayıda bireye sahip karınca kolonileri bu aras¸tırmanın dıs¸ındadır. Bu as¸amadan sonra karınca kolonisi ile sadece y ¨uksek n ¨ufusa sahip karınca kolonilerinden bahsediyor olaca ˘gız.

B ¨uy ¨uk bir karınca kolonisi, yeni besin kaynaklarını bulup, besini yuvalarına getiren kestirme yolu bulabilirler ve bu yolu, de ˘gis¸en ortamlara dinamik olarak uydurabilirler. Gerc¸ekte, her bir karınca basit kuralları izleyen bir ajandır. En y ¨uksek feromon de ˘gerini takip eder ve yola feromon salgılar. Feromon kimyasal bir salgıdır. Do ˘gada, karınca besin kayna ˘gına ulas¸mak ic¸in en y ¨uksek feromon de ˘gerini takip eder ve yuvasına geri d ¨onerken de feromon salgılayarak d ¨u ˘g ¨umlerdeki feromon miktarını yeniler. Bu otokatalitik y ¨ontem, en uygun yolu ortaya c¸ıkarır. De ˘gis¸ik besin kaynaklarına eris¸im ic¸in, b ¨ut ¨un karıncalar en y ¨uksek feromon de ˘gerini izlemezler. Bazı karıncalar, en uygun yolun dıs¸ına c¸ıkarak, yeni besin kaynakları ya da aynı besin kayna ˘gına daha kısa bir yolu ortaya c¸ıkarmaya c¸alıs¸ırlar. Daha kısa bir yol bulundu ˘gunda, daha fazla karınca yeni yolu kullanmaya bas¸layaca ˘gından, yeni yolun feromon de ˘geri eski yolun feromon de ˘gerinin ¨uzerine c¸ıkacak, eski yolun feromon de ˘gerinin buharlas¸ma yoluyla azalması ile birlikte, t ¨um koloni yeni yola uyum sa ˘glamıs¸ olacaktır.

(38)

6 KARINCA KOLON˙IS˙I ˙ILE Y ¨ONLEND˙IRME

Literat ¨urde, karınca kolonisi ile algılayıcı a ˘glarda y ¨onlendirme ¨uzerine az sayıda makale bulunmaktadır. Zhang, makalesi[16] ile, Antnet[17] gibi algoritmaların algılayıcı a ˘glarında d ¨uzg ¨un c¸alıs¸madı ˘gını s ¨oyler. Zhang, var olan metodun a ˘g ¨uzerinde hedefi bulana kadar c¸ok fazla zaman kaybetti ˘gini, algılayıcı a ˘glarındaki asimetrik ba ˘glantı y ¨uz ¨unden bu yaklas¸ımın pratik olmayaca ˘gını s ¨oyler. De ˘gis¸ik uygulamalar ic¸in gelis¸tirilmis¸ olan karınca kolonisi ile y ¨onlendirme algoritmalarında, karıncalar gezdikleri d ¨u ˘g ¨umlerin listesini tutar ve yolun sonunda listede bulunan d ¨u ˘g ¨umlerin feromon de ˘gerlerini de ˘gis¸tirirler. ANCOR[2] ile ¨onerilen y ¨ontemle, karıncalar, gezdikleri d ¨u ˘g ¨umlerin listesini tutmak zorunda kalmadan y ¨onlendirme yapılabilmektedir. Her bir adımda, karıncalar sadece hangi d ¨u ˘g ¨umden geldiklerini hatırlar ve ¨uzerinde bulundukları d ¨u ˘g ¨um ¨un feromon de ˘gerini de ˘gis¸tirirler. B ¨oylece algoritmaya, y ¨onlendirme ic¸in daha k ¨uc¸ ¨uk bir veri paketi yeterli olmaktadır. Burada k ¨uc¸ ¨uk veri paketinin kullanılmasının amacı, algılayıcı d ¨u ˘g ¨um ¨un ¨un veri yayma s ¨uresini azaltmaktır. Azalan veri paketi b ¨uy ¨ukl ¨u ˘g ¨u ve veri yayma s ¨uresi, a ˘gın enerji harcamasını azaltarak, toplam c¸alıs¸ma s ¨uresini uzatır. A ˘g ¨uzerindeki her bir karınca, sadece hangi d ¨u ˘g ¨umden geldi ˘gini ve hedefini bilir. Karıncalar, daha ¨once o d ¨u ˘g ¨umden gec¸en karıncaların bıraktıkları feromon miktarına g ¨ore y ¨onlerini belirlerler.

Do ˘gal hayatta karıncaların bıraktıkları feromonun etkisi, mesafe arttıkc¸a azalmaktadır. Ayrıca, bir d ¨u ˘g ¨ume gelen karınca, s ¨ozkonusu d ¨u ˘g ¨umdeki feromon de ˘gerini de ˘gis¸tirdi ˘ginde, kendi koms¸ulu ˘gunda bulunan d ¨u ˘g ¨umlerin yeni feromon de ˘gerinden etkilenmesi gerekmektedir. Demiray[3] makalesinde d ¨u ˘g ¨umlerin koms¸ularından etkilenerek feromon de ˘gerlerini de ˘gis¸tirebilmelerini modellemis¸tir. Bu modele g ¨ore, yakınındaki d ¨u ˘g ¨ume c¸ok y ¨uksek feromon bırakılan d ¨u ˘g ¨um, kendi feromon de ˘gerini, y ¨uksek feromon bırakılan d ¨u ˘g ¨umdeki feromon miktarına g ¨ore yeniden belirlemektedir. B ¨oylece, karıncaların hedefi bulma ve yuvaya d ¨onme sırasında kullandıkları feromon haritası d ¨u ˘g ¨umlerin etkilerini de kullanarak olus¸turulmaktadır.

(39)

6.1 Es¸les¸tirme

Bu b ¨ol ¨umde, karınca kolonisi ile algılayıcı a ˘gları arasındaki es¸les¸tirme verilmis¸tir. Do ˘gal yas¸amdaki karınca, algılayıcı a ˘glarda veri paketi yerine gec¸er. Aynı s¸ekilde karınca yuvası alıcıyı, besin kayna ˘gı hedefi ve krıncaların kullandı ˘gı yol ise verinin izledi ˘gi rotayı temsil etmektedir.

Karıncalar, do ˘gada buldukları besinleri yuvalarına getirirler. Algılayıcı a ˘glardaki alıcı, do ˘gal yas¸amdaki karınca yuvası yerine gec¸mektedir. Algılayıcı a ˘glarında varılmak istenen hedef d ¨u ˘g ¨um, do ˘gal yas¸amda karıncaların hayatlarını s ¨urd ¨urebilmek ic¸in aradıkları besin kaynakları yerine gec¸mektedir.

Do ˘gal yas¸amdaki bir karınca, algılayıcı a ˘glarında bir sorgu ya da veri paketine kars¸ılık gelmektedir. Her bir algılayıcı d ¨u ˘g ¨um ¨u yol ¨uzerindeki durulacak noktalardan birisidir. Bu nedenle her bir d ¨u ˘g ¨um feromon de ˘gerini tutarak, bir feromon izi olus¸turulmasına yardımcı olur. Karınca kolonisinin yolu, yeri belirlenmis¸ algılayıcı d ¨u ˘g ¨umleri ile g ¨osterilir. Do ˘gal feromon konsepti, y ¨onlendirme algoritmasının temelini olus¸turur. Her bir d ¨u ˘g ¨um, eris¸iminde olan di ˘ger di ˘ger d ¨u ˘g ¨umlerin feromon de ˘gerlerini ic¸eren bir listeye sahiptir. D ¨u ˘g ¨ume gelen karınca, d ¨u ˘g ¨um ¨un yakınında bulunan di ˘ger d ¨u ˘g ¨umlerin feromon de ˘gerlerini hissederek, bir sonraki adımda nereye gidece ˘gini saptar. Feromon yo ˘gunlu ˘gu, d ¨u ˘g ¨ume gelen karıncanın izleyece ˘gi yolu sec¸iminde etkili olan bir parametredir. Gerc¸ek feromonun bir ¨ozelli ˘gi olan yo ˘gunluk ve buharlas¸ma, y ¨onlendirme algoitmasında da kullanılmıs¸tır. Algoritma ic¸inde de, d ¨u ˘g ¨umlere bırakılan feomon de ˘gerleri zaman ic¸inde azalmaktadır.Bu ¨ozellik sayesinde, karıncaların sık kullanılmayan koms¸u d ¨u ˘g ¨umlere gitme olasılı ˘gı azaltılmaktadır. Feromon yo ˘gunlu ˘gunun zamana g ¨ore de ˘gis¸imi S¸ ekil 6.1’de g ¨osterilmis¸tir.

y= e−x

δ (6.1)

δ, uygulamaya ¨ozel belirlenebilecek ayar parametresidir. S¸ ekil 6.1’de δ = 10olarak alınmıs¸tır. Aynı matematiksel model, feromon yo ˘gunlu ˘gu ve uzaklık arasında da bulunmaktadır.

phij = e

−uzaklık×zaman

(40)

S¸ ekil 6.1: Feromon - Zaman grafi ˘gi

S¸ ekil 6.2’de feromon de ˘gerinin uzaklı ˘ga ba ˘glı olarak azaldı ˘gı g ¨or ¨ulmektedir. Bu durum, gerc¸ek hayatta da aynı s¸ekilde gerc¸ekles¸mektedir. i d ¨u ˘g ¨um ¨unde algılanan feromon miktarı Denklem 6.1’de verilmis¸tir. Denklem 6.2’de, phij, i d ¨u ˘g ¨um ¨unde, j

d ¨u ˘g ¨um ¨unde bulunan feromon miktarının ne kadarının algılandı ˘gını g ¨ostermektedir. Uzaklık, iki d ¨u ˘g ¨um arasındaki uzaklıktır. Zaman ise, feromon miktarının zaman ic¸inde buharlas¸masını modeller.Yo ˘gunluk ise,id ¨u ˘g ¨um ¨undeki listede,jd ¨u ˘g ¨um ¨un ¨un feromon de ˘geridir.

6.2 Y ¨onlendirme Algoritması ANCOR

A ˘g ¨uzerinde bulunan her d ¨u ˘g ¨um, koms¸u d ¨u ˘g ¨umlerin feromon de ˘gerlerinin bulundu ˘gu bir tabloya sahiptir. D ¨u ˘g ¨ume gelen karınca, d ¨u ˘g ¨um ¨un koms¸ularında bulunan feromon de ˘gerlerini kullanarak bi sonraki adımda hangi koms¸u d ¨u ˘g ¨ume gec¸ece ˘gini saptar. Karınca bir d ¨u ˘g ¨ume geldi ˘ginde, d ¨u ˘g ¨um ¨un feromon de ˘gerini de ˘gis¸tirir. D ¨u ˘g ¨um, yeni de ˘geri koms¸ularına bildirerek, koms¸ularının tablolarında da yeni feromon de ˘gerinin g ¨or ¨unmesini sa ˘glar. Her d ¨u ˘g ¨um, kendi feromon tablosunun buharlas¸tırılma is¸lemini kendisi gerc¸ekles¸tirir. B ¨oylece, d ¨u ˘g ¨umlerin birbirlerine buharlas¸ma sonrası yeni feromon de ˘gerlerini g ¨ondermesine gerek duyulmaz.

(41)

S¸ ekil 6.2: Feromon - Uzaklık grafi ˘gi

B ¨ut ¨un y ¨onlendirme is¸lemi ¨uc¸ ana parc¸adan olus¸ur: ˙Ilklendirme

G ¨uc¸lendirme Y ¨onlendirme

˙Ilklendirme safhasında, yiyecek arayan karıncalar sahaya yayılırlar. Bir karınca yeni bir kaynak buldu ˘gunda, g ¨uc¸lendirme safhası bas¸lar. Kayna ˘gı bulan ilk karınca, yuvaya d ¨on ¨us¸ yolunu g ¨uc¸lendirir. G ¨uc¸lendirme is¸lemi, d ¨u ˘g ¨ume maksimum feromon verilerek gerc¸ekles¸tirilir. G ¨uc¸lendirilmis¸ yol olus¸turulunca y ¨onlendirme is¸lemi bas¸lar. B ¨ut ¨un karıncalar feromon de ˘geri ac¸ısından en g ¨uc¸l ¨u olan d ¨u ˘g ¨umleri kullanarak kaynaklara ulas¸maya c¸alıs¸ırlar. Karıncaların bir kısmı da, g ¨uc¸lendirilmis¸ yolun dıs¸ına c¸ıkarak yeni kaynakların bulunmasına yardımcı olurlar.Karıncaların sahada bulunan di ˘ger kaynakları aras¸tırmasını sa ˘glamak ic¸in bas¸ka kontrol mekanizmaları da bulunmaktadır. Y ¨onlendirme algoritmasında feromonun c¸ekici ve itici ¨ozelli ˘ginin tanımlanabilmesi sa ˘glanmıs¸tır. Etkisiz feromon ”1” ile belirtilir. C¸ ekici feromon ]1..2] aralı ˘gında tanımlanır. Do ˘gal yas¸amda bulunmayan itici feromon ise [0..1[ aralı ˘gında tanımlıdır. Benzer bir yapı Montgomery [18] tarafından da kullanılmıs¸tır. ANCOR ic¸inde kullanılan y ¨ontem, c¸ekici, itici ve etkisiz feromon de ˘gerlerinin tek yapı altında birles¸tirerek Montgomery’nin[18]’nin kullandı ˘gı y ¨ontemden ayrılmıs¸tır.

(42)

6.2.1 ˙Ilklendirme safhası

˙Ilklendirme safhası, algoritmanın bas¸langıcıdır. Bu safhada, yuvada bulunan karıncaların besin bulmak ic¸in sahaya efektif bir s¸ekilde yayılması sa ˘glanmaktadır. Sahada daha ¨once hic¸ karınca bulunmadı ˘gı varsayılarak, algılayıcı a ˘gında bulunan t ¨um d ¨u ˘g ¨umlerin feromon de ˘geri ”1”, yani etkisiz feromon yapılır. Bir karınca, bir sonraki adımında hangi d ¨u ˘g ¨ume gidece ˘gini, bulundu ˘gu d ¨u ˘g ¨um ¨un koms¸ularının feromon de ˘gerine g ¨ore belirler. Bir sonraki adımda, koms¸u d ¨u ˘g ¨umler arasında en y ¨uksek feromon de ˘gerine sahip olan d ¨u ˘g ¨ume gidilir. E ˘ger karıncanın koms¸ularında en y ¨uksek feromon de ˘gerine birden fazla d ¨u ˘g ¨um sahip ise, bir sonraki adımı, maksimum feromona sahip d ¨u ˘g ¨umler arasından rastgele sec¸ilir. Yuvadan ayrılacak olan ilk karınca bir sonraki d ¨u ˘g ¨um ¨u rastgele sec¸mek zorundadır. Bas¸langıc¸ta, yuvanın etrafında bulunan d ¨u ˘g ¨umlerin hepsinin feromon de ˘geri es¸ittir. Bir karınca yeni bir d ¨u ˘g ¨ume geldi ˘ginde, d ¨u ˘g ¨um ¨un hedef olup olmadı ˘gını kontrol eder. Hedef de ˘gil ise d ¨u ˘g ¨um ¨un feromon de ˘gerini g ¨unceller ve bir sonra gidece ˘gi d ¨u ˘g ¨um ¨u sec¸er. Feromon de ˘geri g ¨uncellenen d ¨u ˘g ¨um, yeni feromon de ˘gerini koms¸ularına bildirir. B ¨oylece, d ¨u ˘g ¨ume koms¸u olan d ¨u ˘g ¨umlerin feromon listeleri de g ¨uncellenmis¸ olur. ˙Ilklendirme safhasındaki feromon g ¨uncelleme is¸lemi, karıncaların sahaya yayılmalarını sa ˘glamak ac¸ısından ¨onemlidir. Bir karınca d ¨u ˘g ¨ume geldi ˘ginde, d ¨u ˘g ¨um hedef de ˘gil ise d ¨u ˘g ¨um ¨un feromon de ˘gerini itici olarak is¸aretleyerek, kendisinden sonra gelen karıncaların s ¨oz konusu d ¨u ˘g ¨ume u ˘gramamalarını sa ˘glar. ˙Ilklendirme safhası, karıncalardan birisi hedefi bulana kadar s ¨urer.

6.2.2 G ¨uc¸lendirme safhası

˙Ilklendirme safhası karıncalardan birisi hedefi buldu ˘gunda sona erer. Hedef bulundu ˘gunda, hedeften yuvaya do ˘gru bir yolun olus¸turulması gerekmektedir. Algoritmanın g ¨uc¸lendirme safhasında amac¸, yuva ile hedef d ¨u ˘g ¨um arasında bir yol olus¸turmaktır. Karıncaları hedefi bulan karıncanın izledi ˘gi yola c¸ekmek ic¸in y ¨uksek feromon de ˘gerinin c¸ekicili ˘gi kullanılır. G ¨uc¸lendirilmis¸ yol ¨uzerinde bulunan d ¨u ˘g ¨umlerin feromon de ˘gerlerinin etkisiz feromon de ˘gerinden y ¨uksek olması beklenir. Hedefi bulan karınca yuvaya geri d ¨on ¨us¸ yolunda, gec¸ti ˘gi her d ¨u ˘g ¨ume maksimum feromon bırakarak, di ˘ger karıncaların kendi izinden gelmesini sa ˘glar. Yuvaya do ˘gru olan yolu izlemek ic¸in s ¨urekli olarak koms¸uların feromon de ˘gerleri arasında en y ¨uksek feromon de ˘gerine

Referanslar

Benzer Belgeler

ABCD yamu˘ gunun herhangi bir XY tabanından bahsetti˘ gimizde X’in AD, Y ’nin de BC kenarı ¨ uzerinde oldu˘ gunu varsayaca˘ gız... Her toplulukta en az iki ki¸sinin aynı

[r]

Cevabınızın hangi soru ve ¸sıkka ait oldu˘ gunu belirgin bir ¸sekilde g¨ osteriniz. Sadece sonu¸clardan olu¸san cevaplara

Bir bardak ¸cay, ¨ onceden ısıtılmı¸s bir bardak ve sıcak su ile, barda˘ gın ve ¸ cayın ilk sıcaklı˘ gı 190 ◦ F olacak

Bu makalede 3-B kafa takibi ic¸in d¨ong¨ul¨u en yakın nokta (ICP) algoritmasının ¨ust¨une iyiles¸tirme olarak, ¨olc¸ekten ba˘gımsız ¨oznitelik d¨on¨us¸¨um¨une

Preoperatif dönemde be ta bloker kullanan hastalarda miyokardiyal iskemi insidensini n beta bloker kullanmayanlara oranla daha düşük olduğu.. gözlendi (p&lt;0.05)

Extraction conditions: urine sample volume 4 mL; aqueous sample volume 5 mL; analytes extracted into varying volumes of 1-UN (extraction solvent) in 1.0 mL ACN; no salt addition;

[r]