Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanWalther Waldfogel Değiştirilmiş 6 yıl önce
1
Niyazi ELVAN – YTÜ niyazi@yildiz.edu.tr
BEOWULF KÜMELERİ Niyazi ELVAN – YTÜ Akademik Bilişim 2007 , Kütahya
2
Akademik Bilişim 2007 , Kütahya
İÇERİK Süperbilgisayar ve Beowulf Nedir ? Beowulf mimarisi ve sistem tasarımı Beehive projesi Görev yönetimi ( Torque,Maui ) Sistemin izlenmesi (Ganglia) Paralel Programlama LAM / MPI MPI fonksiyonları ve veri türleri Örnek uygulamalar Sorular Akademik Bilişim 2007 , Kütahya
3
Akademik Bilişim 2007 , Kütahya
SÜPERBİLGİSAYAR Normal bilgisayarlardan daha yüksek işlem yapabilme kapasitesi olan bilgisayar Dünyanın en yüksek işlem gücüne sahip bilgisayar sistemi Akademik Bilişim 2007 , Kütahya
4
Akademik Bilişim 2007 , Kütahya
SÜPERBİLGİSAYARLAR 1. BlueGene/L , IBM İşlem gücü : 360 teraflop Bellek : 32 tebibyte (2^40 byte) 65536 adet çift işlemcili uç birim 32x32x64 3D network (Torus) Akademik Bilişim 2007 , Kütahya
5
Akademik Bilişim 2007 , Kütahya
SÜPERBİLGİSAYARLAR Akademik Bilişim 2007 , Kütahya
6
Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya
7
Akademik Bilişim 2007 , Kütahya
Akademik Bilişim 2007 , Kütahya
8
Akademik Bilişim 2007 , Kütahya
SÜPERBİLGİSAYARLAR 2. RedStorm , Cray Inc. İşlem gücü : 40 teraflop Bellek : 30 terabytes 10368 AMD işlemcili uç birim 240 terabyte disk Akademik Bilişim 2007 , Kütahya
9
Akademik Bilişim 2007 , Kütahya
SÜPERBİLGİSAYARLAR 3. BGW, IBM İşlem gücü : 10 teraflop Bellek : 30 terabytes 4096 tek işlemcili uç birim Akademik Bilişim 2007 , Kütahya
10
Akademik Bilişim 2007 , Kütahya
SIRADA NE VAR ??? 1 Petaflop İşlem gücü ABD Ulusal Bilim Vakfı Akademik Bilişim 2007 , Kütahya
11
Akademik Bilişim 2007 , Kütahya
BEOWULF NEDİR ? İngiliz edebiyatının bilinen en eski yazılı eseridir. Hikayede adı geçen kahraman yarı insan yarı kurt bir varlık. “Yüzüklerin Efendisi” nin yazarının esinlendiği efsane kahramanı Akademik Bilişim 2007 , Kütahya
12
Akademik Bilişim 2007 , Kütahya
BEOWULF NEDİR ? Düşük maliyetli Yüksek işlem gücüne sahip Çoklu yapısı son kullanıcıdan soyutlanmış Birden fazla bilgisayardan oluşan Linux tabanlı işletim sistemi yüklü Akademik Bilişim 2007 , Kütahya
13
Akademik Bilişim 2007 , Kütahya
BEOWULF KÜMELERİ Uç Düğüm 1 A N H T R Uç Düğüm 2 Uç Düğüm 2 Ana Düğüm Ana Düğüm Uç Düğüm 3 Uç Düğüm 3 . Uç Düğüm n Uç Düğüm n Akademik Bilişim 2007 , Kütahya
14
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Donanım Yapısı Düğüm ( 5 adet ) IBM Netfinity 6000R 2 x PIII Xeon 700 Mhz CPU 1.5 GB bellek Min 72 GB SCSI disk 1 Gbps NIC Anahtarlama birimi Cisco G Akademik Bilişim 2007 , Kütahya
15
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Disk Mimarisi / /home /usr /lib /tmp bee00 NFS / /home /usr /lib /tmp bee01 . Akademik Bilişim 2007 , Kütahya
16
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Ağ Yapısı beehive.yildiz.edu.tr bee00 A N H T R L M B İ bee01 INTERNET bee02 bee03 bee04 Akademik Bilişim 2007 , Kütahya
17
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Kurulum ( Ana düğüm) Debian base sistem Apache2 NFS sunucu Samba sunucu DHCP sunucu Winbind rsh sunucu Lam MPI Torque (pbs_server, pbs_mom) Maui Ganglia (gmetad, gmond) Akademik Bilişim 2007 , Kütahya
18
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Kurulum ( Uç düğüm) Debian base sistem NFS istemci DHCP istemci rsh sunucu Lam MPI Torque (pbs_mom) Ganglia (gmond) Akademik Bilişim 2007 , Kütahya
19
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Yapılandırma (ana düğüm) NFS sunucu (/etc/exports) DHCP sunucu Yapılandırma (uç düğüm) Servislerin açılış sırası Şifre sorgulaması olmadan rsh bağlantısı /etc/fstab Akademik Bilişim 2007 , Kütahya
20
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Yeni uç birimlerin eklenmesi İlk uç birimin diski dd komutu ile diğer birimin diskine kopyalanır. # dd if=/dev/sda of=/dev/sdb Disk kendi sistemine takılır ve sistem başlatılır. Akademik Bilişim 2007 , Kütahya
21
Akademik Bilişim 2007 , Kütahya
BEEHIVE PROJESİ Avantajlar Yönetim kolaylığı /home paylaşımı /usr ve /lib paylaşımı Ölçeklenebilirlik Disk kopyalama ile hızlı çoğullama Akademik Bilişim 2007 , Kütahya
22
Beowulf Cluster Yönetimi
Yasin Bahtiyar – YTÜ Akademik Bilişim 2007 , Kütahya
23
Sistem yapısı nasıl olmalı
Yüksek başarımlı hesaplama Paralel işlem mimarisi Çoklu kullanıcı sistemi Paralel işlem/Sıralı Görev Ucuz maliyet Akademik Bilişim 2007 , Kütahya
24
BeeHive Mimarisi / Cluster Yönetimi
Torque 2.1.6 Lam-MPI 7.1.2 Maui 3.2.6p19 Ganglia 3.0.4 Akademik Bilişim 2007 , Kütahya
25
Akademik Bilişim 2007 , Kütahya
Torque Nedir? Terascale Open-Source Resource and QUEue Manager Cluster Resources Inc. tarafından üretildi. Bir kaynak ve kuyruk yöneticisi. OpenPBS temel alınarak ortaya çıkarılmıştır. Akademik Bilişim 2007 , Kütahya
26
Akademik Bilişim 2007 , Kütahya
OpenPBS nedir? PBS: Portable Batch System 1990 larda NASA için geliştirilmiştir. Altair Grid Tech. Tarafından ortaya çıkarılmıştır. Artık daha fazla desteklenmeyen bir proje Kurumsal türevi PBS Pro (Altair) Akademik Bilişim 2007 , Kütahya
27
Akademik Bilişim 2007 , Kütahya
Torque = OpenPBS+ OpenPBS v üzerine geliştirilmiş bir proje. 15 TF/2500 CPU yönetebilir. Geliştirilmiş hata kontrolü Geliştirilmiş server2mom iletişim protokolü OpenPBS üzerine patch Akademik Bilişim 2007 , Kütahya
28
Akademik Bilişim 2007 , Kütahya
Torque Bileşenleri PBS Server:pbs_server Kaynak ve kuyruk yönetimini yapan temel bileşen Her clusterda sadece bir tane (sunucu uç) Akademik Bilişim 2007 , Kütahya
29
Akademik Bilişim 2007 , Kütahya
Torque Bileşenleri PBS MOM:pbs_mom Her bir uçta yer alır Uç hakkında bilgi verir. pbs_server dan gelen istekleri yerine getirir Akademik Bilişim 2007 , Kütahya
30
Akademik Bilişim 2007 , Kütahya
Torque Bileşenleri PBS Scheduler:pbs_sched Sunucuda çalışır Bir kuyruk yöneticisidir Kuyruğa iş ekleme, işi bekletme, iptal etme gibi fonksiyonları yerine getirir Akademik Bilişim 2007 , Kütahya
31
Akademik Bilişim 2007 , Kütahya
Torque Kurulumu tar -xzvf torqueXXX.tar.gz cd torqueXXX ./configure make make install make packages Akademik Bilişim 2007 , Kütahya
32
Akademik Bilişim 2007 , Kütahya
Torque Kurulumu Mpi tm boot module için: ln -s /usr/local/lib/libtorque.a /usr/local/lib/libpbs.a ln -s /usr/local/lib/libtorque.la /usr/local/lib/libpbs.la Akademik Bilişim 2007 , Kütahya
33
Torque Konfigürasyonu
pbs_server # pbs_server –t create # qmgr (server konfigurasyonu) $TORQUE_HOME/server_priv/nodes Akademik Bilişim 2007 , Kütahya
34
Torque Konfigürasyonu
pbs_mom $TORQUE_HOME/server_name $TORQUE_HOME/mom_priv/config # pbs_mom (her bir uç için) # qterm -t quick # pbs_server Kullanıcılar için şifresiz ssh Akademik Bilişim 2007 , Kütahya
35
Akademik Bilişim 2007 , Kütahya
Torque Komutları Komut Açıklama momctl MOM (node execution) yönetimi / durdurulması pbsnodes Uç bilgisayardan bilgi alma – uç bilgisayar yönetimi qalter Kuyruktaki işlerin özelliklerinin değiştirilmesi qdel Kuyruktaki işlerin silinmesi qhold Kuyruktaki işin bekletilmesi qmgr manage policies and other batch configuration qrls Kuyruktaki işin devam ettirilmesi qrun Kuruktaki bir işin başlatılması qsub Kuyruğa yeni iş eklenmesi qstat Kuyruktaki iş hakkında bilgi alınması qterm Pbs server in durdurulması tracejob TORQUE loglarına göre bir işin takip edilmesi Akademik Bilişim 2007 , Kütahya
36
Lam-Mpi rsh boot module
Akademik Bilişim 2007 , Kütahya
37
Akademik Bilişim 2007 , Kütahya
Lam-Mpi tm boot module Akademik Bilişim 2007 , Kütahya
38
Lam-Mpi (tm boot) & Torque
lamd pbs_mom tarafından yönetilir Daha hızlı lamboot Bu desteği sağlamak için: ./configure --with-boot=tm make && make install Akademik Bilişim 2007 , Kütahya
39
Akademik Bilişim 2007 , Kütahya
Ganglia Dağıtık sistemleri izleme yazılımı Cluster ve grid yapılarında kullanılır gmond gmetad Ganglia web arayüzü rrdtool kullanarak xml şemalarını grafiklere çevirir. Akademik Bilişim 2007 , Kütahya
40
Akademik Bilişim 2007 , Kütahya
gmond Her bir uç için gerekli bilgileri alır ve xml şeması olarak yayın yapar /etc/init.d/ganglia-monitor /etc/gmond.conf name “BeeHive” owner “YTU” trusted_hosts //(gmetad) Akademik Bilişim 2007 , Kütahya
41
Akademik Bilişim 2007 , Kütahya
gmetad gmond lerden aldığı xml şemalarından bir rrd veritabanı oluşturur. Genellikle sadece sunucuda çalışır. /etc/init.d/gmetad Akademik Bilişim 2007 , Kütahya
42
Akademik Bilişim 2007 , Kütahya
gmetad /etc/gmetad.conf data_source "bee00" bee00 data_source "bee01" bee01 data_source "bee02" bee02 data_source "bee03" bee03 data_source "bee04" bee04 gridname "YTU" Akademik Bilişim 2007 , Kütahya
43
Akademik Bilişim 2007 , Kütahya
Ganglia Web Frontend Rrd veritabanındaki bilgilere göre bir rapor oluşturan web arabirimidir. rrdtool kullanır. Akademik Bilişim 2007 , Kütahya
44
Akademik Bilişim 2007 , Kütahya
Maui Scheduler Bir scheduler, aslında kuyruk yöneticisi olarak çalışan bir kullanıcının yaptığı işleri yapar. Kaynak yöneticisine ne yapacağını söyler. İleri seviye scheduler.pbs_sched den daha iyi. Kaynak yönetimini optimize eder Akademik Bilişim 2007 , Kütahya
45
Akademik Bilişim 2007 , Kütahya
Maui kurulumu > gtar -xzvf maui-<VERSION>.tar.gz > cd maui-<VERSION> > ./configure > make > sudo make install Akademik Bilişim 2007 , Kütahya
46
Akademik Bilişim 2007 , Kütahya
Konfigürasyon vi /usr/local/maui/maui.cfg SERVERHOST bee00 ADMIN root RMCFG[BEE00] TYPE=PBS Akademik Bilişim 2007 , Kütahya
47
Maui komutlarından bazıları
Açıklama canceljob İşi iptal eder checkjob İş durumu hakkında ayrıntılı bilgi verir checknode Uç durumu hakkında ayrıntılı bilgi verir diagnose Kaynaklar, iş yükü ve scheduling ile ilgili rapor verir. mjobctl İş kontrolu ve modifikasyon runjob Bir işi anında çalıştırmak için kullanılır showconfig Scheduler konfiguresyonunu gösterir showq Kuyruk hakkında bilgi verir showres Rezervsyonlar hakkında bilgi verir showstart Tahmini olarak bir işin ne zaman başlayacapı konusunda fikir verir showstate Kaynakların durumunu gösterir Showstats Kullanım istatistiklerini gösterir Akademik Bilişim 2007 , Kütahya
48
Eş Zamanlı (Concurrent) Programlama
Z. Cihan TAYŞİ Akademik Bilişim 2007 , Kütahya
49
Akademik Bilişim 2007 , Kütahya
Konu Başlıkları Eş zamanlı programlama nedir Eş zamanlılık modelleri Eş zamanlı program tasarımı LAM – MPI Örnek uygulamalar Akademik Bilişim 2007 , Kütahya
50
Eş Zamanlı Programlama
1960’larda ortaya atılmıştır. Channels, Device controller Bir işin birden fazla parçaya bölünmesi Parçaların farklı süreçler tarafından işlenmesi Akademik Bilişim 2007 , Kütahya
51
Eş Zamanlılık Modelleri
Multi-Threaded programlama Posix Threads, pthreads OpenMP Parallel programlama Shared Memory Dağıtık (Distributed) programlama Message Passing Interface, MPI Parallel Virtual Machine, PVM Akademik Bilişim 2007 , Kütahya
52
Eş Zamanlı Program Tasarımı
Problemin analiz edilmesi Problemin parçalara ayrılması (Partitioning) Problem parçaları arasındaki iletişim Senkronizasyon (Synchorization) Yük dağılımı Eş zamanlı programlamanın limitleri ve maliyeti Akademik Bilişim 2007 , Kütahya
53
Akademik Bilişim 2007 , Kütahya
Problem Analizi Eş zamanlı hesaplama Matris işlemleri N-Body problemi Seri hesaplama Fibonacchi sayıları F(k + 2) = F(k + 1) + F(k) 1, 1, 2, 3, 5, 8, 13, 21 Akademik Bilişim 2007 , Kütahya
54
Problemin Parçalara Ayrılması
Veriye göre parçalama (Domain Partitioning) Akademik Bilişim 2007 , Kütahya
55
Problemin Parçalara Ayrılması
Fonksiyona göre parçalama (Functional Partitioning) Akademik Bilişim 2007 , Kütahya
56
Problem Parçaları Arası İletişim
Parçalar arasında iletilecek veri miktarı Verinin iletim süresi parçanın gerçekleştirilme süresine göre çok az olmalı Parçalar arası iletişimin sıklığı Fiziksel iletişim hızı İletişim Tipi Senkron (blocking) Asenkron (non-blocking) Akademik Bilişim 2007 , Kütahya
57
Akademik Bilişim 2007 , Kütahya
Senkronizasyon Bariyer Bariyere ulaşan görev, diğer tüm görevler bariyere ulaşana kadar bekler. Tüm görevler bariyere ulaştığında sekronizasyon işlemi gerçekleştirilir. Lock / semaphore Ortak kaynakların düzgün kullanımı içindir Bir görev kaynağı kullanırken diğer görevlerin beklemesi sağlanır. Akademik Bilişim 2007 , Kütahya
58
Akademik Bilişim 2007 , Kütahya
Yük Dağılımı Yüklerin görevler arasında eşit dağıtılması Dizi ve Matris işlemleri Yüklerin dinamik olarak dağıtılması N-Body problemi Akademik Bilişim 2007 , Kütahya
59
Eş Zamanlı Programlama Maliyetleri
Karmaşıklık Uygulama, Haberleşme, Senkronizasyon Taşınabilirlik Programlama arayüzleri Ölçeklenebilirlik ( Scalability) Geliştirilen algoritma Altyapı Kaynak İhtiyacı Akademik Bilişim 2007 , Kütahya
60
Akademik Bilişim 2007 , Kütahya
Neden MPI ??? MPI çeşitli kurum ve kişilerin katılımıyla oluşturulmuş olan bir standart. Değişik kurumlar tarafından geliştirilen farklı versiyonları mevcuttur. MPICH LAM-MPI Open MPI Taşınabilir (Portable) bir yapıya sahiptir. Tamamen asenkron iletişim özelliğine sahiptir. Homojen yapılarda çalışmak üzere tasarlanmış Akademik Bilişim 2007 , Kütahya
61
Akademik Bilişim 2007 , Kütahya
LAM – MPI Ohio Supercomputing Center tarafından geliştirilmeye başlandı. Tasarımında görev alanların birçoğu Notre Dame Üniversitesi, Bilimsel Hesaplama Laboratuarına (The Laboratory of Scientific Computing) geçti. Notre Dame Üniversitesine geçildikten sonra 6.2b ve 6.3 versiyonları kullanıma sunuldu. 2001 yılında, LSC Indiana Universitesi’ne geçti. Grubun ismi Open Systems Laboratory (OSL) olarak değişti. 7.1.2 versiyonu kullanıma sunuldu. Bu grup şu anda Open MPI adında yeni bir MPI sürümü üzerinde çalışmaktadır. Akademik Bilişim 2007 , Kütahya
62
Akademik Bilişim 2007 , Kütahya
MPI Fonksiyonları int MPI_Comm_size(MPI_Comm comm,int *size) int MPI_Comm_rank(MPI_Comm comm,int *rank) int MPI_Recv(void *buf, int count, MPI_Datatype dtype, int src, int tag, MPI_Comm comm, MPI_Status *stat) int MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm) int MPI_Bcast(void *buff, int count, MPI_Datatype datatype, int root, MPI_Comm comm) int MPI_Scatter(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm) int MPI_Gather(void *sbuf, int scount, MPI_Datatype sdtype, void *rbuf, int rcount, MPI_Datatype rdtype, int root, MPI_Comm comm) Akademik Bilişim 2007 , Kütahya
63
Akademik Bilişim 2007 , Kütahya
Örnek – I “Hello World” #include <stdio.h> #include <mpi.h> int main ( int argc, char *argv[] ) { int myrank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myrank); MPI_Comm_size(MPI_COMM_WORLD, &size); if (myrank == 0) { printf("I'm the master\n"); }else { printf("I'm slave (%d)\n",myrank); } MPI_Finalize(); return 0; Akademik Bilişim 2007 , Kütahya
64
Örnek – II “Matris Çarpımı”
Matris boyutları A Matrisinin boyutları : 4000 x 100 B Matrisinin boyutları : 100 x 40 Problemin bölünmesi Birinci matrsinin satırları işlemler arasında paylaştırılabilir. İşlemler arası iletişim Bir işlem yönetici rolü üstlenmeli Her işleme kendi paylarına düşen satırlar gönderilmeli Her işleme B Matrisinin tamamı gönderilmeli Her işlemden sonuçlar alınmalı Akademik Bilişim 2007 , Kütahya
65
“Matris Çarpımı” – 1. Çözüm Yönetici İşlem
Hesaplama Yapılacak Matrsilerin Oluşturulması if(rank==0) { // Yonetici process rowspp = M1_RSIZE / size; offset = rowspp; for (i=1; i<size; i++) { MPI_Send(&rowspp, 1, MPI_INT, i, TAG1, MPI_COMM_WORLD); datacount = rowspp*M1_CSIZE; MPI_Send(&m1[offset][0], datacount, MPI_DOUBLE, i, TAG1, MPI_COMM_WORLD); datacount = M2_RSIZE*M2_CSIZE; MPI_Send(&m2, datacount, MPI_DOUBLE, i, TAG1, MPI_COMM_WORLD); offset = offset + rowspp; } Kendi Payına Düşen Kısmın Hesaplanması datacount = rowspp * M2_CSIZE; for(i=1;i<size;i++) { MPI_Recv(&mr[offset][0], datacount, MPI_DOUBLE, i, TAG2, MPI_COMM_WORLD, &status); printf("Calculation finished \n"); Akademik Bilişim 2007 , Kütahya
66
“Matris Çarpımı” – 1. Çözüm Diğer İşlemler
}else { // Diger islemler MPI_Recv(&rowspp, 1, MPI_INT, 0, TAG1, MPI_COMM_WORLD, &status); datacount = rowspp*M1_CSIZE; MPI_Recv(&m1, datacount, MPI_DOUBLE, 0, TAG1, MPI_COMM_WORLD, &status); datacount = M2_RSIZE*M2_CSIZE; MPI_Recv(&m2, datacount, MPI_DOUBLE, 0, TAG1, MPI_COMM_WORLD, &status); Kendi Payına Düşen kısmın Hesaplanması datacount = rowspp * M2_CSIZE; MPI_Send(&mr, datacount, MPI_DOUBLE, 0, TAG2, MPI_COMM_WORLD); } Akademik Bilişim 2007 , Kütahya
67
“Matris Çarpımı” – 2. Çözüm
int main ( int argc, char *argv[] ) { int i,j,k; int rowspp, offset, datacount; int rank,size; double sum; double m1[M1_RSIZE][M1_CSIZE], m2[M2_RSIZE][M2_CSIZE], mr[M1_RSIZE][M2_CSIZE]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); if(rank==0) {// Master process Matrisleri oluştur. rowspp = M1_RSIZE / size; printf("rowspp : %d\n",rowspp); offset = rowspp; } Akademik Bilişim 2007 , Kütahya
68
“Matris Çarpımı” – 2. Çözüm
MPI_Bcast(&rowspp, 1, MPI_INT, 0, MPI_COMM_WORLD); datacount = M2_RSIZE*M2_CSIZE; MPI_Bcast(&m2, datacount, MPI_DOUBLE, 0, MPI_COMM_WORLD); datacount = rowspp*M1_CSIZE; MPI_Scatter(&m1, datacount, MPI_DOUBLE, &m1, datacount, MPI_DOUBLE, 0, MPI_COMM_WORLD); Kendi Payına Düşen kısmın Hesaplanması datacount = rowspp * M2_CSIZE; MPI_Gather(&mr, datacount, MPI_DOUBLE, &mr, datacount, MPI_DOUBLE, 0, MPI_COMM_WORLD); MPI_Finalize(); return 0; } Akademik Bilişim 2007 , Kütahya
69
Performans Karşılaştırmaları
Akademik Bilişim 2007 , Kütahya
70
Akademik Bilişim 2007 , Kütahya
SORULAR ??? Akademik Bilişim 2007 , Kütahya
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.