Fonksiyonel ve İmperative programlama İle sıralama

Slides:



Advertisements
Benzer bir sunumlar
Yığınlama Sıralaması (Heap Sort)
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
ARM Tabanlı Mikrodenetleyici Temelleri ve Programlama
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
GENEL OLARAK Ana kart Nedir? Ana kartın Yapısı
Unsupervised Learning (Kümeleme)
Karmaşıklık Giriş.
Karmaşıklık Giriş.
Ayrık Yapılar Algoritma Analizi.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
IT503 Veri Yapıları ve algoritmalar
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
Bilgi Teknolojisinin Temel Kavramları
Bilgi Teknolojisinin Temel Kavramları
BPR152 ALGORİTMA VE PROGRAMLAMA - II
BPR151 ALGORİTMA VE PROGRAMLAMA - I
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
ÖĞRENME NESNESİ Sibel SOMYÜREK.  Çeşitli öğrenme ortamlarında tekrar kullanılabilen küçük parçalara bölünmüş olan e-içeriklere öğrenme nesnesi denir.
İŞLETİM SİSTEMLERİ KONTROL: PROF.DR.ASAF VAROL DÖNE KARAOĞLAN BİLGİSAYAR SİSTEMLERİ Bilgisayar Öğretmenliği (Gece) - 4.
Özyineli Sıralama Algoritmaları
TR-Grid Servisleri I. Ulusal Yüksek Başarım ve Grid Konferansı Nisan 2009, ODTÜ, Ankara Bu sunum.
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
BİLGİ TEKNOLOJİSİNİN TEMEL KAVRAMLARI
Algoritmalar DERS 4 Çabuk sıralama Böl ve fethet Bölüntüler
Nesneye Dayalı Programlama
MPI İle Paralel Programlama Tunahan Altıntop
Görsel Programlama Dr. Muhammet Balcılar
Bilgi Sistemi Organizasyonlar içerisindeki kontrol ve karar verme mekanizmalarında kullanılacak bilginin toplanması, işlenmesi, saklanması ve dağıtılmasını.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Linux Kurulumu BİLGİSAYAR PROGRAMCILIĞI BÖLÜMÜ
YAZILIM TABANLI RADYO UYGULAMALARI
YMT219: Veri Yapıları Ders Saatleri: Pazartesi 9:15-12, 17:30-20:15
Bilgisayar Programlama
HIZLI SIRALAMA ALGORİTMALARI(QUICK SORT)
Ümran Onay.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
AB Şubat 2002 Selçuk Üniversitesi1 IEEE/ACM Bilişim Ders Programı Önerisi ve Haliç Üniversitesi Deneyimi Doç. Dr. Atilla ELÇİ Bilgisayar Müh. Bölümü.
İKMAP İnternet 1 Ders Notu
Web 2.0 araçlarI MERYEM KAYA AKDENİZ ÜNİVERSİTESİ
ENF 204 Bilgisayar Programlama Algoritma ve Akış Diyagramları
Bilgi Teknolojisinin Temel Kavramları
Şahin BAYZAN Kocaeli Üniversitesi Teknik Eğitim Fakültesi
Karar Bilimi 1. Bölüm.
BİLGİSAYAR Kendisine verilen bilgiler üzerinde aritmetiksel, mantıksal ve karşılaştırma işlemleri yaparak sonuçları çıktı birimlerine gönderen elektronik.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Algoritmalar ve Programlama I Ders 8:DİZİ (VEKTÖR) KAVRAMI
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
DERS 4 MİKROİŞLEMCİ PROGRAMLAMA. Dr. Emin Argun Oral, Atatürk Üniversitesi 2008 Ders 4, Slayt 2İÇERİK Yüksek seviyeli programlama dilleri Düşük sevyeli.
PROJENİN ADI “Doğrusal Konumlandırıcılar” için Profesyonel Kontrol Ara yüz Tasarımı ve İmalatı.
Sıralama. Sıralama, bir dizideki sayısal elemanların küçükten büyüğe veya büyükten küçüğe, sayısal olmayan bir dizideki elemanların ise A’ dan Z’ ye.
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İLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi.
Nesne Tabanlı Yazılım Geliştirme Bora Güngören Portakal Teknoloji EMO Ankara Şubesi
Algoritma ve Akış Şemaları
BİLGİSAYAR NEDİR?.
Algoritmalar II Ders 1: Alan zaman takası yöntemi.
Insertion Sort Fikir: Oyun kartlarını sıralamaya benzer.
MALTEPE ÜNİVERSİTESİ Paralel Hesaplama MATLAB ve Paralel Hesaplama
İleri Algoritma Analizi
BİLGİSAYAR DONANIMI ANAKART ,RAM-ROM
Algoritmanın Hazırlanması
İleri Algoritma Analizi
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Amazon Web Servisleri ve Javascript Dilinin Birlikte Kullanımı
NİŞANTAŞI ÜNİVERSİTESİ
Algoritma ve Akış Diyagramları
Bilgisayar Bilimi Problem Çözme Süreci-3.
İleri Algoritma Analizi
Sunum transkripti:

