• Sonuç bulunamadı

7.1 Paralel Uygulama Detayları

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

Paralel sistem c¸alıs¸tırıldı ˘gında, b ¨ut ¨un sim ¨ulasyonu y ¨oneten merkezi s ¨urec¸, ¨oncelikle sistemde kac¸ is¸lemci bulundu ˘gunu ve her bir is¸lemci ic¸in kac¸ adet karınca yaratılaca ˘gını saptar. Sistemde kac¸ d ¨u ˘g ¨um bulunması isteniyorsa, o kadar sayıda d ¨u ˘g ¨um yaratılır. Yaratılan d ¨u ˘g ¨umlerin birbirlerine olan koms¸ulukları hesaplanır.

Sistemde k ¨ole s ¨urec¸ler de c¸alıs¸maya bas¸ladı ˘gından, sim ¨ulasyonun bilgilerinin hazırlanmasını beklemelerini sa ˘glamak amacıyla mpi.barrier() kullanılır. Mpi.barrier(), paralel sistemde bulunan t ¨um s ¨urec¸lerin, uygulama ic¸inde aynı noktaya gelmelerini sa ˘glar. Koms¸uluk hesaplaması yapıldıktan sonra, k ¨olelere, karıncalarını yarat- maları ic¸in mesaj g ¨onderilir. Yaratılan karıncalar, hemen d ¨u ˘g ¨umlerde gezmeye bas¸lamamaları ic¸in, ayrıca kendilerine g ¨onderilecek olan bas¸lama mesajını beklerler.

T ¨um k ¨ole s ¨urec¸lerde karınca threadleri yaratıldıktan sonra, k ¨ole s ¨urec¸lere, karıncaların d ¨u ˘g ¨umlerde dolas¸malarını bas¸latacak olan sim ¨ulasyonu bas¸lat emri g ¨onderilir. Bu as¸amadan sonra, merkez uygulama, sahada gezinen karıncalar ic¸in gerekecek d ¨u ˘g ¨um bilgilerinin karıncalara aktarılmasını sa ˘glayan bir sonsuz d ¨ong ¨u ic¸ine girer.

Gelen isteklerin sınıflandırmasının kolay yapılabilmesi ic¸in, her bir is¸lem grubuna ayrı bir mesaj etiketi verilmis¸tir. Seri algoritma ic¸inde aynı hafıza alanında bulunan karıncalar ve d ¨u ˘g ¨umler arasında bu etkiles¸im kolaylıkla sa ˘glanmaktadır.

Paralel y ¨ontemde, d ¨u ˘g ¨umler ve karıncalar farklı hafıza alanlarındadır. Bu nedenle merkezi s ¨urecin hafıza alanında bulunan d ¨u ˘g ¨umlerin bilgilerinin g ¨uncellenmesi is¸lemi, karıncalar tarafından, g ¨uncellenmesi gereken bilginin, ya da g ¨uncelleme ic¸in kullanılacak olan verinin merkez s ¨urece g ¨onderilerek, merkez s ¨urec¸ tarafından d ¨u ˘g ¨ume uygulanması ile gerc¸eklenmis¸tir. As¸a ˘gıda, uygulamada kullanılan mesaj etiketleri ve ac¸ıklamaları bulunmaktadır:

GETMINPH : D ¨u ˘g ¨um ¨un koms¸ularına ait en k ¨uc¸ ¨uk feromon de ˘gerine sahip olan d ¨u ˘g ¨um numarası iste ˘gi. Karınca tarafından merkeze g ¨onderilir. Mesaj ic¸inde, karıncanın ¨uzerinde bulundu ˘gu d ¨u ˘g ¨um ¨un numarası ve bir ¨onceki adımda ¨uzerinde bulundu ˘gu d ¨u ˘g ¨um ¨un numarası bulunur.

