Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
MPI İle Paralel Programlama Tunahan Altıntop
2
Konular: Neden Paralel Hesaplama? Paralel İşlem Seri Hesaplama Nedir?
Paralel Hesaplama Nedir? Bellek Modelleri : Dağıtık Bellekli Model Dağıtık Bellekli Model Ve C Dili İçin Paralel Programlama Adımları MPI Sürümleri MPICH Kurulumu Ve Çalışırlığının Test Edilmesi DevC++ Uygulamasının MPI İçin Konfigrasyonu MPI Nedir? MPI Kullanmanın Nedenleri MPI Fonksiyonları ve MPI Programının Genel Yapısı MPI İle Asal Sayıların Bulunması Uygulaması Sorular?
3
Neden Paralel Hesaplama?
Zaman: Daha büyük problemleri daha uygun sürelerde çözebilme Performans: Performansı artırmanın önemli bir yolu Maliyet/Performans: Vektör bilgisayarların maliyetlerinin çok fazla olması Bellek: Çoğu problemin kaçınılmaz ihtiyacı Gittikçe Artan İhtiyaçlar: Dağıtık veritabanları, görselleştirme kalitesinin artması gibi ihtiyaçlar…
4
Amaç: 2 işlemci ile hızlanmayı iki katına çıkarmak
Paralel İşlem Amaç: 2 işlemci ile hızlanmayı iki katına çıkarmak Örnek: 8 sayının toplanması Seri(1 işlemci) Paralel(2 işlemci) Adım Hızlanma: 1.75x 36 7 Adım
5
Seri Hesaplama Nedir? Yazılım bilgisayar üzerindeki tek Merkezi İşlem Birimi üzerinde çalışmaktadır Problem komutlara ayrılmıştır Komutlar ardışık olarak çalıştırılmaktadır Herhangi bir anda sadece bir komut çalıştırılabilmektedir.
6
Paralel Hesaplama Nedir?
Bir problemi çözmek için çok sayıdaki hesaplama kaynağı aynı anda kullanılmasıdır. Problem çok sayıda CPU üzerinde çalışmaktadır Her bir parça kümesi komutlara ayrılır Her bir parçanın komutları aynı anda farklı CPU’lar üzerinde çalıştırılabilir
7
Bellek Modelleri: Dağıtık Bellekli Model
Farklı bellek ve farklı işlemcilerin network aracılığıyla haberleştirilmesi ve küme yapısı (Cluster) sağlanması
8
Paralel Programlama Adımları
Programlama Dili + Paralel Kütüphane = Paralel Program (C) Dağıtık Bellekli Model PVM (Parallel Virtual Machine) MPI (Message Passing Interface)
9
MPI Sürümleri Ücretsiz: MPICH OpenMPI Ücretli: SUN MPI Intel MPI
10
MPICH Kurulumu MPICH ücretsiz olarak kullanılabilen ve Windows işletim sistemi için ideal olarak kullanılabilecek bir MPI sürümüdür Demo uygulaması MPICH2 1.1 sürümü ile gerçekleştirilmiştir Uygulamanın çalışması için .netFramework2.0 veya üzeri gereklidir. MPICH çalıştırılacak olan bilgisayarlarda aynı isimle ve aynı parolaya sahip kullanıcı oluşturulmalıdır Önemli: Firewall ayarlamaları yapılmalıdır
11
MPICH Kurulumu Kurulum sonra aşağıdaki resimde de görülen passphrase kısmına her bilgisayarda da aynı olacak şekilde şifre girilmelidir.
12
MPICH Kurulumu Bu anlatımda komut penceresinden çalışmak tercih edilmiştir. Bu işlemi daha rahat gerçekleştirebilmek için bilgisayarın ortam değişkenlerindeki path kısmına C:/Program Files/MPICH2/bin dizini eklenmelidir. Bu işlemden sonra komut penceresinden direk olarak mpiexec komutu çalıştırılabilir duruma gelmiş olur.
13
MPICH Test Edilmesi mpiexec –localonly –n 2 hostname Bu komut ile bilgisayarımızın adı ekranda iki kere yazılacaktır. Ağda kullanacağımız diğer bilgisayarlar ile çalışmasını test etmek içinde mpiexec –hosts 2 <hostname1> <hostname2> hostname Bu komutların denenmesi
14
DevC++ Uygulamasının MPI İçin Konfigrasyonu
MPI uygulamalarını C programlama diliyle geliştirmek için ücretsiz bir yazılım olan DevC++ uygulaması kullanılabilir. MPI uygulamalarının DevC++’ da çalışabilmesi için include ve lib parametreleri DevC++ daki projemize eklenmelidir. Aksi takdirde programımız çalışmaz. Program üzerinde ayarlamaların gösterilmesi
15
MPI Nedir? MPI standartları belirlenmiş mesajlaşma kütüphanesidir (Message Passing Interface) MPI arayüzü mesajlaşmalı programlama için geniş kullanıma sahip standarttır. Standart: Pratik Taşınabilirlik Etkili Esnek
16
MPI Kullanmanın Nedenleri?
Standart: Standart olarak kabul edilen kütüphanedir (1993) Taşınabilirlik: MPI standartlarını destekleyen farklı platformlar arasında uygulama taşımaları sonucunda kod üzerinde değişiklik yapmaya gerek yoktur Performans Fırsatları: Yazılım geliştiricileri donanımın özelliklerine göre ayarlama yapabilir Fonksiyon Yapısı: MPI 1 den MPI 2 ye doğru bulundurulan fonksiyon sayısı artmıştır Erişilebilirlik: MPI in farklı şirket ve gönüllüler tarafından geliştirilen sürümlerine kolayca erişilebilir
17
MPI Fonksiyonları Başlatma/Sonlanırma Fonksiyonları
Noktadan Noktaya Haberleşme Fonks. Toplu Haberleşme Fonksiyonları Haberleşme Topolojisi Fonksiyonları Kullanıcı Veri Tipi Tanımlama Fonksiyonları Araçlar (Zaman ölçme gibi)
18
MPI Programının Genel Yapısı
MPI Başlık Dosyası: #include<mpi.h> MPI Çevresini Hazırlama: MPI_Init MPI Çağrıları ve Problemin Çözülmesi MPI Çevresini Sonlandırma: MPI_Finalize
19
MPI Haberleşme Ortamının Kurgulanması
Nesneleri Haberleşme Dünyaları Grupları MPI fonksiyonlarının çoğu haberleşme dünyasına ihtiyaç duyar Bu ihtiyaca MPI süreçlerinin tamamını kapsayan MPI_COMM_WORLD değişkeni cevap verir MPI_Comm_size: Haberleşme dünyası ile ilişkili grubun boyutunu belirtir. (işlemci sayısı) MPI_Comm_rank: Sürecin haberleşme dünyasındaki sırasını belirtir. 0 dan başlar ardışık, tekil ve tam sayıdır.
20
MPI Çevresel Yönetim Fonksiyonları
Amaç: MPI çevresini hazırlamak MPI çevresini sonlandırmak MPI çevresini sorgulamak Sıra numarası v.s. belirlemek MPI_Init: MPI çevresini hazırlar Her MPI programında mutlaka bulunur Herhangi bir MPI fonksiyonundan önce çağrılmalıdır. MPI programı içinde sadece bir kere çağrılır Örnek kullanımı: MPI_Init(int *argc, char **argv[])
21
MPI Çevresel Yönetim Fonksiyonları
MPI_Finalize: MPI çalışma çevresini sonlandırır Bu fonksiyondan sonra çağrılan MPI fonksiyonları haliyle geçersizdir Örnek kullanımı: MPI_Finalize(void) MPI_Comm_size: Haberleşme dünyası ile ilgili grubun kaç sürece sahip olduğunu belirler Genellikle MPI_COMM_WORLD haberleşme ortamı uygulamanın kullanacağı süreç sayısını belirtir. Örnek kullanım: int MPI_Comm_size(MPI_COMM_WORLD, int *size)
22
MPI Çevresel Yönetim Fonksiyonları
MPI_Comm_rank: Çağrıldığı sürecin haberleşme ortamındaki sıra numarasını belirtir MPI_COMM_WORLD haberleşme ortamında sıra numarası 0 ile (Süreç-1) arasında tekil tamsayıdır Örnek kullanım: int MPI_Comm_rank(MPI_COMM_WORLD, int *rank) MPI_Send: İstenilen veriyi istenilen noktaya bloklu şekilde gönderir Basit bloklu gönderme işlemidir. Fonksiyon gönderici sürecinin uygulama tamponu tekrar kullanmaya uygun olduğunda sonlanmaktadır.
23
MPI Çevresel Yönetim Fonksiyonları
MPI_Recv: Belirli bir veriyi istenilen kaynaktan bloklu bir şekilde alır. Fonksiyon alıcı süreci bir mesaj alana ve uygulama tamponunda istenilen veri olana kadar sonlanmayacaktır.
24
MPI İle Asal Sayıların Bulunması Uygulaması
Sorular? Son
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.