Fonksiyonel ve İmperative programlama İle sıralama Elis Soylu ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ esoylu@ogu.edu.tr AB Konferansı Şubat’ 2014

Fonksiyonel ve İmperative Programlama İle Sıralama *Paralel Programlama *Sıralama AlgorİtmasI *Sıralama Çeşİtlerİ *Paralel Fonksiyonel Programlama *Haskell *Erlang *Nesnel Programlama *MPI *CUDA *Performanslar *Analİzler AB Konferansı Şubat’ 2014

Sıralama algoritması bilgisayar ortamında oldukça önemli bir yere sahiptir. Yazılım anlamında nesnel ve fonksiyonel diller bu algoritmanın paralelleştirilmesinde önemli bir yer tutar. Nesnel olarak MPI (Message Passing Interface) ve CUDA (Compute Unified Device Architecture)dilleri, fonksiyonel olarak Haskell ve Erlang dilleri yapısal açıdan bu algoritma doğrultusunda karşılaştırılacaktır. AB Konferansı Şubat’ 2014

Fonksiyonel Programlama genel adları altında toplanır. PARALEL PROGRAMLAMA Bilgisayar programlama, insan tarafından yapılacak herhangi bir işin veya hesaplamanın kısa bir sürede, enerji harcamadan gerçekleştirilmesini sağlayan bir yöntemdir. Nesne tabanlı Yordamsal Bildirimsel Fonksiyonel Programlama genel adları altında toplanır. AB Konferansı Şubat’ 2014

Doğru programlama seçimi hızlı hesapların yapılmasını kolaylaştırır. Çok çekirdekli bilgisayarlar ile eşzamanlı ortak iş yapılması hedeflenmiştir. Çekirdek sayısının az olduğu durumlarda etkin bir şekilde çalışabilen bir programlama dili, çekirdek sayısının artmasıyla bu etkinliği kaybedip bazı sorunlara yol açabilir. Doğru programlama seçimi hızlı hesapların yapılmasını kolaylaştırır. AB Konferansı Şubat’ 2014

Sıralama Algoritması   Sıralama algoritması, genel olarak matematikten güç alıp bilgisayar bilimlerine fayda sağlayan belli koşullar altında sıralama yaptıran önemli bir tekniktir. Sıralama yapılırken en çok kullanılan yapılar sayı büyüklüğü ve alfabetik kısıtlardan oluşmaktadır. Sıralama, genel olarak bir veri yığınının düzenlenebilmesini sağlayan önemli bir yapı taşıdır. AB Konferansı Şubat’ 2014

Sıralama mantığına göre içsel (internal) dışsal (external) sıralamaları vardır.   En çok bilinen sıralama türleri kabarcık sıralaması (bubble sort) hızlı sıralama (quicksort) seçmeli sıralama (selection sort) birleştirmeli sıralama (merge sort) şeklindedir. AB Konferansı Şubat’ 2014

Kabarcık sıralama, ilk elemandan başlayarak ve her geçişte yan yana bulunan elemanları inceleyen ve sıraya sokan bir sıralama çeşididir. Hızlı sıralama, veriler için rastgele bir x elemanını belirleyip sol tarafına kendinden küçükleri, sağ tarafına ise büyükleri yerleştirerek kurulur. Seçmeli sıralama, verilerin 1.,2.,3. ,… sıradaki elemanları ile en küçük, en küçük 2. eleman,…şeklindeki elemanları yer değiştirilerek kurulur. Birleştirmeli sıralama ise, veri yapısı ikişerli parçalar haline inene kadar bölünerek, bu parçaların kendi içlerinde sıralanmasıyla birleştirme yapılarak elde edilir. AB Konferansı Şubat’ 2014

