620 likes | 888 Views
Giriş ve Motivasyon. Onur Temizsoylu BAŞARIM09 ODT Ü , Ankara. İçerik. Neden paralel hesaplama? Terminoloji Paralel hesaplamanın tarihi Teori: Hızlanma, Amdahl Yasası Sınıflandırma Yönetim Modelleri Programlama Modelleri Paralel Donanım Mimarileri Paralel Uygulamalar
E N D
Giriş ve Motivasyon Onur Temizsoylu BAŞARIM09 ODTÜ, Ankara
İçerik • Neden paralel hesaplama? • Terminoloji • Paralel hesaplamanın tarihi • Teori: • Hızlanma, Amdahl Yasası • Sınıflandırma • Yönetim Modelleri • Programlama Modelleri • Paralel Donanım Mimarileri • Paralel Uygulamalar • Örnek Problemler BAŞARIM09, 18 Nisan 2009
Neden Paralel Hesaplama • Hesaplama ihtiyaçları, gün geçtikçe artmaktadır. Daha yüksek frekanslı sensörler, görselleştirme kalitesinin artması, dağıtık veri tabanları buna birer örnektir. • Diğer taraftan işlemci teknolojisi fiziksel limitlerine (termodinamik, ışık hızı, CMOS transistörler) yaklaşmaktadır. • Paralel hesaplama, daha hızlı sonuç almak için bir uygulamaya ait program parçalarının birden fazla işlemcide aynı anda çalıştırılmasıdır. • Ağ teknolojilerindeki hızlı gelişmeler paralel hesaplama için kolay edinilebilir ve ulaşılabilir donanımlara izin vermektedir. BAŞARIM09, 18 Nisan 2009
Moore Yasası (?) • Intel’in kurucularından Gordon E. Moore tarafından ortaya atılmıştır. • “Mikroişlemciler içindeki transistör sayısı her iki yılda bir iki katına çıkacaktır.” • Buna bağlı olarak işlemci hızlarının da iki katına çıkması beklenmektedir. • Ucuz CMOS transistörlerle üretim, 2008 yılı içinde 45nm üretim teknolojisi bile kullanılsa da hız artışının sonu gelmektedir. • Intel, çok çekirdekli işlemciler ile Moore yasasını geçerli kılmaya çalışmaktadır. BAŞARIM09, 18 Nisan 2009
Butters Yasası • Ağ dünyasında ise Gerald Butters her dokuz ayda tek bir fiber kablodan geçebilecek veri miktarının iki katına çıktığını öne sürmüştür. • Özellikle WDM teknolojisi ile optik kablolar üzerinden transfer edilebilecek veri miktarı artmaktadır. • İşlemcilerden farklı olarak farklı dalga boylarında çalışan lazer ışığı kullanıcı farkında olmadan birleştirilmektedir. • Lokal ve geniş ağlardaki hızlı teknoloji değişimi ile paralel hesaplama için küme bilgisayarlar, grid hesaplama gibi yöntem ve mimariler ortaya çıkmıştır. BAŞARIM09, 18 Nisan 2009
Terminoloji • Süreç (“Process”) • İş Parçacığı (“Thread”) • Görev (“Task”) • Hızlanma (“Speedup”) • Ölçeklenebilirlik (“Scalability”) • Verimlilik • Senkronizasyon (“Synchronization”) • Paralel Ek Yükü (“Parallel Overhead”) • Süperbilgisayar BAŞARIM09, 18 Nisan 2009
Paralel Hesaplamanın Tarihi BAŞARIM09, 18 Nisan 2009
Paralel Hesaplamanın Tarihi • TOP500 Listesine göre son 15 sene içinde süperbilgisayar sistemlerinde mimari değişimi BAŞARIM09, 18 Nisan 2009
Paralelleştirme • Bir işin paralelleştirilmesinde programın toplam çalışma zamanını azaltmak amaçlanır. BAŞARIM09, 18 Nisan 2009
İşlemci Zamanı Haberleşme Ek Yükü 4 işlemci 8 işlemci 2 işlemci 1 işlemci Çalışma Zamanında Azalma Çalışma Zamanı Paralelleştirme Ek Yükü • Ek yük: • İşlemcilerde fazladan geçen süre • İletişim ek yükü • Senkronizasyon ek yükü • Programın paralel olmayan/ olamayan parçaları • Paralel programlamada ek yük ve çalışma zamanı hızlanma ve verimlilik ile ifade edilir. BAŞARIM09, 18 Nisan 2009
Hızlanma Verimlilik ideal 1 Süper-lineer Saturasyon Felaket İşlemci Sayısı İşlemci Sayısı Hızlanma ve Verimlilik • İ sayıda işlemcide programın toplam işlemci zamanını Z(i) olarak ifade edelim. Hızlanma (i) = Z(1) / Z(i) Verimlilik (i) = Hızlanma (i) / i • İdeal durumda: Z (i) = Z (1) / i Hızlanma (i) = i Verimlilik (i) = 1 • Ölçeklenebilir programlar büyük işlemci sayılarında bile verimli kalırlar. BAŞARIM09, 18 Nisan 2009
Amdahl Yasası • Amdahl yasası: • “Kodun paralel olmayan kısmı (ek yük), kodun ölçeklenebilirliği konusunda üst limiti oluşturur.” • Kodun seri kısmını s, paralel kısmını p olarak ifade edersek: 1= s + p Z (1) = Z (s) + Z (p) = Z (1) * (s + p) = Z (1) * (p + (1-p)) Z (i) = Z (1) * (p/i + (1-p)) Hızlanma (i) = Z (1) / Z (i) = 1 / (p/i + 1 – p) Hızlanma (i) < 1 / (1 - p) BAŞARIM09, 18 Nisan 2009
8.0 7.0 6.0 0% 20% 40% 60% 80% 100% 5.0 4.0 3.0 2.0 1.0 Pratikte • Pratikte programları paralelleştirmek Amdahl yasasında görüldüğü kadar zor değildir. • Ancak programın çok büyük bir kısmını paralel işlem için harcaması gereklidir. Hızlanma P=8 P=4 P=2 Kodda Paralel Kısım 1970s David J. Kuck, Hugh Performance Computing, Oxford Univ.. Press 1996 1980s En iyi paralel kodlar 1990s ~99% diliminde BAŞARIM09, 18 Nisan 2009
Coarse-grained Ana Program A B C D E F G H I J K L M N O p q r s Fine-grained t Coarse/Fine Grained Paralel • Fine-Grained: • Genelde her döngüde paralelleştirme vardır. • Çok sayıda döngü paralleleştirilir. • Kodun çok iyi bilinmesine gerek yoktur. • Çok fazla senkronizasyon noktası vardır. • Coarse-Grained: • Geniş döngülerle paralleştirme yapılır. • Daha az senkronizasyon noktası vardır. • Kodun iyi anlaşılması gerekir. BAŞARIM09, 18 Nisan 2009
i0 i1 i2 i3 başlangıç bitiş Çalışma Zamanı Ölçeklenebilirlik • Ölçeklenebilirliği etkileyen diğer faktörler: • İş parçacıkları arası yük dengesizliği : Bir kodun herhangi bir paralel kısmının çalışma zamanı en uzun süren iş parçacığının çalışma zamanıdır. Coarse-Grained programlamada ortaya çıkması daha olasıdır. • Çok fazla senkronizasyon: Kodda küçük döngüler sırasında her seferinde senkronizasyon yapılırsa bu ek yük getirir. Fine-Grained programlamada ortaya çıkması daha olasıdır. BAŞARIM09, 18 Nisan 2009
Flynn Sınıflandırması • Michael J. Flynn paralel bilgisayar mimarilerini komut ve veri akışlarına göre sınıflandırmıştır: • SISD (Single Instruction, Single Data) • PCler, iş istasyonları • SIMD (Single Instruction, Multiple Data) • Vektör makineler, Intel SSE • MISD (Multiple Instruction, Single Data) • Çok fazla örneği yok • MIMD (Multiple Instruction, Multiple Data) • SGI sunucular, küme bilgisayarlar BAŞARIM09, 18 Nisan 2009
Komutlar İşlemci Veri Çıkışı Veri Girişi SISD BAŞARIM09, 18 Nisan 2009
Komut Akışı A Komut Akışı B Komut Akışı C İşlemci A Çıktı Verisi Girdi Verisi İşlemci B İşlemci C MISD BAŞARIM09, 18 Nisan 2009
Komut Akışı Çıktı Akışı A Girdi Akışı A İşlemci A Çıktı Akışı B İşlemci B Girdi Akışı B Çıktı Akışı C İşlemci C Girdi Akışı C SIMD BAŞARIM09, 18 Nisan 2009
MIMD Komut Akışı A Komut Akışı C Komut Akışı B Çıktı Akışı A Girdi Akışı A İşlemci A Çıktı Akışı B İşlemci B Girdi Akışı B Çıktı Akışı C İşlemci C Girdi Akışı C BAŞARIM09, 18 Nisan 2009
BELLEK BELLEK BELLEK YOLU YOLU YOLU Ortak Bellek MIMD İşlemci A İşlemci B İşlemci C Bellek BAŞARIM09, 18 Nisan 2009
BELLEK BELLEK BELLEK YOLU YOLU YOLU BELLEK A BELLEK B BELLEK C Dağıtık Bellek MIMD IPC Kanalı IPC Kanalı İşlemci A İşlemci B İşlemci C BAŞARIM09, 18 Nisan 2009
Terminoloji - II • Son senelerde ağ hızındaki önemli artış ve çoklu çekirdekli işlemcilerin kullanılmaya başlaması ile paralel hesaplama konusunda birçok terminoloji karışıklığı olmaya başlamıştır. MPP, küme bilgisayarlarla hesaplama, dağıtık hesaplama, grid hesaplama... • Paralel hesaplamada yaygın kullanılan terimlerden bazıları şunlardır: • Multiprocessing: İki veya daha fazla işlemcinin aynı bilgisayar sistemi içinde kullanılmasıdır. • Dağıtık hesaplama: Ağ üzerinden iki veya daha fazla bilgisayar üzerinde aynı anda belli bir programa ait parçaların çalıştırıldığı hesaplama. BAŞARIM09, 18 Nisan 2009
Paralel Programlama Modelleri • Ortak Hafıza Modelleri • Dağıtık Ortak Bellek • Posix Threads • OpenMP • Java Threads (HKU JESSICA, IBM cJVM) • Mesaj Tabanlı Modeller • PVM • MPI • Hibrid Modeller • Ortak ve dağıtık hafızayı birlikte kullananlar • OpenMP ve MPI birlikte kullananlar • Nesneve Servis Tabanlı Modeller • Geniş alanda dağıtık hesaplama teknolojileri • Nesne: CORBA, DCOM • Servis: Web servisleri tabanlı • Bilimsel araştırma projelerinde sıklıkla • Derleyici tarafından paralelleştirilen ortak bellek tabanlı programlar • MPI gibi mesaj paylaşımı tabanlı programlar kullanılmaktadır. • Belirli bir programlama modelinin seçimi, genellikle uygulama gereksinimi, kişisel tercih veya donanımla ilgilidir. • Ortak hafızaya sahip makineler, hem OpenMP gibi SMP hem de MPI gibi mesaj paylaşımı tabanlı modelleri çalıştırabilirler. BAŞARIM09, 18 Nisan 2009
1 p= =S 4 dx (1+x2) 0<i<N 0 4 N(1+((i+0.5)/N)2) p sayısını OpenMP ile hesaplamak #define n 1000000 main() { double pi, l, ls = 0.0, w = 1.0/n; int i; #pragma omp parallel private(i,l) reduction(+:ls) { #pragma omp for for(i=0; i<n; i++) { l = (i+0.5)*w; ls += 4.0/(1.0+l*l); } #pragma omp master printf(“pi is %f\n”,ls*w); #pragma omp end master } } • Seri programlama şeklinde yazılıyor • Otomatik yük dağılımı yapılıyor. • Bütün değişkenler paylaşılıyor. BAŞARIM09, 18 Nisan 2009
1 p= =S 4 dx (1+x2) 0<i<N 0 4 N(1+((i+0.5)/N)2) p sayısını MPI ile hesaplamak #include <mpi.h> #define N 1000000 main() { double pi, l, ls = 0.0, w = 1.0/N; int i, mid, nth; MPI_init(&argc, &argv); MPI_comm_rank(MPI_COMM_WORLD,&mid); MPI_comm_size(MPI_COMM_WORLD,&nth); for(i=mid; i<N; i += nth) { l = (i+0.5)*w; ls += 4.0/(1.0+l*l); } MPI_reduce(&ls,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); if(mid == 0) printf(“pi is %f\n”,pi*w); MPI_finalize(); } • Önce iş parçacıkları belirleniyor • Bütün değişkenler sürece özel kalıyor. • Uygulama dışında yük dağılımı ve veri paylaşımı yapılıyor. BAŞARIM09, 18 Nisan 2009
Paralel Uygulamalarda Bağlantı • Sıkı bağlı sistemler: • Süreçler arasında yoğun haberleşme • Gecikme süresine hassas • Ortak Bellek Paralel • Dağıtık Bellek Paralel BAŞARIM09, 18 Nisan 2009
Paralel Uygulamalarda Bağlantı • Gevşek bağlı sistemler: • Süreçler arasında haberleşme azdır veya hiç yoktur. • Gecikme süresine hassas değillerdir. Ancak bant genişliği veri transferi için etkili olabilir. • Parametrik çalışan uygulamalar • Süreçler arasında haberleşme yoktur. • Kümelerde, grid altyapılarında çalışan uygulamaların çoğunluğunu oluştururlar. BAŞARIM09, 18 Nisan 2009
Paralel Donanım Mimarileri • SMP makineler • MPP makineler • NUMA makineler • Superscalar işlemciler • Vektör makineler • Küme bilgisayarlar BAŞARIM09, 18 Nisan 2009
SMP • SMP, birden fazla eş işlemcinin ortak bir belleğe bağlandığı çok işlemcili bir bilgisayar mimarisidir. • SMP sistemler, görevleri işlemciler arasında paylaşabilirler. • SMP sistemler, paralel hesaplama için kullanılan en eski sistemlerdir ve hesaplamalı bilimlerde yoğun bir şekilde kullanılırlar. BAŞARIM09, 18 Nisan 2009
MPP • MPP, binlerce işlemci kullanılabilen çok işlemcili bir mimaridir. • Bir MPP sisteminde her işlemci kendi belleğine ve işletim sistemi kopyasına sahiptir. • MPP sistemler üzerinde çalışacak uygulamalar eş zamanda çalışacak eş parçalara bölünebilmelidirler. • MPP sistemlere yeni işlemci ekledikten sonra uygulamalar yeni paralel kısımlara bölünmelidirler. SMP sistemler ise bundan çok iş parçacığı çalıştırabilir yapıları sayesinde hemen faydalanırlar. BAŞARIM09, 18 Nisan 2009
NUMA • NUMA, çok işlemcili makinelerde bellek erişim zamanının bellek yerine göre değiştiği bir bellek tasarımıdır. • İlk defa 1990’larda ortaya çıkmıştır. • Modern işlemciler, belleklere hızlı bir şekilde erişmeye ihtiyaç duyarlar. NUMA, istenen verinin “cache” bellekte bulunamaması, belleğin başka işlemci tarafından kullanılması gibi performans sorunlarını her işlemciye bellek vererek aşar. • Intel Itanium, AMD Opteron işlemciler ccNUMA tabanlıdır. BAŞARIM09, 18 Nisan 2009
Superscalar İşlemciler • 1998 senesinden beri üretilen bütün genel amaçlı işlemciler “superscalar” işlemcilerdir. • “Superscalar” işlemci mimarisi, tek bir işlemcide makine kodu seviyesinde paralellik sağlar. • “Superscalar” bir işlemci tek bir basamakta birden fazla işlem yapar. BAŞARIM09, 18 Nisan 2009
Vektör Makineler • Vektör işlemciler, aynı anda birden fazla veri üstünde matematik işlem yapabilen işlemcilerdir. • Şu anda süperbilgisayar dünyasında vektör işlemciler çok az kullanılmaktadırlar. • Ancak bugün çoğu işlemci vektör işleme komutları içermektedirler (Intel SSE). • Vektör işlemciler, aynı matematiksel komutu farklı veriler üzerinde defalarca çalıştırmak yerine bütün veri yığınını alıp aynı işlemi yapabilirler. BAŞARIM09, 18 Nisan 2009
Küme Bilgisayarlar • Hesaplamada küme bilgisayar kullanımı 1994 senesinde NASA’da Beowulf projesi ile başlamıştır. 16 Intel 486 DX4 işlemci ethernet ile bağlanmıştır. • Yüksek performanslı hesaplama, artık küme bilgisayarlarla hesaplama halini almıştır. • Küme bilgisayar, birlikte çalışmak üzere bağlanmış birden fazla sunucudan oluşur. • En önemli dezavantajı kullanıcıya tek sistem arayüzü sunamamasıdır. BAŞARIM09, 18 Nisan 2009
Neden kümeleme? • Fiyat / performans • Standardı oturmuş işletim sistemi, mesajlaşma gibi yazılım katmanları (Linux, MPI, OpenIB) • Genişleyebilir, standardı oturmuş bağlantı teknolojileri (Gigabit Ethernet, Infiniband, 10 Gigabit Ethernet) • Son senelerde süperbilgisayarların büyük bir kısmı küme bilgisayarlardan oluşmaktadır: BAŞARIM09, 18 Nisan 2009
Kümeleme nedir? • Kümeleme iki veya daha fazla bilgisayarı: • Uygulama veya servis kullanılabilirliğini arttırmak için, • Yük dengelemek için, • Dağıtık ve yüksek başarımlı hesaplama için ağ ile birleştirmektir. • Kümeleme değişik sistem katmanlarında gerçekleştirilebilir: • Depolama: Paylaşılmış disk, ikizlenmiş disk, paylaşılmayan veri • İşletim Sistemi: UNIX/Linux kümeleri, Microsoft (?) kümeleri • Uygulama Programlama Arayüzü: PVM, MPI • Uygulamalar BAŞARIM09, 18 Nisan 2009
Dezavantajları • Küme bilgisayarların önemli mimari dezavantajları vardır: • Ortak bellek yoktur. • İletişim bellek okuma/yazma hızına göre yavaştır. • Bu kısıtlamalar uygulama için önemlidir. Uygulamanın bunlara göre de geliştirilmesi gerekebilir. • Güç ve klima için genelde daha fazla miktarda bütçe gerekir. • Ölçeklenebilirlik yakalamak bazı uygulamalar için zordur. BAŞARIM09, 18 Nisan 2009
HA – Yüksek Kullanılabilirlik Kümeleri • HA kümeleri, servislerin ayakta kalma sürelerini arttırmak içindir. • Aynı servisin birden fazla kopyası çevrimiçi veya çevrimdışı bekletilir. Serviste bir sorun olduğu zaman devreye alınır. • Linux-HA projesi, sıklıkla bu amaçla kullanılan bir yazılımdır. BAŞARIM09, 18 Nisan 2009
Yük Dengeleme için Kümeleme • Yük dengeleme kümeleri, ön arayüzden gelen bütün iş yükünü karşılayıp arkadaki sunuculara aktarırlar. • Bu kümeler, sunucu çiftliği olarakta adlandırılırlar. • LSF, MAUI, Sun Grid Engine gibi birçok yük dengeleyici yazılım vardır. • “Linux Virtual Server” projesi de oldukça sık kullanılan bir yük dengeleyici çözümüdür. BAŞARIM09, 18 Nisan 2009
Veritabanı Kümeleri • Son senelerde birçok veritabanı üreticisi, yüksek kullanılabilirlik, genişleyebilirlik ve yüksek başarımlılık için kümeleme teknolojisini için ürün çıkarmıştır. • Bu çözümlerin bir kısmı paylaştırılmış disk alanı, bir kısmı ayrık veri alanları ile çözüm sunmaktadır. BAŞARIM09, 18 Nisan 2009
YBH Kümeleri • Bu kümeler, zaman kritik paralel, seri veya parametrik hesaplama işlerini çalıştırmak için kullanılır. • Normal bir bilgisayarda inanılmaz sürede bitebilecek işlemci kritik uygulamaları çalıştırırlar. • Genellikle normal PC veya sunucular ve Linux ile oluşturulan kümeler Beowulf ismini alırlar. • MPI, YBH kümelerinde en çok tercih edilen haberleşme kütüphanesidir. BAŞARIM09, 18 Nisan 2009
YBH Küme Mimarileri • Yüksek başarımlı hesaplama ihtiyacını karşılamak isteyen bir kullanıcının önünde iki seçenek vardır: • Uygulamasına göre küme bilgisayarı edinmek. • Erişebildiği küme bilgisayarın özelliklerine göre uygulamasını geliştirmek, değiştirmek veya optimize etmek. • Her iki durumda da bilinmesi veya hesaplanması gerekenler: • Uygulamanın özellikleri, gereksinimleri (yüksek bellek, her sunucuda yüksek miktarda geçici disk alanı, özel kütüphaneler ...), • Kümenin büyüklüğü (işlemci, bellek, disk), • Ağ bağlantı biçimi (gigabit ethernet, infiniband), • İşletim sistemi (Linux, Microsoft (?) ...), • Birçok kullanıcı veya grubun birlikte çalışabilirliği, • Derleyiciler (GNU, Intel, Portland Group ...) BAŞARIM09, 18 Nisan 2009
Mimari BAŞARIM09, 18 Nisan 2009
Sunucular • Günümüzde 1U boyutta 16 çekirdekli sunucular almak mümkün olmaktadır. • Küme bilgisayarlarda sunucu seçimi konusunda birçok faktör vardır: • İşlemciler : Tek çekirdek, çok çekirdek, çoklu işlemci soketi ... • Anakart : PCI-X, PCI-Express, HyperTransport ... • Sunucu form faktörü : Blade, rack monte, PC ... • Bellek : Boyutu, DDR-2, DDR-3, FBDIMM … • Disk : Boyutu, SATA, SCSI, SAS … • Ağ bileşenleri : Gigabit Ethernet, Infiniband, Quadrics ... BAŞARIM09, 18 Nisan 2009
Bileşenlerin bant genişliği Infiniband DDR 4x 2 GB/s SATA-300 300 MB/s PC2-5300 5.3 GB/s BAŞARIM09, 18 Nisan 2009
Gecikme Süreleri BAŞARIM09, 18 Nisan 2009
Ağ Bağlantısı • Genellikle tek bir kümede birden fazla ağ bulunur: • Kullanıcı ağı: • İş göndermek, görselleştirme, sonuç görüntüleme için kullanılır. • Grid haberleşmesi için de kullanılabilir. • Kümelere bağlanmak için genellikle ssh kullanılır. • Yönetim ağı: • İş planlamak, sunucuları izlemek, kurmak için kullanılır. • Genellikle IP üzerinden çalışırlar. • Ganglia gibi yazılımlar multicast çalışırlar. BAŞARIM09, 18 Nisan 2009
IPC Ağı • Küme bilgisayar performansı ve verimi IPC ağı tarafından belirlenir. Haberleşmede harcanan her fazla süre daha az işlem zamanı demektir. • Günümüzde küçük kümeler ve gevşek bağlı uygulamalar için gigabit ethernet ideal bir çözümdür. • Büyük kümeler ve sıkı bağlı uygulamalar için Infiniband, Quadrics gibi çözümler vardır. • Uygulama gereksinimlerini anlamak teknoloji seçiminde çok önemlidir. BAŞARIM09, 18 Nisan 2009
Depolama • Küme bilgisayarlarda çalışan kullanıcıların farklı depolama ihtiyaçları bulunur. • Ev dizini, uygulamalar için ortak veri alanı • Yığın veri saklamak için veri ambarları • Yedekleme ve yığın veriler için tape üniteleri • Bazı uygulamalar için sunucularda geçici paylaşılmayan disk alanları • Küme bilgisayarlarda hesaplama yapılan sunucularda kurulum diski veya geçici disk alanı bulundurmak gerekli değildir. Ancak çoğu durumda maliyeti düşüren bu çözüm tercih edilmemektedir. • Uygulama performansı için özellikle paylaşılan disk alanlarının ihtiyaca uygun tasarlanması gerekir. BAŞARIM09, 18 Nisan 2009