verimli paralel algoritmaları karakterize etmenin en iyi yolu olmadığını kabul ediyorum .NC
Gerçekten de, NC tanımı gereği, etkili bir şekilde paralelleştirilemeyen birçok problemi de içerir. Yaygın bir örnek paralel ikili aramadır. Sorun, paralel ikili aramanın için bile polilogaritmik zaman karmaşıklığına sahip olması nedeniyle ortaya çıkar . En kötü durumda en logaritmik zamanda gerektiren herhangi bir ardışık filtreleme yöntemi bağımsız olarak paralel fizibilite.N Cp=1NC
Ama bekleyin, dahası var.
NC algoritmaları, polilogaritmik zaman orta boyutlu problemleri çözmek için polinom sayıda işlemciye sahip paralel makineler olduğunu varsayar. Bununla birlikte, pratikte büyük sorunları çözmek için orta büyüklükteki makineleri (işlemciler açısından) kullanıyoruz . İşlemci sayısı alt polinom, hatta alt doğrusal olma eğilimindedir.
Son olarak, problemler vardır sublinear paralel defasında .Bu nedenle, bu sorunlar ait olmayan . Şimdi, alt doğrusal fonksiyonlar sadece pratik olmayan büyük değerleri için ilgili bir asimptotik davranışa sahip olabilir ve bunun yerine pratik değerleri için çok daha az ilerici olabilir . Örnek olarak, için . Sublinear paralel zaman algoritmaları izler olabilir daha hızlı koşmak algoritmaları.O ( n ϵ ) , 0 < ϵ < 1 N C n n √PO(nϵ),0<ϵ<1NCnnn≤0,5×109NCn−−√<lg3nn≤0.5×109NC
Yanıtlardan birinde, "Uygulamada, bu, giriş boyutu büyüdükçe daha fazla belleğe sahip bir bilgisayar hazırlayabildiğimiz, yani gerçek dünyadaki bilgisayarları bu şekilde kullandığımız anlamına gelir. NC, paralel hesaplama.
Bu bakış açısına kısmen katılıyorum. Eski bir süper bilgisayar hizmet dışı bırakıldığında da daha fazla belleğe sahip yeni bir paralel bilgisayar satın alıyoruz, çünkü DRAM yongaları zamanla daha ucuz ve paralel bilgisayarı ana bileşenleri (işlemciler, bellek, ara bağlantı vb.) Açısından dengelemek.
Bununla birlikte, bellek sınırlı bir kaynak olduğundan, bir sorunun daha büyük örneklerini çözmek için bir süper bilgisayara daha fazla bellek eklemeye gerek kalmadan, verimli bir şekilde kullanılması hakkında çok fazla araştırma yapılmıştır. Örneğin Sun ve Ni, bellekle sınırlı hızlanma kavramını önerdi ve Quinn, sabit bir verimlilik düzeyini korumak için işlemci başına bellek miktarının nasıl büyümesi gerektiğini ölçen ölçeklenebilirlik işlevini önerdi. Genel olarak, işlemci sayısı arttıkça paralel ek yük arttığından, çözülmekte olan sorunun boyutunu artırarak verimliliği sürdürürüz. Ancak maksimum sorun boyutu ana bellek miktarı ile sınırlıdır (n pp). Ölçeklenebilirlik işlevi, sabit bir verimlilik düzeyini korumak için işlemci başına bellek miktarının nasıl büyümesi gerektiğini belirlemek için boyutunda bir sorunu saklamak için gereken bellek miktarını gösteren eşdeğerlik işlevini ve başka bir işlevi kullanır . Bu işlev sabit olduğunda, paralel algoritma mükemmel şekilde ölçeklenebilir (bellek perspektifinin kullanımından). Bellek mevcut olsa da, sorun boyutunu artırarak aynı verimlilik seviyesini korumak mümkündür. Ancak, işlemci başına kullanılan bellek ile doğrusal olarak arttığından , bir noktada bu değer sistemin bellek kapasitesine ulaşacaktır. İşlemci sayısı bu noktanın üzerine çıktığında verimlilik sağlanamaz.np
Bu nedenle, bunlar büyük sorunlar için pratik olduğundan bellekte ölçeklenebilir paralel algoritmalar tasarlamak giderek daha önemlidir.
Paralel algoritmaların ölçeklendirilmesine ilişkin son bir not. Bu sadece ölçeklendirmek istediğimiz paralel algoritmanın uygun maliyetli olması durumunda mantıklıdır. Uygun maliyetli bir algoritmanın ölçeklendirilmesi hala hızlı (orijinalinden yavaşsa) bir algoritma üretir. Ancak olmayan bir maliyet uygun algoritma küçültme (bir küçültme dikkate yavaş iyi ardışık çalışma süresi daha paralel bir algoritmaya yol açabilir için sıralama algoritması işlemci sabit zaman işlemciler). Maliyet optimizasyonunun kaçırılma derecesi, bir algoritmanın faydalı olduğu problem aralığını ve makine boyutlarını etkiler ve Grama, Gupta, Karypis ve Kumar'ın ders kitabında iyi tanımlanmıştır. nn3n