Paralel Fonksiyonel Programlama Paralellikteki mantık, yapılması gereken işi paylaştıran, çeşitli birimlere veren ve bu işi eş uyumlu olarak gerçekleştiren etkin bir programlama çeşididir. Paralel programlama mantığının önündeki en büyük engel, eldeki bir verinin değerini diğer işlemcilere dağıtabilmek için çoğaltma ve değiştirme yetkisine sahip olmasıdır. Fonksiyonel Diller; Haskell, Erlang, F#, Scala, ML, … olarak sıralanabilir. Bunlardan ikisi Haskell ve Erlang fonksiyonellik açısından önemlidir. AB Konferansı Şubat’ 2014

Fonksiyonel bir dilin özellikleri Ortak sınıf yapısı olarak fonksiyonlar kullanıldığından parametreler aynı olduğu sürece aynı sonuçlar elde edilir. Fonksiyonlar yapısal olarak kendi verisi dışındaki verilerde değişiklik yapamaz. Dolayısıyla yan-etki durumuyla karşılaşılmaz. Fonksiyonel dilde bir değişkene atanan değer program sonuçlanıncaya kadar bir değişikliğe uğramaz. Değişikliğin yapılmasının zorunlu olduğu durumlarda özyinelemeli (recursive) yapılar kullanılır. AB Konferansı Şubat’ 2014

Fonksiyonel dildeki bir fonksiyon oluşturduğu değer ile birebir eşlenmiştir. Dolayısıyla tersine bir durum kolaylıkla elde edilebilir. Bu dil sayesinde farklı bir bakış açısı sunmasından dolayı matematiksel bir yorum katar. Daha kısa ve anlaşılabilir kod yazımı sayesinde de büyük bir avantaj sağlar. AB Konferansı Şubat’ 2014

Haskell Fonksiyonel dillerden biri olan Haskell, herhangi bir yazılımı modellerken yapının temelinin tamamen fonksiyonlardan oluşmasını kullanır. Veri yapılarının içeriğini değiştirmek yerine onlardan yeni veri yapıları türeten fonksiyonlar oluşturur. Yani her şey bir fonksiyondur. Haskell dili, tanımlı temel tip ve fonksiyonlar ile kullanıcı tarafından tanımlanan tip ve fonksiyonlardan ibarettir. AB Konferansı Şubat’ 2014

Haskell dilinin elemanları Temel veri tipleri Her bir veri tipinin sabitleri Veri tipleri arasındaki fonksiyonlar Veri tiplerine ve fonksiyonlara uygulanan yapıcılar AB Konferansı Şubat’ 2014

Haskell Derleyicisi AB Konferansı Şubat’ 2014

Haskell ’de Sıralama qsort [] = [] qsort (x:xs) = qsort small ++ mid ++ qsort large where small = [y | y<-xs, y<x] mid = [y | y<-xs, y==x] ++ [x] large = [y | y<-xs, y>x] >>qsort [2,-5,3,1,6] >>[-5,1,2,3,6] AB Konferansı Şubat’ 2014

Erlang Erlang, yüksek geçerliliğe sahip oldukça fazla büyüklükteki işlemlerin gerçekleştirilmesini sağlayan bir programlama dilidir. Günlük yaşamda, haberleşme, bankacılık, e-ticaret, anlık mesajlaşma gibi alanlarda sıklıkla karşılaşılır. Erlang dili, Ericsson firmasının dili olarak bilinir. Daha çok haberleşme alanında bu dil kullanılır ve daha çok tanınır. AB Konferansı Şubat’ 2014

Nesnel Programlama Nesnel programlama, çözülecek problemi parçalayarak nesne üzerinden çözüm yöntemi geliştirir. Nesne mantığı, daha sonra da kullanılma olasılığına karşın genel bir yapıda toplanmasına dayanır. Parça parça elde edilen çözüm adımları çözüme bütün bir şekilde ulaşabilmek için bir araya getirilir. Nesnel programlama dilleri arasında, C++, MPI, Java, CUDA, C#,… gösterilebilir. Bunlardan ikisi, MPI ve CUDA paralellik açısından önemlidir. AB Konferansı Şubat’ 2014

