Merhabalar, bu konu birden fazla kaynak (1.30 saatlik ingilizce video, 1 adet ingilizce doktora makalesi ve çeşitli bilgi kaynakları) incelenerek hazırlanmıştır. Lütfen bu konuyu izinsiz başka forumlarda bu bilgileri direk kopyala yapıştır şeklinde yayınlamayınız. Emeğe saygı... İnşAllah faydalı olmuştur.
Raspberry Pi B+ Cluster (Super Bilgisayar) Yapımı
Son yıllarda Open Source Hardware ve Softwarelere olan ilgi git gide artmakta. Özellikle hobi kullanıcıları ve proje geliştiricilerinin tercih ettiği ürünlerden ola Raspberry Pi popülerliğini her geçen gün artırıyor.
LinuxGizmos ve Linux sitesinin desteği ve 1,721 katılımcı ile yapılan 2015in en iyi SBC(Single Board Computer)si anketinde Raspberry Pi B 2455 puan ile birinci seçildi. İlerleyen zamanlarda bu ankette yer alan kartların tanıtımı ve araştırma raporunu detaylı bir şekilde inceleyeceğiz nasip olursa. Ama Raspberry Pi hakkında bilgi almak istiyorsanız daha önce açtığım http://www.turkhackteam.org/elektronik-gadget/1184079-raspberry-pi-vs-beaglebone-black.html yazısını inceleyebilirsiniz. BeagleBone Blackde bu araştırma da ikinci oldu.
Bu günkü yazımızda sizlere Raspberry Pi ile bir süper bilgisayar nasıl yapılır onu anlatacağız. Kurulum aşamaları, sistem yükleme gibi basamakları tek tek açıklamaya çalışacağız. Yazı konumuz biraz uzun gelebilir fakat okumaya değer olduğunu düşünüyoruz. Çünkü 1,5 saatlik İngilizce video ve doktora makalesinden sizlere çeviri yapıp en sadece şekilde bu konuyu hazırlamaya çalıştık. Bu konuyu 2013te hazırlamaya niyetlenmiş fakat yayınlamak nasip olmamıştı bazı nedenlerden dolayı. Yayınlamak bugüne nasipmiş. Umarız pişman olmazsınız.
Süper Bilgisayar Nedir?
Süper bilgisayar basit olarak; yoğun paralel işlemciler, yüksek başarımlı vektör işlemciler ve öbek bilgisayarların oluşturduğu sistem (her bileşen olmak zorunda değil) olarak tanımlanabilir. Süper bilgisayarlar bilimde, deney ve hesaplamayı birleştiren hesaplamalı bilim gibi yeni metodolojilerin oluşmasını sağlamıştır. Günümüzde süper bilgisayarlar saniyede yüzlerce trilyon işlem yapar hale gelmiştir. Örneğin, dünyanın en hızlı süper bilgisayarı saniyede 136,8 trilyon kalıcı işlemle Amerikada Lawrance Livermore National Laboratuary isimli ulusal laboratuvarın kullanımındadır (teorik sınır bu rakamın üzerinde olup adı geçen makina için saniyede 183,5 trilyon işlemdir) Süper bilgisayarlar ilk defa 1960larda Seymour Cray tarafından Control Data Corporation da tasarlandı. Tarihçesi ve daha fazla detay için bkz: LINK
Raspberry Pi Beowulf Cluster
Raspberry Pi B ile süper bilgisayar yapımı Boise State Universitesi doktora öğrencisi olan Joshua Kieper tarafından 2013da yapıldı. Wireless sensörler arasında veri paylaşım ağındaki veri işlenmesini kolaylaştırmak için bir sisteme ihtiyaç duyması ile bu projeye başlıyor.
Kieper bu projeyi yaparken 32 Raspberry Pi kullanmış. Daha sonraları 100 tane Raspberry Pi ile yapılanları da ortaya çıktı fakat biz bu makalemizde 4 tane Raspberry Pi B+ ile bir süper bilgisayar oluşturacağız.
Raspberry Pinin Tercih Edilmesinin Nedeni?
Tercih nedenini Kieperın verilerine göre saymak istiyorum. Boise State Universitesi laboratuvarlarında Bilgisayar Bilimi bölümüne ait ****Geek Lab (yada Onyx Lab)ta bir clusterları zaten mevcutmuş. Bu Onyx cluster 32 nodeslu bir sistem. Ve her biri 3.1 GHz Intel Xeon E3-1225 quad-core işlemci ve 8 GB RAMe sahip. Bu sistem paralel programlama da yeterli performansa sahip bir sistem.
Asıl soru böyle bir sisteme sahip iken neden Raspberry Pi ile bir Beowulf clusterı inşa ediyor.
İlk olarak Onyx clusterdan başka alternatifleri yok yani her an elinizin altında bir sistem yok. Başka bir öğrenci bu sistemi kullanıyorsa sizin sıra beklemeniz gerekiyor. RPiCluster size MPI (Message Passing Interface) veya Java cluster dokümanlarını kullanmanıza olanak sağlıyor.
İkincisi, RPiCluster bize I2C, SPI, UART, GPIO gibi gömülü sistem için düşük seviye donanımsal ara yüz imkânı sağlıyor. Bu elektrikle ilgili mühendisliklere büyük çaplı gömülü sistemlerin yeterlilik testine olanak sağlıyor.
Üçüncüsü şahsa özel bir sistem oluşturulmuş oluyor ve istediğinizde sisteme ulaşabiliyorsunuz.
Ve son olarak Raspberry Pi daha hesaplı. RPi platform 32nodeslu bir cluster oluşturmak için en ucuz yöntemlerden bİri. 8GB SD cardlı bir Raspberry Pi aşağı yukarı 42$. Fakat bir Onyx cluster nodeu 1000$ ile 1500$ arası değişmekte. Yani siz bir Onyx cluster node fiyatına kendinize 32 nodelu bir Raspberry Pi cluster yapabiliyorsunuz.
Avantajlarının yanında bazı eksiklikleri de bulunmakta bu sistemin. Ucuz fakat bir Raspberry Pi, x86 bir PC gibi performans gösteremez elbette. Bir RPi tek çekirdekli ARMv6 nesil işlemci içeriyor ve işlemci hızı 700MHz. Ayrıca ARM mimarisi kullandığında bir PC işlemcilerinden farklı bir mimari yapıya sahip. Bu nedenle x86 üzerinde hazırlanan MPI bir program Raspberry Pi için tekrar derlenmeli. Tabi bu durum java, phyton ve perl programları için geçerli değil. Çünkü Raspberry Pi, Linux işletim sistemini çalıştırabilme yeteneğine sahip. Son olarak limitli işlemci gücüne sahip olduğundan çoklu kullanıcı desteğine sahip değildir.
Kuruluma Başlayalım
1.1 DONANIM KURULUMU
Malzemeler:
"Resim-1"
4 x Raspberry Pi B+ (En az 2 tane olsa da yeterli)
4 x Micro USB Power Kablo
4 x MicroSD Kart
1 x Netgear Switch (8 Port)
1 x Power USB-Hub
4 x Ethernet Kablo
2 x Raspberry Pi B+ Kılıf (Zorunlu değil)
Malzemeleri Kuruluma Hazır Etme:
"Resim-2"
Resim-2 de görüldüğü üzere; Ethernet kablolarını Switch ile bağlantısı sağlandı. Raspberry Pi B+lara enerji sağlamak için USB Hub tan Micro USBlere bağlantı sağlandı. Case kullanılarak Resim-2 de görüldüğü gibi tüm Raspberry Pi B+lar üst üste eklenerek daha düzenli olmaları sağlandı.
1.2 YAZILIM KURULUMU
1.2.1 Gerekli Yazılımların İndirilmesi Kuruluma Hazır Hale Getirilmesi
Raspberry Pi işletim sistemi olarak Raspbiannı kullanmakta. Bu sistem Linux kaynaklı bir sistemdir. İşletim sistemini kurmak için LINK adresinden Raspbianın güncel versiyonunu indiriyoruz. İndirme seçeneği olarak Resim-3te görüldüğü üzere Torrent ve Zip bağlantıları bulunmakta. Biz Zip bağlantısını seçiyoruz.
"Resim-3"
Raspbian iso dosyası indirildikten sonra sıra iso dosyasını microSD kartlara yazdırmaya geldi. Bunun için win32diskmanager programını kullanıyoruz. Programı LINK adresinden indirebilirsiniz. Bu adreste Win32DiskImager-0.9.5-install.exe dosyası bulunmakta bunu indirip kurulumunu gerçekleştiriniz.
"Resim-4"
Resim-4 te görüldüğü gibi Win32 programı kurulduktan sonra açıyoruz ve klasör simgesine tıklayarak iso dosyasının bulunduğu yeri seçip open diyoruz. Image File kutusunda adres şu şekilde görülecektir Örn: C:\\Users\\OmerFaruk\\Downloads\\Compressed\\2015-05-05-raspbian-wheezy.img. Daha sonra Device butonuna tıklayarak SD kartın sürücü adresi (Resim-4 te bu adres D sürücüsüdür.) seçmelisiniz.
Yukarıdaki işlemleri tamamladıktan sonra Write diyerek iso dosyasını SD kartımıza yazdırıyoruz.
1.2.2 İşletim Sisteminin Raspberry Pi B+a Yüklenmesi
İlk kez Raspberry Pi ye işletim sistemi kurarken 1 adet HDMI bağlantılı monitör ve klavyeye ihtiyacımız var. Ve işletim sistemi için gerekli güncellemelerin yapılabilmesi için Raspberry Pimizi ethernet kablosu ile internet bağlantısını sağlamamız gerekiyor.
İlk kurulumu tamamladıktan sonra Putty programı ile uzaktan kontrol sayesinde monitör ve klavye ye ihtiyaç duymadan güncellemelerimizi yapacağız.
"Resim-5"
Resim-5 te görüldüğü gibi Ethernet kablomuzu internet bağlantımızı sağladığımız router a bağladık (switche değil). HDIM kablomuzu, MicroSD kartımızı ve klavyemizin bağlantısını yaptık. Bu bağlantılardan sonra resimdeki gibi kırmızı MicroUSB kablomuzu bağladık ve Raspberry Pi otomatik olarak çalışmaya başladı.
"Resim-6"
Resim-6 da görüldüğü üzere bir setup menüsü açılacaktır. Kurulum için sırası ile aşağıdaki işlemleri uygulayınız.
1 Expand Filesystem menüsü üstüne gelip enter diyin. Siyah bir ekran gelip işlemi bitince sizde tamamlama onayı isteyecek ve okey deyip bir sonraki adıma geçin.
7 Overclock bölümünün üzerine gelip enter diyin, çıkan pencereyi ok diyin. Ve Resim-7 deki bölüm açılacaktır. Burdan ikinci sıradaki Modest 800MHz ARM ayarını seçin.
"Resim-7"
Overclocktan sonra ana menü den 8 Advanced Options bölümüne girin ve açılan sayfadan ikinci satırdaki A2 Hostname bölümününe girin ve açılan yeni sayfadaki alana Pi01 adını girin. (Ör: Resim-8)
"Resim-8"
Raspberry Pi ye Hostname verdikten sonra ana menüden yine 8 Advanced Optionstan A3 Memory Split seçeneğini seçiyoruz ve 64u silerek 16 yapıyoruz.
Daha sonra tekrar ana menüden 8 Advanced Optionstan A4 SSH bölümünü seçiyoruz ve Enable yapıyoruz.
Bu işlemler bitince ana menü ye dönüp TAB tuşuna basarak <Finish> butonuna seçiyoruz ve işlemimizi tamamlıyoruz. Ve sistem Reboot yapılıyor.
"Resim-9"
Resim-9 da görüldüğü gibi IP address 192.168.1.6 olarak ayarlanmış. Bu sizde farklı olabilir. Bunu bir yere not edin çünkü ilerde bu ip adresi ile uzaktan bağlantı kurarak işlemlerimize devam edeceğiz.
Sisteme giriş yapmak için Pi01 login: bölümüne pi yazıyoruz enterlıyoruz ve Password için rasberry şifresini oluşturuyoruz.
Artık monitör ve klavyeye ihtiyacımız kalmadı. Bu ilk kurulumdan sonra Raspberry Pimize uzaktan erişim sağlayarak işlemlerimize devam edebiliriz.
1.2.3 Putty Programı ile Raspberry Piye Uzaktan Erişim ve Kontrol
Google amcaya puttyyazıp sorguladığımızda çıkan ilk siteden programımızı indirip kuruyoruz. İndireceğimiz dosya putty.exe dosyasıdır.
"Resim-10"
Resim-10da görüldüğü gibi puttyyi indirdikten sonra exe ye tıklar tıklamaz kurulumsuz bu ekran ortaya çıkacaktır. Program üzerinde Host Name alanına Raspberry Pi yi kurarken size not almanız gerektiğini söylediğim IP adresini yani 192.168.1.6 yazıyoruz. Bu adres sizin kurulumda farklı olabilir. Siz kendinize ait IP adresinizi girin ve Open diyin.
"Resim-11"
Resim-11 deki gibi ekran gelecektir ve login as: bölümüne Raspberry Pi için kurulumda yazdığımız kullanıcı adını yani pi yazıyoruz. Ardından bizden şifresini isteyecek şifre olarak yazdığımız rasberryyi yazarak sisteme bağlanacağız.
"Resim-12"
Resim-12 de görüldüğü gibi Raspberry Pimize ulaşmış oluyoruz. Şimdi güncellemeler için aşağıdaki kod satırlarını tek tek kopyalayarak işlemlerimize devam edeceğiz.
Not: Kodları seçip kopyaladıktan sonra PuTTY ekranında imlecin bulunduğu yere gelip farenin sağ tuşu ile kopyaladığımız kodu yapıştırarak seri bir şekilde işlemlerimizi tamamlayabiliriz.
1.2.4 MPICH Kurulumu
o sudo apt-get updatemkdir mpich2
o cd ~/mpich2
o wget http://www.mpich.org/static/downloads/3.1/mpich-3.1.tar.gz
o tar xfz mpich-3.1.tar.gz
o sudo mkdir /home/rpimpi/
o sudo mkdir /home/rpimpi/mpi-install
o mkdir /home/pi/mpi-build
o cd /home/pi/mpi-build
o sudo apt-get install gfortran
o sudo /home/pi/mpich2/mpich-3.1/configure -prefix=/home/rpimpi/mpi-install
o sudo make
o sudo make install
o cd ..
o nano .bashrc
o PATH=$PATH:/home/rpimpi/mpi-install/bin
Üsteki kodu yazdıktan sonra klavyeden ctrl+6+X tuşuna basın ve çıkan yeni menü yü Yye basarak onaylayın. Ardından gelen File Name to Write: bölümüne .bashrc yazın ve enterlayarak kaydedin.
o sudo reboot
Reboot kodunu yazıp onyaladığımızda putty bağlantı koptu hatası verecektir. Putty ekranını uyarıdan sonra kapatıp tekrar Raspberry Pi ye bağlantı sağlayın.Ve aşağıdaki kodu yazın.
o mpiexec -n 1 hostname
Bu kodu girince bize Raspberry Pinin adını verecek. Daha önce Pi01 verdiğimizden ekranda Resim-13teki gibi Pi01 çıkacaktır.
"Resim-13"
1.2.5 MPI4PY Kurulumu
Aşağıdaki kodları sıra ile uygulayın:
sudo aptitude install python-dev
wget https://mpi4py.googlecode.com/files/mpi4py-1.3.1.tar.gz
tar -zxf mpi4py-1.3.1.tar.gz
cd mpi4py-1.3.1
python setup.py build
sudo python setup.py install
export PYTHONPATH=/home/pi/mpi4py-1.3.1
mpiexec -n 5 python demo/helloworld.py
İşlemlerimizi bitirmeden son bir işimiz kaldı. Sistemimizi şuan kurduk ve SD kart içindeki son halinin imageını alarak diğer SD kartlarına kopyalamak için SD kartımızı Raspberry Pi den sökelim ve bilgisayarımıza takalım.
Win32 Disk Imager programın tekrar çalıştırarak Image File boşluğuna adres olarak C:\\Users\\OmerFaruk\\Dektop\\Omer_RPI_cluster.img yazıyoruz. Device bölümünden de SD kartımızın bulunduğu konumu seçiyoruz ve ardından Read butonuna tıklayarak Masaüstüne Omer_RPI_cluster dosyamızı oluşturuyoruz. Bu image dosyasını ilk başta yaptığımız gibi Win32 Disk Imager ile diğer SD kartlarına yazdırıyoruz.
1.3 RPiLERİ TEK TEK YAPILANDIRMA
Bir önceki başlıkta işletim sistemini nasıl kuracağımızı ve ek ayarların nasıl yapılacağından bahsettik. Bu gölümde sizlere RPilere bağlanma ve hepsinin yapılandırılmasını anlatacağız.
Omer_RPI_cluster.img dosyasını bütün SD kartlara kopyaladıktan sonra RPilerinizi switche bağlayınız ve switchi de routerınıza takın. Bütün RPilerin güç kablolarını bağlayın ve sistemlerin başlamasını başlatın.
Image dosyasını hepsine kopyaladığımız için sistem isimleri aynı olacaktır önce bunları değiştirmemiz lazım. Bir önceki ana başlıkta kurduğumuz 192.168.1.6 RPi üzerinden diğer RPilere ulaşacak ve isimlerini değiştireceğiz.
PuTTY programını açıyoruz ve 192.168.1.6 IP adresli RPiye bağlanalım. Kullanıcı adı ve şifresini girelim. Ardından aşağıdaki işlemleri yapalım.
o sudo apt-get upgrade
Komutu girerek güncelleme yapıyoruz ve ardından nmapimizi kuruyoruz.
o sudo apt-get install nmap
Bu komuttan sonra bize Do you want to continue [Y/n]? diye sotuyor ve Y yazıp onaylıyoruz.
o ifconfig
Bu komut kullanmakta olduğumuz RP inin bilgilerini ekrana sıralıyoruz. Resim-14teki gibi.
"Resim-14"
o sudo nmap sn 192.168.1.*
Bu komut ile ağ bağlantımızı tarayıp bağlı bulunan cihazların IP adreslerini buluyoruz.
Resim-15 te görüldüğü gibi tarama sonucunda 192.168.1.6(ana RPimiz) ve 192.168.1.7 , 192.168.1.8 , 192.168.1.9 nolu IP adrese sahip diğer RPileri buldu. (Resimde 192.168.1.9 görünmüyor fakat o da var)
"Resim-15"
Bu sayede 4ünü de listeledik. Bunları kenara not alalım. Bu arada bu IP adresleri sizde farklı olabilir. Örnekteki gibi olacak diye bir şey yok.
Gelelim isimlerini değiştirmeye.
o ssh [email protected]
Komutunu girerek ikinci RPi mize bağlanıyoruz. Bize bağlantı kurmaya eminmisiniz diye soracak yes yazıp devam ediyoruz. Ardında [email protected] pasword: satırı ekrana gelecektir ve Image dosyasında ilk sistemi kurar iken kullandığımız şifreyi yani rasberryyi yazarak bağlanıyoruz.
Şimdi bu yeni (ikinci) RPimizin adını değiştirmek için
o sudo raspi-config
yazıyoruz ve giriş yapıyoruz. İlk kurulumdaki confirm ekranı açılacaktır. Advanced Optionstan A2 Hostname e giriyoruz ve ekranda Pi01 yazılı olarak gelecektir bunu Pi02 yapıyoruz. Ardından ana sayfadan Finish diyerek işlemimizi bitiriyoruz. Bu işlemden sistem reboot yapılacaktır. Ve ekranda Connection to 192.168.1.7 closed. yazacaktır en son.
Şimdi PuTTY yi kapatıp yeniden 192.168.1.6ya bağlanıyoruz. RPi iki için isim değiştirme işlemini aynı işlem sırası ile üç ve dört numaralı RPilerimiz için tekrarlıyoruz ve isimlerini sırayla Pi03, Pi04 yapıyoruz.
Bu işlemler bittikten sonra tekrar 192.168.1.6ya PuTTY ile uzaktan bağlanıyoruz. Şimdi sisteme machinefile kaydı yapmamız lazım. Kod satırına:
o nano machinefile
yazıyoruz. Ardından Resim-16 daki gibi RPilere ait dört adet IP adresini de yazıp kaydediyoruz.
"Resim-16"
Şimdi machinefileın çalışıp çalışmadığını kontrol edelim.
o mpiexec n 1 hostname
Komutunu yazdığımızda bie Pi01 görünecek. Bu machinefileın çalıştığını gösteriyor. Şimdi bütün RPilerimize aşağıdaki kodları yazarak yetki anahtarlarını ekleyelim.
o ssh-keygen
o cd ~
o cd .ssh
o cp id_rsa.pub pi01
o ssh [email protected]
Yukarıdaki kodta yazılan ip adresi ikinci RPinindi. Siz kendi RPinizin adresini yazın. Bu son kodu yazınca sizden password isteyecektir. Daha önce yazdığınız şifreyi yine yazıyorsunuz ve Pi02 ye bağlanıyoruz. Şimdi aşağıdaki kodları uyguluyoruz.
o ssh-keygen
o cd .ssh
o cp id_rsa.pub pi02
o scp 192.168.1.6:/home/pi/.ssh/pi01 .
o cat pi01>>authorized_keys
o exit
o ssh [email protected]
Şimdi üçüncü RPinin keyini oluşturalım.
o ssh-keygen
o cd .ssh
o cp id_rsa.pub pi03
o scp 192.168.1.6:/home/pi/.ssh/pi01 .
o cat pi01>>authorized_keys
o exit
o ssh [email protected]
Şimdi dördüncü ve sonunc RPinin keyini oluşturalım.
o ssh-keygen
o cd .ssh
o cp id_rsa.pub pi04
o scp 192.168.1.6:/home/pi/.ssh/pi01 .
o cat pi01>>authorized_keys
o exit
Yukarıdaki işlemler bitince aşağıdaki kodları sırayla uygulayalım.
o scp 192.168.1.7:/home/pi/.ssh/pi02 .
o cat pi02>>authorized_keys
o scp 192.168.1.8:/home/pi/.ssh/pi03 .
o cat pi03>>authorized_keys
o scp 192.168.1.9:/home/pi/.ssh/pi04 .
o cat pi04>>authorized_keys
o cd ~
o mpiexec f machinefile -n 4 hostname
Son kod satırından sonra ekranda dört RPinin isimlerini göreceksiniz. Hepsinin başarılı bir şekilde çalıştığını göreceksiniz.
1.4 CLUSTER ÜZERİNDE PROGRAM ÇALIŞTIRMA
Her zaman olduğu gibi PuTTY programını çalıştırıyoruz. Machinefile dosyasını oluşturduğumuz birinci RPimize bağlanıyoruz. Benimki 192.168.1.6idi.
Şimdi clusterda çalıştırmak için bir phyton programı oluşturalım.
o nano green.py
Açılan ekrana aşağıdaki örnek kodları yazalım.
"Resim-17"
Yukarıdaki kodları yazdıktan sonra programımızı kaydedelim.
o scp r green.py 192.168.1.6:/home/pi
diyerek green.py dosyamızı birinci RPimize de belirtilen adrese kaydettik. Aynı kodu kullanarak diğer RPilere de dosyamızı kaydedelim
o scp r green.py 192.168.1.7:/home/pi
o scp r green.py 192.168.1.8:/home/pi
o scp r green.py 192.168.1.9:/home/pi
Şimdi sıra programı çalıştırmaya geldi. Aşağıdaki kodu yazıyoruz.
o mpiexec f machinefile n 5 phyton green.py
Bu işlemden sonra Resim-18 deki gibi bir sonuç çıkacaktır.
"Resim-18"
o mpiexec f machinefile n 1 phyton green.py
Kodunu kullanırsak eğer ekranda sadece 1 işlem görünecektir.
Bu program basit bir programdır. Siz daha karmaşık bir program oluşturup aynı yöntem ile çalıştırıp bilgi edinebilirsiniz.
Raspberry Pi B+ Cluster (Super Bilgisayar) Yapımı
Son yıllarda Open Source Hardware ve Softwarelere olan ilgi git gide artmakta. Özellikle hobi kullanıcıları ve proje geliştiricilerinin tercih ettiği ürünlerden ola Raspberry Pi popülerliğini her geçen gün artırıyor.
LinuxGizmos ve Linux sitesinin desteği ve 1,721 katılımcı ile yapılan 2015in en iyi SBC(Single Board Computer)si anketinde Raspberry Pi B 2455 puan ile birinci seçildi. İlerleyen zamanlarda bu ankette yer alan kartların tanıtımı ve araştırma raporunu detaylı bir şekilde inceleyeceğiz nasip olursa. Ama Raspberry Pi hakkında bilgi almak istiyorsanız daha önce açtığım http://www.turkhackteam.org/elektronik-gadget/1184079-raspberry-pi-vs-beaglebone-black.html yazısını inceleyebilirsiniz. BeagleBone Blackde bu araştırma da ikinci oldu.
Bu günkü yazımızda sizlere Raspberry Pi ile bir süper bilgisayar nasıl yapılır onu anlatacağız. Kurulum aşamaları, sistem yükleme gibi basamakları tek tek açıklamaya çalışacağız. Yazı konumuz biraz uzun gelebilir fakat okumaya değer olduğunu düşünüyoruz. Çünkü 1,5 saatlik İngilizce video ve doktora makalesinden sizlere çeviri yapıp en sadece şekilde bu konuyu hazırlamaya çalıştık. Bu konuyu 2013te hazırlamaya niyetlenmiş fakat yayınlamak nasip olmamıştı bazı nedenlerden dolayı. Yayınlamak bugüne nasipmiş. Umarız pişman olmazsınız.
Süper Bilgisayar Nedir?
Süper bilgisayar basit olarak; yoğun paralel işlemciler, yüksek başarımlı vektör işlemciler ve öbek bilgisayarların oluşturduğu sistem (her bileşen olmak zorunda değil) olarak tanımlanabilir. Süper bilgisayarlar bilimde, deney ve hesaplamayı birleştiren hesaplamalı bilim gibi yeni metodolojilerin oluşmasını sağlamıştır. Günümüzde süper bilgisayarlar saniyede yüzlerce trilyon işlem yapar hale gelmiştir. Örneğin, dünyanın en hızlı süper bilgisayarı saniyede 136,8 trilyon kalıcı işlemle Amerikada Lawrance Livermore National Laboratuary isimli ulusal laboratuvarın kullanımındadır (teorik sınır bu rakamın üzerinde olup adı geçen makina için saniyede 183,5 trilyon işlemdir) Süper bilgisayarlar ilk defa 1960larda Seymour Cray tarafından Control Data Corporation da tasarlandı. Tarihçesi ve daha fazla detay için bkz: LINK
Raspberry Pi Beowulf Cluster
Raspberry Pi B ile süper bilgisayar yapımı Boise State Universitesi doktora öğrencisi olan Joshua Kieper tarafından 2013da yapıldı. Wireless sensörler arasında veri paylaşım ağındaki veri işlenmesini kolaylaştırmak için bir sisteme ihtiyaç duyması ile bu projeye başlıyor.
Kieper bu projeyi yaparken 32 Raspberry Pi kullanmış. Daha sonraları 100 tane Raspberry Pi ile yapılanları da ortaya çıktı fakat biz bu makalemizde 4 tane Raspberry Pi B+ ile bir süper bilgisayar oluşturacağız.
Raspberry Pinin Tercih Edilmesinin Nedeni?
Tercih nedenini Kieperın verilerine göre saymak istiyorum. Boise State Universitesi laboratuvarlarında Bilgisayar Bilimi bölümüne ait ****Geek Lab (yada Onyx Lab)ta bir clusterları zaten mevcutmuş. Bu Onyx cluster 32 nodeslu bir sistem. Ve her biri 3.1 GHz Intel Xeon E3-1225 quad-core işlemci ve 8 GB RAMe sahip. Bu sistem paralel programlama da yeterli performansa sahip bir sistem.
Asıl soru böyle bir sisteme sahip iken neden Raspberry Pi ile bir Beowulf clusterı inşa ediyor.
İlk olarak Onyx clusterdan başka alternatifleri yok yani her an elinizin altında bir sistem yok. Başka bir öğrenci bu sistemi kullanıyorsa sizin sıra beklemeniz gerekiyor. RPiCluster size MPI (Message Passing Interface) veya Java cluster dokümanlarını kullanmanıza olanak sağlıyor.
İkincisi, RPiCluster bize I2C, SPI, UART, GPIO gibi gömülü sistem için düşük seviye donanımsal ara yüz imkânı sağlıyor. Bu elektrikle ilgili mühendisliklere büyük çaplı gömülü sistemlerin yeterlilik testine olanak sağlıyor.
Üçüncüsü şahsa özel bir sistem oluşturulmuş oluyor ve istediğinizde sisteme ulaşabiliyorsunuz.
Ve son olarak Raspberry Pi daha hesaplı. RPi platform 32nodeslu bir cluster oluşturmak için en ucuz yöntemlerden bİri. 8GB SD cardlı bir Raspberry Pi aşağı yukarı 42$. Fakat bir Onyx cluster nodeu 1000$ ile 1500$ arası değişmekte. Yani siz bir Onyx cluster node fiyatına kendinize 32 nodelu bir Raspberry Pi cluster yapabiliyorsunuz.
Avantajlarının yanında bazı eksiklikleri de bulunmakta bu sistemin. Ucuz fakat bir Raspberry Pi, x86 bir PC gibi performans gösteremez elbette. Bir RPi tek çekirdekli ARMv6 nesil işlemci içeriyor ve işlemci hızı 700MHz. Ayrıca ARM mimarisi kullandığında bir PC işlemcilerinden farklı bir mimari yapıya sahip. Bu nedenle x86 üzerinde hazırlanan MPI bir program Raspberry Pi için tekrar derlenmeli. Tabi bu durum java, phyton ve perl programları için geçerli değil. Çünkü Raspberry Pi, Linux işletim sistemini çalıştırabilme yeteneğine sahip. Son olarak limitli işlemci gücüne sahip olduğundan çoklu kullanıcı desteğine sahip değildir.
Kuruluma Başlayalım
1.1 DONANIM KURULUMU
Malzemeler:
"Resim-1"
4 x Raspberry Pi B+ (En az 2 tane olsa da yeterli)
4 x Micro USB Power Kablo
4 x MicroSD Kart
1 x Netgear Switch (8 Port)
1 x Power USB-Hub
4 x Ethernet Kablo
2 x Raspberry Pi B+ Kılıf (Zorunlu değil)
Malzemeleri Kuruluma Hazır Etme:
"Resim-2"
Resim-2 de görüldüğü üzere; Ethernet kablolarını Switch ile bağlantısı sağlandı. Raspberry Pi B+lara enerji sağlamak için USB Hub tan Micro USBlere bağlantı sağlandı. Case kullanılarak Resim-2 de görüldüğü gibi tüm Raspberry Pi B+lar üst üste eklenerek daha düzenli olmaları sağlandı.
1.2 YAZILIM KURULUMU
1.2.1 Gerekli Yazılımların İndirilmesi Kuruluma Hazır Hale Getirilmesi
Raspberry Pi işletim sistemi olarak Raspbiannı kullanmakta. Bu sistem Linux kaynaklı bir sistemdir. İşletim sistemini kurmak için LINK adresinden Raspbianın güncel versiyonunu indiriyoruz. İndirme seçeneği olarak Resim-3te görüldüğü üzere Torrent ve Zip bağlantıları bulunmakta. Biz Zip bağlantısını seçiyoruz.
"Resim-3"
Raspbian iso dosyası indirildikten sonra sıra iso dosyasını microSD kartlara yazdırmaya geldi. Bunun için win32diskmanager programını kullanıyoruz. Programı LINK adresinden indirebilirsiniz. Bu adreste Win32DiskImager-0.9.5-install.exe dosyası bulunmakta bunu indirip kurulumunu gerçekleştiriniz.
"Resim-4"
Resim-4 te görüldüğü gibi Win32 programı kurulduktan sonra açıyoruz ve klasör simgesine tıklayarak iso dosyasının bulunduğu yeri seçip open diyoruz. Image File kutusunda adres şu şekilde görülecektir Örn: C:\\Users\\OmerFaruk\\Downloads\\Compressed\\2015-05-05-raspbian-wheezy.img. Daha sonra Device butonuna tıklayarak SD kartın sürücü adresi (Resim-4 te bu adres D sürücüsüdür.) seçmelisiniz.
Yukarıdaki işlemleri tamamladıktan sonra Write diyerek iso dosyasını SD kartımıza yazdırıyoruz.
1.2.2 İşletim Sisteminin Raspberry Pi B+a Yüklenmesi
İlk kez Raspberry Pi ye işletim sistemi kurarken 1 adet HDMI bağlantılı monitör ve klavyeye ihtiyacımız var. Ve işletim sistemi için gerekli güncellemelerin yapılabilmesi için Raspberry Pimizi ethernet kablosu ile internet bağlantısını sağlamamız gerekiyor.
İlk kurulumu tamamladıktan sonra Putty programı ile uzaktan kontrol sayesinde monitör ve klavye ye ihtiyaç duymadan güncellemelerimizi yapacağız.
"Resim-5"
Resim-5 te görüldüğü gibi Ethernet kablomuzu internet bağlantımızı sağladığımız router a bağladık (switche değil). HDIM kablomuzu, MicroSD kartımızı ve klavyemizin bağlantısını yaptık. Bu bağlantılardan sonra resimdeki gibi kırmızı MicroUSB kablomuzu bağladık ve Raspberry Pi otomatik olarak çalışmaya başladı.
"Resim-6"
Resim-6 da görüldüğü üzere bir setup menüsü açılacaktır. Kurulum için sırası ile aşağıdaki işlemleri uygulayınız.
1 Expand Filesystem menüsü üstüne gelip enter diyin. Siyah bir ekran gelip işlemi bitince sizde tamamlama onayı isteyecek ve okey deyip bir sonraki adıma geçin.
7 Overclock bölümünün üzerine gelip enter diyin, çıkan pencereyi ok diyin. Ve Resim-7 deki bölüm açılacaktır. Burdan ikinci sıradaki Modest 800MHz ARM ayarını seçin.
"Resim-7"
Overclocktan sonra ana menü den 8 Advanced Options bölümüne girin ve açılan sayfadan ikinci satırdaki A2 Hostname bölümününe girin ve açılan yeni sayfadaki alana Pi01 adını girin. (Ör: Resim-8)
"Resim-8"
Raspberry Pi ye Hostname verdikten sonra ana menüden yine 8 Advanced Optionstan A3 Memory Split seçeneğini seçiyoruz ve 64u silerek 16 yapıyoruz.
Daha sonra tekrar ana menüden 8 Advanced Optionstan A4 SSH bölümünü seçiyoruz ve Enable yapıyoruz.
Bu işlemler bitince ana menü ye dönüp TAB tuşuna basarak <Finish> butonuna seçiyoruz ve işlemimizi tamamlıyoruz. Ve sistem Reboot yapılıyor.
"Resim-9"
Resim-9 da görüldüğü gibi IP address 192.168.1.6 olarak ayarlanmış. Bu sizde farklı olabilir. Bunu bir yere not edin çünkü ilerde bu ip adresi ile uzaktan bağlantı kurarak işlemlerimize devam edeceğiz.
Sisteme giriş yapmak için Pi01 login: bölümüne pi yazıyoruz enterlıyoruz ve Password için rasberry şifresini oluşturuyoruz.
Artık monitör ve klavyeye ihtiyacımız kalmadı. Bu ilk kurulumdan sonra Raspberry Pimize uzaktan erişim sağlayarak işlemlerimize devam edebiliriz.
1.2.3 Putty Programı ile Raspberry Piye Uzaktan Erişim ve Kontrol
Google amcaya puttyyazıp sorguladığımızda çıkan ilk siteden programımızı indirip kuruyoruz. İndireceğimiz dosya putty.exe dosyasıdır.
"Resim-10"
Resim-10da görüldüğü gibi puttyyi indirdikten sonra exe ye tıklar tıklamaz kurulumsuz bu ekran ortaya çıkacaktır. Program üzerinde Host Name alanına Raspberry Pi yi kurarken size not almanız gerektiğini söylediğim IP adresini yani 192.168.1.6 yazıyoruz. Bu adres sizin kurulumda farklı olabilir. Siz kendinize ait IP adresinizi girin ve Open diyin.
"Resim-11"
Resim-11 deki gibi ekran gelecektir ve login as: bölümüne Raspberry Pi için kurulumda yazdığımız kullanıcı adını yani pi yazıyoruz. Ardından bizden şifresini isteyecek şifre olarak yazdığımız rasberryyi yazarak sisteme bağlanacağız.
"Resim-12"
Resim-12 de görüldüğü gibi Raspberry Pimize ulaşmış oluyoruz. Şimdi güncellemeler için aşağıdaki kod satırlarını tek tek kopyalayarak işlemlerimize devam edeceğiz.
Not: Kodları seçip kopyaladıktan sonra PuTTY ekranında imlecin bulunduğu yere gelip farenin sağ tuşu ile kopyaladığımız kodu yapıştırarak seri bir şekilde işlemlerimizi tamamlayabiliriz.
1.2.4 MPICH Kurulumu
o sudo apt-get updatemkdir mpich2
o cd ~/mpich2
o wget http://www.mpich.org/static/downloads/3.1/mpich-3.1.tar.gz
o tar xfz mpich-3.1.tar.gz
o sudo mkdir /home/rpimpi/
o sudo mkdir /home/rpimpi/mpi-install
o mkdir /home/pi/mpi-build
o cd /home/pi/mpi-build
o sudo apt-get install gfortran
o sudo /home/pi/mpich2/mpich-3.1/configure -prefix=/home/rpimpi/mpi-install
o sudo make
o sudo make install
o cd ..
o nano .bashrc
o PATH=$PATH:/home/rpimpi/mpi-install/bin
Üsteki kodu yazdıktan sonra klavyeden ctrl+6+X tuşuna basın ve çıkan yeni menü yü Yye basarak onaylayın. Ardından gelen File Name to Write: bölümüne .bashrc yazın ve enterlayarak kaydedin.
o sudo reboot
Reboot kodunu yazıp onyaladığımızda putty bağlantı koptu hatası verecektir. Putty ekranını uyarıdan sonra kapatıp tekrar Raspberry Pi ye bağlantı sağlayın.Ve aşağıdaki kodu yazın.
o mpiexec -n 1 hostname
Bu kodu girince bize Raspberry Pinin adını verecek. Daha önce Pi01 verdiğimizden ekranda Resim-13teki gibi Pi01 çıkacaktır.
"Resim-13"
1.2.5 MPI4PY Kurulumu
Aşağıdaki kodları sıra ile uygulayın:
sudo aptitude install python-dev
wget https://mpi4py.googlecode.com/files/mpi4py-1.3.1.tar.gz
tar -zxf mpi4py-1.3.1.tar.gz
cd mpi4py-1.3.1
python setup.py build
sudo python setup.py install
export PYTHONPATH=/home/pi/mpi4py-1.3.1
mpiexec -n 5 python demo/helloworld.py
İşlemlerimizi bitirmeden son bir işimiz kaldı. Sistemimizi şuan kurduk ve SD kart içindeki son halinin imageını alarak diğer SD kartlarına kopyalamak için SD kartımızı Raspberry Pi den sökelim ve bilgisayarımıza takalım.
Win32 Disk Imager programın tekrar çalıştırarak Image File boşluğuna adres olarak C:\\Users\\OmerFaruk\\Dektop\\Omer_RPI_cluster.img yazıyoruz. Device bölümünden de SD kartımızın bulunduğu konumu seçiyoruz ve ardından Read butonuna tıklayarak Masaüstüne Omer_RPI_cluster dosyamızı oluşturuyoruz. Bu image dosyasını ilk başta yaptığımız gibi Win32 Disk Imager ile diğer SD kartlarına yazdırıyoruz.
1.3 RPiLERİ TEK TEK YAPILANDIRMA
Bir önceki başlıkta işletim sistemini nasıl kuracağımızı ve ek ayarların nasıl yapılacağından bahsettik. Bu gölümde sizlere RPilere bağlanma ve hepsinin yapılandırılmasını anlatacağız.
Omer_RPI_cluster.img dosyasını bütün SD kartlara kopyaladıktan sonra RPilerinizi switche bağlayınız ve switchi de routerınıza takın. Bütün RPilerin güç kablolarını bağlayın ve sistemlerin başlamasını başlatın.
Image dosyasını hepsine kopyaladığımız için sistem isimleri aynı olacaktır önce bunları değiştirmemiz lazım. Bir önceki ana başlıkta kurduğumuz 192.168.1.6 RPi üzerinden diğer RPilere ulaşacak ve isimlerini değiştireceğiz.
PuTTY programını açıyoruz ve 192.168.1.6 IP adresli RPiye bağlanalım. Kullanıcı adı ve şifresini girelim. Ardından aşağıdaki işlemleri yapalım.
o sudo apt-get upgrade
Komutu girerek güncelleme yapıyoruz ve ardından nmapimizi kuruyoruz.
o sudo apt-get install nmap
Bu komuttan sonra bize Do you want to continue [Y/n]? diye sotuyor ve Y yazıp onaylıyoruz.
o ifconfig
Bu komut kullanmakta olduğumuz RP inin bilgilerini ekrana sıralıyoruz. Resim-14teki gibi.
"Resim-14"
o sudo nmap sn 192.168.1.*
Bu komut ile ağ bağlantımızı tarayıp bağlı bulunan cihazların IP adreslerini buluyoruz.
Resim-15 te görüldüğü gibi tarama sonucunda 192.168.1.6(ana RPimiz) ve 192.168.1.7 , 192.168.1.8 , 192.168.1.9 nolu IP adrese sahip diğer RPileri buldu. (Resimde 192.168.1.9 görünmüyor fakat o da var)
"Resim-15"
Bu sayede 4ünü de listeledik. Bunları kenara not alalım. Bu arada bu IP adresleri sizde farklı olabilir. Örnekteki gibi olacak diye bir şey yok.
Gelelim isimlerini değiştirmeye.
o ssh [email protected]
Komutunu girerek ikinci RPi mize bağlanıyoruz. Bize bağlantı kurmaya eminmisiniz diye soracak yes yazıp devam ediyoruz. Ardında [email protected] pasword: satırı ekrana gelecektir ve Image dosyasında ilk sistemi kurar iken kullandığımız şifreyi yani rasberryyi yazarak bağlanıyoruz.
Şimdi bu yeni (ikinci) RPimizin adını değiştirmek için
o sudo raspi-config
yazıyoruz ve giriş yapıyoruz. İlk kurulumdaki confirm ekranı açılacaktır. Advanced Optionstan A2 Hostname e giriyoruz ve ekranda Pi01 yazılı olarak gelecektir bunu Pi02 yapıyoruz. Ardından ana sayfadan Finish diyerek işlemimizi bitiriyoruz. Bu işlemden sistem reboot yapılacaktır. Ve ekranda Connection to 192.168.1.7 closed. yazacaktır en son.
Şimdi PuTTY yi kapatıp yeniden 192.168.1.6ya bağlanıyoruz. RPi iki için isim değiştirme işlemini aynı işlem sırası ile üç ve dört numaralı RPilerimiz için tekrarlıyoruz ve isimlerini sırayla Pi03, Pi04 yapıyoruz.
Bu işlemler bittikten sonra tekrar 192.168.1.6ya PuTTY ile uzaktan bağlanıyoruz. Şimdi sisteme machinefile kaydı yapmamız lazım. Kod satırına:
o nano machinefile
yazıyoruz. Ardından Resim-16 daki gibi RPilere ait dört adet IP adresini de yazıp kaydediyoruz.
"Resim-16"
Şimdi machinefileın çalışıp çalışmadığını kontrol edelim.
o mpiexec n 1 hostname
Komutunu yazdığımızda bie Pi01 görünecek. Bu machinefileın çalıştığını gösteriyor. Şimdi bütün RPilerimize aşağıdaki kodları yazarak yetki anahtarlarını ekleyelim.
o ssh-keygen
o cd ~
o cd .ssh
o cp id_rsa.pub pi01
o ssh [email protected]
Yukarıdaki kodta yazılan ip adresi ikinci RPinindi. Siz kendi RPinizin adresini yazın. Bu son kodu yazınca sizden password isteyecektir. Daha önce yazdığınız şifreyi yine yazıyorsunuz ve Pi02 ye bağlanıyoruz. Şimdi aşağıdaki kodları uyguluyoruz.
o ssh-keygen
o cd .ssh
o cp id_rsa.pub pi02
o scp 192.168.1.6:/home/pi/.ssh/pi01 .
o cat pi01>>authorized_keys
o exit
o ssh [email protected]
Şimdi üçüncü RPinin keyini oluşturalım.
o ssh-keygen
o cd .ssh
o cp id_rsa.pub pi03
o scp 192.168.1.6:/home/pi/.ssh/pi01 .
o cat pi01>>authorized_keys
o exit
o ssh [email protected]
Şimdi dördüncü ve sonunc RPinin keyini oluşturalım.
o ssh-keygen
o cd .ssh
o cp id_rsa.pub pi04
o scp 192.168.1.6:/home/pi/.ssh/pi01 .
o cat pi01>>authorized_keys
o exit
Yukarıdaki işlemler bitince aşağıdaki kodları sırayla uygulayalım.
o scp 192.168.1.7:/home/pi/.ssh/pi02 .
o cat pi02>>authorized_keys
o scp 192.168.1.8:/home/pi/.ssh/pi03 .
o cat pi03>>authorized_keys
o scp 192.168.1.9:/home/pi/.ssh/pi04 .
o cat pi04>>authorized_keys
o cd ~
o mpiexec f machinefile -n 4 hostname
Son kod satırından sonra ekranda dört RPinin isimlerini göreceksiniz. Hepsinin başarılı bir şekilde çalıştığını göreceksiniz.
1.4 CLUSTER ÜZERİNDE PROGRAM ÇALIŞTIRMA
Her zaman olduğu gibi PuTTY programını çalıştırıyoruz. Machinefile dosyasını oluşturduğumuz birinci RPimize bağlanıyoruz. Benimki 192.168.1.6idi.
Şimdi clusterda çalıştırmak için bir phyton programı oluşturalım.
o nano green.py
Açılan ekrana aşağıdaki örnek kodları yazalım.
"Resim-17"
Yukarıdaki kodları yazdıktan sonra programımızı kaydedelim.
o scp r green.py 192.168.1.6:/home/pi
diyerek green.py dosyamızı birinci RPimize de belirtilen adrese kaydettik. Aynı kodu kullanarak diğer RPilere de dosyamızı kaydedelim
o scp r green.py 192.168.1.7:/home/pi
o scp r green.py 192.168.1.8:/home/pi
o scp r green.py 192.168.1.9:/home/pi
Şimdi sıra programı çalıştırmaya geldi. Aşağıdaki kodu yazıyoruz.
o mpiexec f machinefile n 5 phyton green.py
Bu işlemden sonra Resim-18 deki gibi bir sonuç çıkacaktır.
"Resim-18"
o mpiexec f machinefile n 1 phyton green.py
Kodunu kullanırsak eğer ekranda sadece 1 işlem görünecektir.
Bu program basit bir programdır. Siz daha karmaşık bir program oluşturup aynı yöntem ile çalıştırıp bilgi edinebilirsiniz.
Moderatör tarafında düzenlendi: