Paralel Hesaplama ve CUDA



Benzer belgeler
DAĞITIK PARALEL SİSTEMLER HAKKINDA KIYASLAMALI BİR ÇALIŞMA: PVM VE MPI A COMPARATIVE STUDY ON DISTRIBUTED PARALLEL SYSTEMS: PVM AND MPI

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

Program AkıĢ Kontrol Yapıları

Bilgisayar Sistemlerine Genel Bakış

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

Eskişehir Osmangazi Üniversitesi, Fen Edebiyat Fakültesi Matematik- Bilgisayar Bölümü, Eskişehir 2

Donanımlar Hafta 1 Donanım

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

BM-311 Bilgisayar Mimarisi

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

Büyük Ölçekli Paralel Nükleer Kabuk Modeli Hesaplamaları

Bitirme Ödevi Sunumu PLATFORM BAĞIMSIZ BENZETİM PROGRAMI. Danışman : Yrd.Doç.Dr. D Feza BUZLUCA Gökhan Akın ŞEKER

Paralel Gözlemleme Sistemleri Hakkında Kıyaslamalı Çalışmalar

Paralel Programlama Ortamları

BĠLGĠSAYAR AĞLARI. 1-Bilgisayar ağı nedir? 2-Ağ türleri 3-Ağ bağlantıları 4-Ġnternet kavramı ve teknolojileri

İŞLETİM SİSTEMLERİ. (Operating Systems)

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

MATLAB A GİRİŞ. EE-346 Hafta-1 Dr. Ayşe DEMİRHAN

Bilgisayar Mühendisliği. Bilgisayar Mühendisliğine Giriş 1

SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma

BĠLGĠ ĠġLEM DAĠRE BAġKANLIĞI FAALĠYET RAPORU

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BİT in Temel Bileşenleri (Yazılım-1)

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

NETCAD 6 GIS KURULUMU (2012)

ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME

İşletim Sistemlerine Giriş

YZM 3102 İşletim Sistemleri

Uygulamaların Grid e Aktarılması

DONANIM KURULUMU. Öğr. Gör. Murat YAZICI. 1. Hafta.

Bilgisayar Mimarisi Nedir?

Hasan ARMUTLU 1 Muammer AKÇAY 2

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

Bilgisayar (Computer) Bilgisayarın fiziksel ve elektronik yapısını oluşturan ana birimlerin ve çevre birimlerin tümüne "donanım" denir.

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

Uygulamaları ulut bilişime geçirmeden önce, firmanızın/şirketinizin ya da. işinizin gereksinimlerini göz önüne almanız gerekir. Aşağıda bulut bilişime

BİLGİSAYAR MİMARİSİ. Komut Seti Mimarisi. Özer Çelik Matematik-Bilgisayar Bölümü

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Gezgin Satıcı Probleminin Benzetilmiş Tavlama Yöntemiyle Çözümünde Paralel Hesaplamanın Kullanılması

İşletim Sistemleri. Bilgisayar Mühendisliğine Giriş. Teknoloji Fakültesi / Bilgisayar Mühendisliği. Öğr.Gör.Günay TEMÜR

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

KONU 1 BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Bilgisayar Programlama Dilleri

Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi

Bilgisayarların Gelişimi

Yazılım Mühendisliğine Giriş 2018 GÜZ

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

PR Kasım 2009 Yazılım, PC-tabanlı kontrol Sayfa 1 / 5

MTM 305 MĠKROĠġLEMCĠLER

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

Bilgisayar Ağları ve Dağıtık Programlama

Sanallaştırmada Özgür Yazılım Çözümleri. Alper YALÇINER

Sonsuz İmkan için Esnek İnce İstemci

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Bilgisayar İşletim Sistemleri BLG 312

İşletim Sistemleri (Operating Systems)

Bilişim Teknolojilerine Giriş

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI DERS KATALOĞU

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

İşletim Sistemlerine Giriş 2. Kaynakların Paylaşımı. Öğr.Gör. Dr. Şirin KARADENİZ

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

Bilgisayar Mühendisliği Bölümü

Intel Parallel Studio ile Paralel Hesaplama

ODTÜ Kampüs Izgara Hesaplama Uygulaması

Java 2 Micro Edition (J2ME)

