440 likes | 812 Views
Paralel Hesaplama. Onur Temizsoylu Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi 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
E N D
Paralel Hesaplama Onur Temizsoylu Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi 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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Paralel Hesaplamanın Tarihi • İlk paralel hesaplamanın M.Ö. tabletlerde yapıldığı varsayılmaktadır Donanım İşletim Sistemi / Derleyici Uygulamalar Donanım İşletim Sistemi / Derleyici Uygulamalar Seri Çağı Paralel Çağı 1940 50 60 70 80 90 2000 2030 Ticarileştirme Araştırma Son Ürün Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Paralel Hesaplamanın Tarihi Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Paralel Hesaplamanın Tarihi • TOP500 Listesine göre son 15 sene içinde süperbilgisayar sistemlerinde mimari değişimi Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Paralelleştirme • Bir işin paralelleştirilmesinde programın toplam çalışma zamanını azaltmak amaçlanır. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
İş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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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) Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Komutlar İşlemci Veri Çıkışı Veri Girişi SISD Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Komut Akışı A Komut Akışı B Komut Akışı C İşlemci A Çıktı Verisi Girdi Verisi İşlemci B İşlemci C MISD Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
BELLEK BELLEK BELLEK YOLU YOLU YOLU Ortak Bellek MIMD İşlemci A İşlemci B İşlemci C Bellek Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Paralel Donanım Mimarileri • SMP makineler • MPP makineler • NUMA makineler • Superscalar işlemciler • Vektör makineler • Küme bilgisayarlar Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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 ve AMD Opteron işlemciler ccNUMA tabanlıdır. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
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. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Paralel Uygulamalar Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
Dünya Simülasyonu • Gelişmiş nümerik simülasyon yöntemleri ile sanal bir dünya yaratarak gelecekte dünyanın nasıl görüneceğini hesaplayan bir Japonya’da bir projedir. • 40 TFLOPS işlem kapasitesine sahiptir. • Toplam 10 TByte belleğe sahiptir. • Her birinde 8 vektör işlemci bulunan 640 işlemci ucundan oluşur. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
TeraGrid Caltech: Data collection analysis ANL: Visualization LEGEND Visualization Cluster Cluster IA64 Sun IA32 0.4 TF IA-64 IA32 Datawulf 80 TB Storage 1.25 TF IA-64 96 Viz nodes 20 TB Storage IA64 Storage Server Shared Memory IA32 IA32 Disk Storage Backplane Router Extensible Backplane Network LA Hub Chicago Hub 30 Gb/s 40 Gb/s 30 Gb/s 30 Gb/s 30 Gb/s 30 Gb/s 10 TF IA-64 128 large memory nodes 230 TB Disk Storage 3 PB Tape Storage GPFS and data mining 6 TF EV68 71 TB Storage 0.3 TF EV7 shared-memory 150 TB Storage Server 4 TF IA-64 DB2, Oracle Servers 500 TB Disk Storage 6 PB Tape Storage 1.1 TF Power4 EV7 IA64 Sun EV68 IA64 Pwr4 Sun SDSC: Data Intensive NCSA: Compute Intensive PSC: Compute Intensive PSC integrated Q3 03 Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
EGEE Altyapısı Scale > 49 ülkede 224 site ~ 38.000 işlemci > 15 PB veri alanı > Günde onbinlerce çalışan iş > Yüzden fazla kayıtlı sanal organizasyon Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
LHC • LHC 7’şer TeV’lik enerjiye sahip iki proton demetini çarpıştıracak. • En yeni süperiletken teknolojisini kullanarak mutlak sıfırın hemen üstünde – 2710C’de çalışacak. , • 27 km’lik çevresiyle dünyadaki en büyük süperiletken uygulaması olacak. LHC 2007’de çalışmaya başlayacak Dedektörleri birer saray büyüklüğünde olan dört deney: ALICE ATLAS CMS LHCb Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi
LHC Verileri 1 Gigabyte (1GB) = 1000MB A DVD filmi 1 Terabyte (1TB) = 1000GB Dünyanın yıllık kitap üretimi 1 Petabyte (1PB) = 1000TB Bir LHC deneyinin yıllık veri üretimi 1 Exabyte (1EB) = 1000 PB Dünyanın yıllık bilgi üretimi • Saniyede 40 milyon olay • Filtrelemeden sonra saniyede 100 ilginçolay • Her olayda bir megabitlik dijital veri = 0.1 Gigabit/s’lik veri kayıt hızı • Yılda 1010 olay kaydı = 10 Petabyte/yıllık veri üretimi CMS LHCb ATLAS ALICE Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi