MPI İle Paralel Programlama Tunahan Altıntop

Slides:



Advertisements
Benzer bir sunumlar
Fonksiyonlar - Functions
Advertisements

Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
YAZILIM (SOFTWARE).
C PROGRAMLAMA DİLİNE GİRİŞ
Bölüm 2 C Dilinin Temelleri
C Programlama Diline Giriş
İşletim Sistemlerine Giriş – 2 Kaynakların Paylaşımı
Atama ve Girdi/Çıktı Komutları
Bölüm 2: Program Denetimi
Bölüm 1: Introductions (Tanıtım,Tanım)
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
CLUSTER COMPUTİNG (KÜME HESAPLAMA )
Bölüm 10 Yapılar ve Birleşimler
NESNEYE YÖNELİK PROGRAMLAMA
Nesneye Dayalı Programlama
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
Görsel C# ile Windows Programlama
Bilgisayar Programlama
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
Paralel Programlamaya Giriş
FONKSİYONLAR.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
İŞLETİM SİSTEMLERİ Öğr. Gör. S.Serkan TAN.
BİLGİSAYAR YAZILIMI.
Bilgisayar Programlama
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Ümran Onay.
Diziler (Arrays).
Aşağıdakilerden hangisi işletim sistemi değildir?
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bilgisayar Programlama. Tek bir değişken tanımlamak için aşağıdaki gibi bir yazım yeterlidir. int i; Hatırlanacağı gibi bu tarz bir tanımlamada.
Paralel Programlamaya Giriş 2
Paralel Programlamaya Giriş
DİZİLER Arrays.
GRİD HESAPLAMA PARALEL HESAPLAMA
Türkiye’de Yüksek Başarımlı Hesaplama Prof. Dr. Cevdet Aykanat Bilkent Üniversitesi Bilgisayar Mühendisliği Bölümü.
BİL542 PARALEL PROGRAMLAMA
BİLGİSAYAR DONANIMI Hazırlayan: Emre ŞENTÜRK ( )
AÇIK KAYNAK İŞLETİM SİSTEMİ
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
1 Yapılandırılmamış programlama Prosedür/Fonksiyon gerekliliği Prosedural Programlama Fonksiyon Tanımlama/Prototip/Çağırma Örnek fonksiyonlar Fonksiyon.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Bilgisayar Grafikleri Ders 12: OpenGL_5 Örnekler
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
Veri yapıları Hafta3 Dizi Yapıları.
Hafta2 Rekürsif Algoritmalar
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Programlama Laboratuarı-I DERS - 3 Program Geliştirme Derleyici ve DevC++ Derleyicisi.
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
SÜPERBİLGİSAYARLAR ve BEOWULF KÜMELERİ Niyazi ELVAN.
Doküman Yönetim Sistemi (DYS) Kurulumu ve Ayarları
Fonksiyonlar ve Diziler
C Programlama Dili Bilgisayar Mühendisliği.
BİLGİSAYARDA DONANIM ve YAZILIM
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
C Programlama Diline Giriş
Bölüm 2 C Dilinin Temelleri
Kaynakların Paylaşımı
Bir bilgisayar sisteminin 4 bileşeni vardır;
Bilgisayar Bilimi Problem Çözme Süreci-2.
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 2 C Dilinin Temelleri
Bilgisayar Bilimi Fonksiyonlar-2.
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

MPI İle Paralel Programlama Tunahan Altıntop

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?

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…

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) 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 3 + 3 + 4 + 5 + 6 + 7 + 8 3 + 3 + 4 + 5 + 6 + 15 6 + 4 + 5 + 6 + 7 + 8 6 + 4 + 5 + 21 10 + 5 + 6 + 7 + 8 10 + 25 15 + 6 + 7 + 8 36 21 + 7 + 8 4 Adım 28 + 8 Hızlanma: 1.75x 36 7 Adım

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.

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

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ı

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)

MPI Sürümleri Ücretsiz: MPICH OpenMPI Ücretli: SUN MPI Intel MPI

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

MPICH Kurulumu Kurulum sonra aşağıdaki resimde de görülen passphrase kısmına her bilgisayarda da aynı olacak şekilde şifre girilmelidir.

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.

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

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

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

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

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)

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

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.

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[])

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)

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.

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.

MPI İle Asal Sayıların Bulunması Uygulaması Sorular? Son