SENDMINPH : En d ¨us¸ ¨uk feromon de ˘gerine sahip olan d ¨u ˘g ¨um numarasını, GETMINPH etiketli mesajla isteyen karıncaya g ¨onderir. Merkez tarafından karıncaya g ¨onderilir. Mesaj ic¸inde karıncanın ¨uzerinde bulundu ˘gu d ¨u ˘g ¨um ¨un koms¸uları ic¸inde en d ¨us¸ ¨uk feromon de ˘gerine sahip olan d ¨u ˘g ¨um ¨un numarası bulunur.

GETMAXPH : D ¨u ˘g ¨um ¨un koms¸ularına ait en y ¨uksek feromon de ˘gerine sahip olan d ¨u ˘g ¨um numarası iste ˘gi. Karınca tarafından merkeze g ¨onderilir. Mesaj ic¸inde, karıncanın ¨uzerinde bulundu ˘gu d ¨u ˘g ¨um ¨un numarası bulunur.

SENDMAXPH : En y ¨uksek feromon de ˘gerine sahip olan d ¨u ˘g ¨um numarasını, GETMAXPH etiketli mesajla isteyen karıncaya g ¨onderir. Merkez tarafından karıncaya g ¨onderilir. Mesaj ic¸inde karıncanın ¨uzerinde bulundu ˘gu d ¨u ˘g ¨um ¨un koms¸uları ic¸inde en y ¨uksek feromon de ˘gerine sahip olan d ¨u ˘g ¨um ¨un numarası bulunur.

GETPROBNEXTNODE : Karıncanın bir sonraki adımda hangi koms¸u d ¨u ˘g ¨ume gidece ˘gini hesaplaması ic¸in merkez g ¨onderdi ˘gi mesaj. Karıncadan merkeze g ¨onderilir. Mesaj ic¸inde karıncanın terk etmek ¨uzere oldu ˘gu d ¨u ˘g ¨um ¨un numarası bulunur.

SENDPROBNEXTNODE : Merkezin d ¨u ˘g ¨um matrisini kullanarak istek yapan karıncanın bir sonraki adımda hangi d ¨u ˘g ¨ume gidece ˘gini karıncaya bildirirken kullandı ˘gı mesaj etiketi. Merkezden karıncaya g ¨onderilir. Karıncanın bir sonraki adımda hangi d ¨u ˘g ¨ume gidece ˘gi bilgisi g ¨onderilir.

GETPH : Karıncanın, bir d ¨u ˘g ¨um ¨un feromon de ˘gerini ¨o ˘grenmek istedi ˘ginde merkeze g ¨onderdi ˘gi mesaj etiketi. Karıncadan merkeze g ¨onderilir. Mesaj ic¸inde, hangi d ¨u ˘g ¨um ¨un feromon de ˘gerinin istendi ˘gi bulunur.

SENDPH : Merkezin, bir d ¨u ˘g ¨um ¨un feromon de ˘gerini ilgili karıncaya g ¨onderirken kullandı ˘gı mesaj etiketi. Merkezden karıncaya g ¨onderilir. Mesaj ic¸inde, karınca tarafından istenen d ¨u ˘g ¨um ¨un feromon de ˘geri bulunur.

GETDATA : Karıncanın, bir d ¨u ˘g ¨um ¨un hedef olup olmadı ˘gını belirleyen bilgisini merkezden sorarken kullandı ˘gı etiket. Karıncadan merkeze g ¨onderilir. Mesaj ic¸inde, bilgisi istenen d ¨u ˘g ¨um ¨un numarası bulunur.

SENDDATA : Merkezin, ilgili karıncaya d ¨u ˘g ¨um ¨un hedef bilgisini g ¨onderirken kullandı ˘gı etiket. Merkezden karıncaya g ¨onderilir. Mesaj ic¸inde, d ¨u ˘g ¨um ¨un hedef bilgisi bulunur.

UPDATEPH : Karıncanın d ¨u ˘g ¨um ¨un feromon de ˘gerini g ¨uncellemek ic¸in g ¨onderdi ˘gi etiket. Karıncadan merkeze g ¨onderilir. Mesaj ic¸inde, feromon de ˘geri g ¨uncellenecek olan d ¨u ˘g ¨um ¨un numarası ve g ¨uncellemede kullanılacak olan, karıncanın adım sayısı bilgisi vardır.

SETPH : Karıncanın, bir d ¨u ˘g ¨um ¨un feromon de ˘gerini ataması ic¸in kullanılır. Karıncadan merkeze g ¨onderilir. Mesaj ic¸inde, feromon de ˘geri de ˘gis¸tirilecek olan d ¨u ˘g ¨um numarası ve yeni feromon de ˘geri bulunur.

GETNODE : Karıncanın, yeni bir d ¨u ˘g ¨ume geldi ˘ginde, ilgili d ¨u ˘g ¨um nesnesini istemek ic¸in kullandı ˘gı etiket. Karıncadan merkeze g ¨onderilir. Mesaj ic¸inde, iste ˘gi yapan karınca threadinin numarası ve bilgisi istenen d ¨u ˘g ¨um ¨un numarası bulunur.

SENDNODE : Merkez, kendisinden istenen d ¨u ˘g ¨um bilgisini, ilgili k ¨ole sunucuya g ¨onderir. Merkezden karıncaya g ¨onderilir. Mesaj ic¸inde d ¨u ˘g ¨um nesnesi bulunur.

FINALIZE : Sim ¨ulasyonu sonlandırmak ic¸in g ¨onderilir.

Merkezde c¸alıs¸an uygulama, yukarıdaki mesajları bekleyip, gelen mesajın ic¸eri ˘gine g ¨ore ilgili s ¨urece gereken bilgileri g ¨onderir. Burada ¨onemli olan nokta, seri algoritmada aynı hafıza alanında bulunan bilgilerin, paralel uygulamada farklı hafıza alanlarına tas¸ınabilmis¸ olmasıdır. B ¨oylece, sisteme eklenebilecek olan karınca sayısı, sisteme

0 5 10 15 20 25 30 35 40 45 50 X koordinat 0 5 10 15 20 25 30 35 40 45 50 Y koordinat 0 0.5 1 1.5 2 Ph

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

eklenebilecek hesaplama sunucu sayısına g ¨ore lineer artabilecektir. Burada sınırlanan di ˘ger veri ise, merkez s ¨urec¸ tarafından g ¨uncellenen d ¨u ˘g ¨um bilgileridir. D ¨u ˘g ¨um bilgilerinin de karıncalar gibi da ˘gıtılabilece ˘gi g ¨oz ¨on ¨une alındı ˘gında, seri algoritmanın hem hesaplama ihtiyacı, hem de hafıza kısıtları nedeniyle ulas¸amayaca ˘gı sim ¨ulasyon b ¨uy ¨ukl ¨uklerine kolaylıkla ulas¸ılabilecektir. Testlerde, 50x50 d ¨u ˘g ¨um matrisi ¨uzerinde 4096 karınca ic¸eren sim ¨ulasyonlar bas¸arıyla kos¸turulmus¸tur. Test sırasında kullanılan sistem, 16 is¸lemcili 64 GB hafızaya sahip bir SMP sistemdir. Masa ¨ust ¨u sistemlerde yapılan denemelerde, is¸letim sisteminin ayarlamalarına g ¨ore, bir s ¨urec¸ ic¸inde 256’ya kadar thread kolaylıkla c¸alıs¸tırılabilmis¸tir. Bu durumda, sisteme eklenecek her bir is¸lemci ic¸in, ek 256 karınca daha kos¸turulabilecektir. 512 c¸ekirdekli da ˘gıtık bir sistemde, 131.072 karınca threadi kos¸turmak m ¨umk ¨un olabilecektir.

Benzer Belgeler