MPI MPI, genel olarak program çalışma süresini kısaltacak paralelleştirme mantığında kullanıcıya kolaylık sağlayan mesaj gönderim yöntemini kullanan ara yüzdür. C, Fortran dilleri yardımıyla MPI ile haberleşme ortamı kurulur. Haberleşme, MPI ara yüzü yardımıyla mesaj gönderme-alma şeklindedir. MPI programının mesajı alan, gönderen, ortamdaki bilgisayar sayısı, bilgisayar sırasını bulan fonksiyonları temel olarak her kod bloğunda yer alır. AB Konferansı Şubat’ 2014

CUDA CUDA, NVIDIA firması tarafından bilgisayarın ekran kartı bileşenini etkin şekilde kullanmaya yardımcı olan bir mimaridir. Ekran kartı üzerinde bulunan çok sayıdaki küçük işlemciler bilgisayarda gerçekleştirilen temel aritmetik hesaplamalar haricinde paralel hesaplamaya da yardımcı olur. Bu aşamada ekran kartındaki işlemci yapısında yer alan ‘thread’ ler yardımıyla görev dağılımı yapılarak paralel hesaplama elde edilir. AB Konferansı Şubat’ 2014

Hızlı sıralama algoritmasının seçilen dillerdeki performansları Hızlı sıralama algoritması genelde n elemanlı bir diziyi O(n logn) karmaşıklığıyla sıraya koyar. Sıralamanın bozuk bir şekilde başladığı durumlarda ise en kötü O(n2) süreye kadar işlem yapar . AB Konferansı Şubat’ 2014

Hızlı sıralama algoritması Fonksiyon qsort(dizi) kucuk, eşit, buyuk listelerini oluştur Boyut(dizi)<1 ise diziyi döndür. Diziden bir pivot değer belirle Dizideki her x elemanı için X < pivot ise kucuk listesine al, X = pivot ise esit listesine al, X > pivot ise buyuk listesine al, qsort(qsort(kucuk),esit,qsort(buyuk)) için döngüyü tekrarla. AB Konferansı Şubat’ 2014

Seçilen Programlama Dillerinin Hızlı Sıralama Algoritma Analizleri Donanım Süre Veri Seti Haskell Intel Core 2 Quad 2.9548s 106 Erlang 4.14s MPI 1.25s CUDA 1.6s AB Konferansı Şubat’ 2014

Sonuç ve Öneriler Paralel programlamada nesneye yönelik programlama dilleri fonksiyonel dillere göre daha hızlı sonuçlanmaktadır. Uygun mimari seçimi ile daha büyük veriler de nanosaniye derecesinde hesaplamalarla sıralanabilir. Farklı tür sıralama algoritmaları için de aynı dil üzerinde etkin çözüm yöntemleri ile daha hızlı sonuçlar alınabilir. Aynı dil üzerinde farklı programlama türleri ile daha hızlı sonuçlar alınabilir. AB Konferansı Şubat’ 2014

SORULAR ? AB Konferansı Şubat’ 2014

KAYNAKLAR AB Konferansı Şubat’ 2014

www.vikipedi.org.tr  enformatik.kku.edu.tr/uygulamalar http://en.wikipedia.org/wiki/Functional_programming D. Hünniger, Haskell, 2012 http://www.erlang.org/ Mesut, A. , Programlama Dilleri, 2011  Kaleci, D. ,Şahin A., Kaya O.A., MPI ile Paralel Programlamanın Temelleri, Akademik Bilişim'09, 2009  http://www.nvidia.com/object/cuda_home_new.html Capannini, G.,Silvestris, F., Baraglia, G. , Sorting on GPUs for large scaled at a sets: A through comparison, Information Processing and Management, 2011  AB Konferansı Şubat’ 2014

Jones, D. , Marlow, S., Singh, S., Parallel Performance Tunning for Haskell , ACM SIGPLAN Symposium on Haskell, 2009 Patterson, M.,Sagonas, K., Johanson, E., TheHiPE/x86 Erlang Compiler: System Description and Performance Evaluation, 2012  http://www.codeproject.com/Articles/42311/Parallel-Quicksort- using-MPI Performance-Analysis http://on-demand.gputechconf.com AB Konferansı Şubat’ 2014

AB Konferansı Şubat’ 2014 ELİS SOYLU esoylu@ogu.edu.tr MUAMMER AKÇAY muammer.akcay@dpu.edu.tr AB Konferansı Şubat’ 2014