S OYUT M ODELLER (A BSTRACT M ODELS ) Murat Olcay ÖZCAN Trakya Üniversitesi Bilgisayar Mühendisliği Anabilim Dalı
S OYUT M ODELLER Bu bölümde hem paylaşılan bellek hem de mesaj aktarım sistemleri için soyut modelleri inceleyeceğiz. Bir çok paralel ve dağıtık algoritmaları inceleyerek bu modelleri kullanarak karmaşıklıklarını hesaplayacağız.
İlk bakışta soyut modellerin idealist yapıları gereği gerçek hayat durumlarına uygun olmadıkları düşünülse de, soyut makineler paralel ve dağıtık algoritmaları incelerken ve gerçek makinelerden bağımsız performanslarını ölçerken çok yararlıdır. Eğer bir algoritmanın performansı soyut bir sistemde tatmin edici değilse, gerçek sisteme uygulanması da anlamsız olacaktır.
PRAM M ODEL VE V ARYASYONLARı Teorik modellerin paralel programlamadaki önemi algoritmaları tanımlayıp analiz etmek için bir çatı sağlamasıdır. En çok kullanılan modellerden biri parallel random access machine (PRAM) modelidir. PRAM bir kontrol birimi, p tane işlemci tarafından paylaşılan bir genel bellekten oluşur. Her işlemcinin haberleşebileceği genel bellek dışında kendi özel belleği de vardır.
PRAM
PRAM A LTSıNıFLARı EREW PRAM ERCW PRAM CREW PRAM CRCW PRAM
EREW PRAM DA ÇOKLU ERİŞİMLERİN SİMULE EDİLMESİ Dört altsınıf içinde en kısıtlayıcısı EREW PRAM’dır. Bir zamanda, verilen bir bellek alanına sadece bir işlemci yazabilir yada okuyabilir. Bu model için şu algoritma kullanılabilir:
P ARALEL A LGORITMALARıN A NALIZI Ardışık bir algoritmanın karmaşıklığı genel olarak zaman karmaşıklığı ve alan karmaşıklığı ile ölçülür. Zaman karmaşıklığı; genel bir problemin bir örneğini, en verimli algoritma ile çözmek için izlenen adımların, girdi miktarı cinsinden bir fonksiyon ile ifade edilmesidir. Mesela n uzunluğu da bir girdi verildiğinde log(n) adımda çözümlenen bir problem, log(n) zaman karmaşıklığına sahiptir. Tabi ki kaç adımda hesaplanacağı, algoritmanın çalıştırıldığı makineye veya kodlandığı dile de bağlıdır; ama bunlardan bağımsız olması için birazdan bahsedeceğim "Büyük O Gösterimi" (Big O Notation) gibi genellemeye yarayan gösterimler vardır. Alan karmaşıklığı ise, bir algoritmanın kullandığı alan veya bellek miktarıyla ilgilidir. O da Büyük O gösterimi ile ölçülür.
T OPLAM VE T ÜM T OPLAMALARıN H ESAPLANMASı Bu bölümde bir sayı dizisinin tüm toplamlarını ve tüm kısmi toplamlarını hesaplayan bir PRAM algoritması dizayn edeceğiz. Tüm toplamı hesaplayan algoritma şöyle olur.
Karmaşıklık Analizi: Çalışma Zamanı, T (n)= O (log n) İşlemci Sayısı, P (n)=n/2 Maliyet, C (n)= O (n log n)
K ıSMI T OPLAMLARı H ESAPLAYAN A LGORITMA Karmaşıklık Analizi: Çalışma Zamanı, T (n)= O (log n) İşlemci Sayısı, P (n)=n-1 Maliyet, C (n)= O (n log n)
M ATRIX Ç ARPıMı Bu bölümde paralel olarak matrix çarpımı üzerinde çalışacağız. İki n x n matrisi çarpan bir algoritma tanımlayacağız. Anlaşılırlık için n’i 2 nin katı olarak kabul edeceğiz. Algoritmanın n 3 işlemci ile çalışan bir CREW PRAM üzerinde tanımlayacağız.
Karmaşıklık Analizi: Çalışma Zamanı, T (n)= O (log n) İşlemci Sayısı, P (n)= n 3 Maliyet, C (n)= O (n 3 log n)
S ıRALAMA Burada belirttiğimiz algoritma enumeration fikri üzerine kurulmuştur. Algoritma n 2 işlemcili CRCW PRAM üzerinde tanımlanmıştır. Karmaşıklık Analizi: Çalışma Zamanı, T (n)= O (1) İşlemci Sayısı, P (n)= n 2 Maliyet, C (n)= O (n 2 )
B ASIT L IDER S EÇIM A LGORITMASı Bu algoritmanın fikri; her süreç halka boyunca kendi tanımlayıcısını gönderir. Kendi tanımlayıcısı geri alan süreç lider olarak ilan edilir. Şunları varsayıyoruz: İletişim tek yönlüdür. (saat yönünde) Halkanın büyüklüğü bilinmemektedir. Her sürecin tanımlayıcısı farklıdır.
Karmaşıklık Analizi: Çalışma Karmaşıklığı: O (n) Mesaj Karmaşıklığı: O (n 2 )
GELİŞMİŞ LİDER SEÇİM ALGORİTMASI Mesaj karmaşıklığını düşürmek için, bir süreç kendi ID’sini tüm halka boyunca göndermek zorunda değildir. Bunun yerine bir süreç mesajlarını belli bir uzaklık içindeki komşularına gönderir. Şunları varsayıyoruz: İletişim tek yönlüdür. Halkanın büyüklüğü bilinmemektedir. Her sürecin tanımlayıcısı farklıdır.
Karmaşıklık Analizi: Çalışma Karmaşıklığı: O (n) Mesaj Karmaşıklığı: O (n log n )