BLM 4811 MESLEKİ TERMİNOLOJİ II Salı , D-109 Dr. Göksel Biricik

BM-311 Bilgisayar Mimarisi

Linux e Giriş ve Dağıtımlar

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

08225 AĞ TEMELLERĠ. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 20 EKi Salı, Çarşamba

ÖĞRENME FAALĠYETĠ 3 ÖĞRENME FAALĠYETĠ 3

Grid Uygulamaları.

İZLEME VE KAYIT YAZILIMI

BİLGİSAYAR AĞI NEDİR?

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Temel Bilgisayar (Basic Computer) Yazılım (Software)

Dell EMC VDI Cloud Client Computing Uçtan Uca Çözümler. İsel Horada Dell EMC Forum İstanbul

Ġnternet ve Harekât AraĢtırması Uygulamaları

SPARC v8 İŞLEMCİ SİMÜLASYONU

BİLGİSAYAR DESTEKLİ ÖĞRETİM GENEL BAKIŞ

4. Bölüm Programlamaya Giriş

Bilgisayarım My Computer

OPC Data Access (DA) Temelleri

Kablosuz Algılayıcı Ağlarda Düğümler Arasında Veri HaberleĢmesi

Bilgisayar Mühendisliğine Giriş

İşletim Sistemleri (Operating Systems)

Paralel Hesaplama. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

MÜFREDAT DERS LİSTESİ

GridAE: Yapay Evrim Uygulamaları için Grid Tabanlı bir Altyapı

Yazılım Mühendisliğine Giriş 2018 GÜZ

Transkript:

6. Uluslar arası İleri Teknolojiler Sempozyumu (İATS 11), 16-18 Mayıs 2011, Elazığ, Türkiye Paralel Hesaplama ve CUDA M. Akçay 1 B. ġen 2, Ġ.M. Orak 3, A. Çelik 4 1 University of Dumlupınar, Kütahya/Turkey, makcay@mail.dumlupinar.edu.tr 2 University of Karabük, Karabük/Turkey, baha.sen@gmail.com 3 University of Karabük, Karabük/Turkey, imorak@karabuk.edu.tr 4 University of Dumlupınar Kütahya/Turkey, mail.ahmetcelik@gmail.com Parallel Computing and CUDA Abstarct In this study, distributed shared-memory parallel systems are examined, the GPU (Graphic Processing Unit) running on the shared-memory system, parallel system with CUDA (Compute Unified Device Architecture) parallel and distributed systems are widely used in PVM (Parallel Virtual Machine) and MPI (Message Passing Interface) is introduced. Distributed systems offer economic solutions for highperformance computing needs. When you buy a graphics card of the NVIDIA CUDA driver software company along with easily installed and used. CUDA, the GPU as a parallel system on a shared memory is running at the same time millions Thread provides a parallel. Although it is easy to program CUDA distributed parallel systems is difficult. In this study, the program to run on the CUDA technology is shown with an example. Keywords Parallel, CUDA, PVM, MPI, Distributed, Shared memory parallel system, Thread, GPU. I. GĠRĠġ Yüksek performanslı sistem, paralel bir sistemin sonucudur. Tek iģlemcili bir sistemden yüksek performans elde etmek hem fiziksel ve hem de ekonomik nedenlerden dolayı gerçekleģtirilemez. Bunun yerine ortak bellekli veya dağıtık bellekli sistemler olarak ifade edilen paralel sistemlerin kullanılması çözüm olabilir. Ortak bellekli paralel sistemlerin programlanması kolay, ancak üretilmesi zor ve bu nedenle pahalıdır. Dağıtık bellekli sistemler ise programlaması zor, piyasadan kolaylıkla temin edilebilen bilgisayarların hızlı bir ağ ile haberleģtirilmesi sonucu elde edilerek kurulumu kolaydır. Dağıtık sistemlerde mevcut sistem kaynakları kullanılabildiğinden maliyeti de azdır. Amaç yüksek performans elde etmek olduğundan, pahalı kaynakların en verimli Ģekilde kullanılmasına dikkat edilmelidir [1]. Yüksek performanslı sistemlerin ihtiyaç duyulduğu birçok alan vardır. Bunlar; karmaģık ve büyük zaman alan sayısal hesaplamalar, farklı uygulamalar için simulasyonlar, deney sonuçlarının görüntülenmesi, hesaplamaların hata oranlarının tespiti gibi birçok uygulama için kullanılmaktadır. Özellikle mühendislik uygulamalarında, tasarım sürecindeki prototip gerçekleme ve test evresi ortadan kaldırılarak, artık simulasyon yoluyla üretilen ürünler test edilmektedir. Bu da zaman ve maliyet açısından önemli katkı sağlamaktadır. Örneğin artık araba firmaları üreteceği arabaların modellerini bilgisayar ortamında simule etmekte ve sonuçlarını (örneğin çarpıģma hasar deneyleri) değerlendirip, üreteceği modelin kısa zamanda revizyonlarını yaparak, üretim sürecine geçmektedir [1]. Donanım kaynaklarının paralel olarak kullanılmasıyla performans arttırılması en çok tercih edilen yoldur. Örneğin iģlemci veri yolu arttırılarak daha fazla bit (1,0), üretim hattı (pipeline) mimarisi tasarlanarak iģlemci içine ilave edilen donanım ile aynı anda birden fazla komut icra edilebilir hale getirildi. Bu iki paralel sistem iģlemci içi (donanımsal) paralelliğe örnek teģkil etmektedir. Özellikle görev dağıtımı yoluyla paralellik yazılım yoluyla gerçekleģtirildiğinden diğer yöntemlere göre daha esnek ve ekonomiktir. II. PARALELLĠK TÜRLERĠ Paralellik iģlemci içinde ve iģlemci dıģında gerçekleģtirilebilir. Bilgisayar sistemlerinde paralellik, bit düzeyinde paralellik (Bit-level parallelism), komut düzeyinde paralellik (Instruction-level parallelism), veri paralelliği (Data parallelism) ve görev paralelliği (Task parallelism) olmak üzere 4 sınıfa ayrılmaktadır [2]. ĠĢlemci içindeki paralellik bir komutun evreleri veya komutlar arası ölçekte olmaktadır. Bu yüzden bit ve komut düzeyi paralellik iģlemci içinde gerçekleģmektedir. Veri ve görev paylaģımlı paralellik ise iģlemci dıģında gerçekleģmektedir. ĠĢlemci içi paralellik maliyet ve kullanıcı müdahale sınırlaması vardır. Esnek ve ekonomik değildir. 1. Bit düzeyinde paralellik (Bit Level Parallelism) ĠĢlemci içindeki bir saat dalgasında iģlenebilen bit miktarı bit düzeyindeki paralellik düzeyini göstermektedir. Eski nesil iģlemcilerde bir saat dalgasında 4 bit veri iģlenebiliyorken günümüzde ise 64 bit veriyi aynı anda iģleyebilen iģlemciler yaygın olarak kullanılabilmektedir. 2. Komut düzeyinde paralellik (Instruction-level parallelism) Bir bilgisayar programı, özünde, bir iģlemci tarafından yürütülen komut evresi akıģıdır. Bu akıģ Ģekliyle programın sonucu değiģtirmeden komutlar, paralel olarak yürütülebilir [2]. Komut düzeyinde paralellik aynı anda birden fazla komutun iģlenebilmesi temeline dayanır. Bu iģlemci içinde iģ hattı (pipeline) teknolojisiyle gerçekleģtirilir. ĠĢ hattı teknolojisine göre aynı anda 5 adet komut çalıģtırılabilmektedir. 3. Veri düzeyinde paralellik (Data parallelism) Veri paralelliği paralel olarak iģlenecek farklı iģlem düğümleri arasında veri dağıtımını odaklanan bir yöntemdir. Veri düzeyinde paralellik program döngülerin yapısında karģımıza çıkar. Her iģlemci dağıtılmıģ verilerin farklı parçaları üzerinde aynı görev yaptığında veri paralelliği sağlanır [3]. 218

Paralel Hesaplama ve CUDA 4. Görev Paylaşımlı (Task parallelism) Paralel Sistemlerin Sınıflandırılması Görev paylaģımlı paralel sistemlerde her fonksiyon farklı iģlemciler üzerinde çalıģır. Bu yüzden görev paylaģımlı paralel sistemler ortak bellekli (shared memory) ve dağıtık bellekli (distributed memory) olmak üzere iki ana sınıfa ayrılmaktadır. Görev paylaģımlı paralel sistemler CPU ve GPU üzerinde denenebilme yetisine sahiptir. III. ORTAK BELLEKLĠ SĠSTEMLER PaylaĢımlı bellekli sistemlerde birbirinin tamamıyla aynı olan çok sayıda iģlemciden oluģur. Bu iģlemciler aynı saat frekansı ile yürütülürler ve aynı belleği paylaģırlar (ġekil 1). ĠĢlemciler arasında iletiģim paylaģılan bellek üzerinden olduğundan veri paylaģımı oldukça hızlıdır. Ortak bellekli paralel sistemler hem CPU üzerinde hem de GPU üzerinde gerçekleģtirilebilmektedir. CPU üzerine kurulu sistemlerde tek iģletim sistemi tüm iģlemcileri ve belleği yönetir ve bilgisayar sistemi genelde tek bir kasa içinde bulunur. Bir sistemin ortak bellekli yapı olup olmağı donanımsal farklılığı kullanıcı (tek iģlemcili sistemlere göre) pek hissetmez. Uygulama yazılımlarının paralelleģtirilmesi donanım, derleyici ve iģletim sistemi yardımıyla gerçekleģtirilir ve kullanıcıya sadece ihtiyaç duyduğu iģlemci sayısını belirlemek kalır. GPU üzerinde ortak bellekli sistem gerçekleģtirimi ise üretici firmanın paralel programlama desteği veren sürücü (driver) yazılımının kurulumuyla gerçekleģtirilir. Bu tür sistemleri kullanmak, bu tür sistemler için yazılım geliģtirmek diğer paralel sistemlere göre daha kolaydır. Bu tür sistemlerde programlama Thread (iģ parçası) temeline dayanmaktadır. Ama bu mimarideki paralel sistemler genelde sınırlı miktarda imal edildiklerinden pahalı, farklı kullanım alanlarına entegresyonu zor olabilmektedir. islemci 0 islemci 1 islemci n Memory Veri yolu ġekil 1 : PaylaĢımlı bellekli paralel sistem mimarisi 1 CUDA : Hesaplamalı Tümleşik Aygıt Mimarisi (Compute Unified Device Architecture) Dağıtık sistemlerin kurulması ve PVM, MPI gibi paralel programla yazılımlarının kullanımı oldukça zordur. Ayrıca mevcut ortak bellekli paralel yazılım programları olan OpemMP, POSIX Threads ve Win 32/64 Threads ile tek bir programın birden çok iģ parçacığına dağıtılarak çalıģtırılmak üzere hazırlanması da oldukça zordur. Bahsedilen ortak bellekli yazılımlar da sadece CPU üzerinde programlama yapabilmektedir. Bu durumda bir ortak bellekli paralel yazılım olan CUDA, hem GPU üzerinde kullanılabilen ortak bellekli bir yazılım olarak hem de kolay Thread yönetimi yapısıyla oldukça kullanıģlı ve yararlı olan bir yazılımdır. CUDA ilk grafik iģlemciler üzerine yazılmıģ paralel programlama yazılımıdır. CUDA kolay ve güçlü bir yazımdır. CUDA, C temelli bir paralel programlama dili olduğundan, CPU için C programlama dili ile yazılmıģ olan uygulamaları, grafik iģlemci üzerinde çoklu thread (Multithread) kullanılarak koģturulmasına olanak sağlar [4]. CUDA teknolojisine donanımsal olarak bakıldığında (Ģekil 2) Thread ler SP (streaming processor) üzerinde çalıģır. 8 adet SP iģlemcisinin oluģturduğu yapıya ise SM (streaming Multiprocessor) olarak adlandırılır. SM ler ise ekran kartı donanımını oluģturmaktadır [9]. CUDA manuel olarak paralellik yarattığı için bütün zorlukları ortadan kaldırır. CUDA da yazılmıģ bir program, aslında kernel (Çekirdek) adı verilen seri bir programdır. GPU bu kernel in binlerce kopyasını çalıģtırarak onu paralel hale getirir. CUDA, C dilinin bir uzantısı olduğu için genellikle programları CUDA ya yönlendirmek veya onları multi-thread hale getirmek için mimarilerini değiģtirmeye gerek yoktur [5]. 2. CUDA Mimarisi ve Thread ler Program çalıģtırıldığında CPU kodun kendisine ait olan seri kısmını, GPU ise ağır hesaplamalar gerektiren paralel CUDA kodunu çalıģtırır. Kodun GPU kısmına kernel adı verilir. Kernel, belirli bir veri kümesine uygulanacak olan iģlemleri tanımlar. GPU, veri kümesinin her unsuru için ayrı bir kernel kopyası yaratır. Bu kernel kopyalarına Thread adı verilir. 512 adet Thread in yapıların birleģimiyle Thread gruplarına Blok yapılar, 65536 adetlik blok gruplarına ise Grid adı verilir (ġekil 3). Her bir Thread in, kendine ait program sayacı, kaydedici (register) ve durumu kaydedici (state) barındırır. Görüntü veya veri iģleme gibi geniģ veri kümelerinde bir seferde milyonlarca Thread oluģturulur ve paralel Ģekilde çalıģtırılır. CUDA teknolojisinin temeli birçok Thread dizisi tarafından GPU nun çalıģtırılması temeline dayanır. [4]. CPU üzerinde çalıģan ve yaygın olarak kullanılan ortak bellekli programlama yazılımları OpenMP, POSIX Threads ve Win 32/64 Threads olarak gösterebiliriz. GPU için yaygın olarak kullanılan ise NVIDIA tarafından geliģtirilen CUDA (Compute Unfied Device Architecture) paralel yazılımıdır. 219

B. Şen, İ.M. Orak, M. Akçay, A. Çelik bellek alanı kullanabilir (Shared memory). ġekil 4 de CUDA üzerinde program koģturma penceresi görülmektedir. Örnek program her bir Thread e bir sayı gönderip, her bir Thread in gönderilen sayının karesini alması istenmiģ ve Ģekildeki pencere görüntüsü elde edilmiģtir. ġekil 4: CUDA üzerinde örnek program çalıģtırılması IV. DAĞITIK BELLEKLĠ SĠSTEMLER ġekil 2: CUDA Hardware, Donanımsal yapısı Dağıtık bellekli paralel sistemler, ortak bellekli paralel sistemlerin eksiklerini gidermek için tasarlanmıģtır. En önemli avantajı hali hazırda kullanılmakta olan bilgisayarların, örneğin herhangi bir kuruma ait olan bilgisayarların, güçlü bir ağ (Ethernet, anahtar cihazı, kablo) donanımıyla birleģtirilmesiyle oluģturulmaktadır. Dağıtık bellekli yapıda, ağa dâhil edilecek bilgisayarların, donanım veya yazılım özelliklerinin birbirleriyle aynı olma gereksinimi yoktur. Ağ donanımlarıyla haberleģtirilen bu bilgisayarlara paralel yazılımlar (PVM, MPI vs) kurularak, içlerinden seçilecek bir bilgisayar üzerinde ortam konfigürasyonu sağlanmaktadır. Birbirlerine ağ donanımıyla bağlanmıģ bilgisayarlar ve bu bilgisayarlara yüklenmiģ yazılımlarla, süper bilgisayar denilen yüksek performanslı bilgisayar ortamı gerçekleģtirilmektedir. Dağıtık bellekli bilgisayarlar yüksek iletiģim olanağı sağlayan Ethernet kartı, tip A-B kablolama ve güçlü anahtar (switch) cihazıyla birleģtirilmektedir (ġekil 5). Dağıtık bellekli sistemlerde ortak bellekli sistemlerden farklı olarak komutlar arası paralellik değil de komut grupları arası paralellik mevcuttur. Kullanıcı isterse komutlarla paralel ortama müdahale edebilmektedir. Yüksek performans elde etmek isteyen araģtırma kurumları, üniversiteler ve değiģik ölçekteki kurumlar ekonomik olduğundan dolayı dağıtık bellekli paralel sistemleri tercih etmektedir. Bu sistemlerin temeli eski bilgisayarlarda (tek iģlemcili bilgisayarlarda) kullanıldığından, önceden oluģturulmuģ dağıtık mimarilerde hala yaygın olarak kullanılmaktadır. ġekil 3: CUDA Software Yazılımsal yapısı Her bir Thread in kendi karar mekanizması da mevcuttur. Bütün Thread ler aynı kodu çalıģtırabilir ve her bir Thread in bir ID nosu vardır. Aynı zamanda her bir Thread 220

Paralel Hesaplama ve CUDA PC 0 PC 1 PC 0 Switch PC paralel sisteme ilave edilen makineler rsh için yapılandırılmalıdır. Tüm makinelere PVM paketi kurulduktan sonra bir makine konsol olarak belirlenir ve tüm sistem oradan yönetilir. Ġlk yapılacak iģ paralel sistem içinde yer alacak makineleri -sisteme ilave etmektir. Bu amaçla konsol makinede kabuktan pvm yazılır, ve arkasından paralel sistemin diğer üyeleri zahiri sisteme add komutuyla ilave edilir. Belirli sayıda ve özellikteki makineleri barındıran bir sistemi kısa sürede oluģturmak için bilgisayar adları bir dosyaya yazılabilir. Bu Ģekilde tek komutla, istenilen kadar bilgisayar sisteme ilave edilmiģ olur. Eklenen makinelerin durumları conf komutuyla kontrol edilebilir [1]. 2. MPI : Mesaj Geçiş Arayüzü (Message Passing Interface) ġekil 5: Dağıtık bellekli paralel sistem mimarisi. Dağıtık sistemlerin en büyük avantajı, ağa bağlı ve zaten kullanılmakta olan bilgisayarlardan ihtiyaç duyulan kadarını yazılım yoluyla yapılandırıp tek bir hızlı bilgisayara (süperbilgisayara) dönüģtürebilmesidir. Ayrıca, sisteme ilave edilen bilgisayarların, mimarileri ya da iģletim sistemleri farklı olabilmektedir. Dağıtık sisteme dâhil edilen makinenin iģ yükü dağılımı doğru bir Ģekilde yapıldığı takdirde kullanıcısının farkına varmadan bir makine dağıtık sistem üyesi olabilir ve üzerinde iģ koģturulabilmektedir. Bu tür sistemler ekonomik çözümler sunduğundan eğitim kurumlarında tercih edilmektedir. Dağıtık sistemlerden istenen performans elde etmek için sistem performansı gözlemleme monitörleri (XPVM, XMPI, vs.) tarafından izlenerek değerlendirilmesi yapılmalıdır. Dağıtık sistemlerde icra süresi (iģlem süresi) ilk prosesin icraya baģlamasından son prosesin icrayı sona erdirmesine kadar geçen süredir. ĠĢlem süresi birkaç durumdan oluģmaktadır. Bunlar; her proses zamanın bir kısmını hesaplamayla (iģlemcide geçen süre), bir kısmını iletiģimle (mesajlaģma) ve sistem içinde geçen sürelerdir. Sistemde harcanan süre genelde diğerleri yanında ihmal edilebilir düzeydedir. Ancak, paralel bir uygulamanın iletiģimde harcadığı sürenin, hesaplamada (iģlemcilerde) harcanan süreye oranı ne kadar küçük olursa, paralellik o oranda baģarılı olmuģ olur. Bu oran büyüdükçe verim düģer, performans tek iģlemcili sistemden bile daha kötü olabilir. Amaç, hesaplama süresi fazla uygulamalar gerçekleyebilmek olmalıdır [6]. 1. PVM Paralel Zahiri Makine (Parallel Virtual Machine) PVM, Tennessee Üniversitesi ve Oak-Ridge ulusal laboratuarları iģ birliğiyle, heterojen yapılar içinde çalıģabilen (Windows/Unix) dağıtık hesaplama yazılımıdır [12,13]. PVM bir grup makineye kurulup aktif hale getirildiğinde her makinede PVM sunucusu (pvmd daemon) arka planda çalıģır. Makineler arası iletiģim grup içinde farklı makinelerde uygulamaların çalıģtırılması rsh (remote shell: uzak kabuk) altyapısına dayanmaktadır. Bu nedenle MPI kavramı, ilk olarak Amerika ve Avrupa dan, devlet laboratuarlarında, üniversitelerde ve sanayi kuruluģlarında çalıģan, yaklaģık 60 araģtırmacının, Center For Research on Paralel Computing sponsorluğunda, Workshop on Standards for Message Passing in a Distrubuted Memory Environment adıyla Nisan 29-30 1992 de Williamsburg - Virginia da düzenlenen çalıģtayda ortaya atılmıģtır [7,11]. MPI (Message Passing Interface) paralel ortamda iletiģim ara yüzü görevini üstlenmektedir. MPI diğer paralel kütüphanelerden daha hızlı çalıģmaktadır, mesaj geçiģ programlarının yazılması temeline dayandığından dolayı, etkili ve esnek bir yapısı vardır. MPI ın temelini oluģturan mesaj geçiģi, verinin bir düğümün hafızasından diğer düğümün hafızasına kopyalanması metodudur. Dağıtık bellekli sistemlerde genellikler veriler paketler halinde network üzerinden gönderilmektedir. Gönderilen bu veri paketlerine mesaj da denilmektedir. Mesajlar, kontrol bilgileriyle birlikte bir veya birden fazla paketten oluģabilmektedir [8]. ġekil 6 da MPI ortamında koģturulan, bir problemin sonuçları görülmektedir. ġekil 6: MPI ortamında program koģturma [1]. MPI a yapısal olarak bakıldığında, PVM e oldukça benzemektedir. Bu yüzden dağıtık sistemlerde en çok bu iki yazılım kullanılmaktadır. KarĢılaĢtırma yapılırsa; MPI, PVM den sonra ortaya çıkmıģtır ve uzaktaki makinelere eriģim için PVM de kullanılan rsh (remote shell) kabuk yerine daha güvenli eriģim sağlayan ssh (security shell) 221

B. Şen, İ.M. Orak, M. Akçay, A. Çelik kullanılmıģtır. Bu yüzden MPI ın kullanımı daha yaygındır [6]. V. SONUÇ Bu çalıģmada ortak bellekli ve dağıtık bellekli paralel sistemler incelenmiģ olup, GPU üzerinde çalıģan, ortak bellekli paralel programlama yazılımı olan CUDA teknolojisi hakkında bilgi verilmiģ ve örnek bir program çalıģması gösterilmiģtir. Ayrıca CPU üzerinde çalıģan dağıtık bellekli paralel programlama yazılımları (PVM, MPI) tanıtılmıģ ve MPI üzerinde bir programın çalıģtırılması gösterilmiģtir. Multi-Thread temeline dayanan CUDA teknolojisi GPU paralel programlamasında ilk kullanılan yazılım olmakla birlikte oldukça iģlevsel ve kullanımı kolaydır. Paralel sistemlerin amacı performans arttırmaya yönelik olduğundan, CPU ve GPU üzerinde performans arttırmaya yönelik paralellik sağlanarak uygulamalar gerçekleģtirilmektedir. Sistemin bütün donanımlarından sorumlu olan ve yeterince iģ yüküne sahip olan CPU nun yanında, GPU üzerinde de grafik iģlemler için paralellik sağlanarak performansının arttırılması olacaktır. KAYNAKLAR [1] Paralel Bilgisayar Sistemlerinin Performans Analizi Ahmet Çelik Yüksek Lisans Tezi, ElektrikElektronik Mühendisliği Anabilim Dalı Ocak- 2010 [2] http://en.wikipedia.org/wiki/ [3] http://www.cs.cmu.edu/~fx/ [4] NVIDIA CUDA Compute Unified Device Architecture Programming Guide Version 1.0 6/23/2007 [5] Getting Started with CUDA, NVISION 08 The world of visual computing - Greg Ruetsch, Brent Oster [6] Dağıtık Paralel Sistemler Hakkında Kıyaslamalı Bir ÇalıĢma: PVM ve MPI 5. Uluslar arası Ġleri Teknolojiler Sempozyumu (ĠATS 09), 13-15 Mayıs 2009, Karabük, Türkiye [7] MPI: A Message-Passing Interface Standard Version 2.1 Message Passing Interface Forum June 23, 2008 [8] http://www.mhpcc.edu/training/workshop/mpi/ [9] Introduction to CUDA Tanya Ivanovska t.ivanovska @jacobsuniversity.de School of Engineering and Science Jacobs University, Bremen, Germany 28 September 2009 [11] http://www.mcs.anl.gov/research/projects/mpi/ [12] http://www.csm.ornl.gov/pvm/ [13] http://www.netlib.org/pvm3/ 222