Alptekin Temizel atemizel@ii.metu.edu.tr



Benzer belgeler
BM-311 Bilgisayar Mimarisi

İŞ İSTASYONU SEÇİM REHBERİ

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

İşletim Sistemlerine Giriş

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

Gömülü Sistemler. (Embedded Systems)

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

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

İşletim Sistemleri (Operating Systems)

Sanal Makineler ve Linux Konteynerlerin Performans Karşılaştırması

Akılda kalıcı sahneler

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Paralel Programlama Ortamları

Bilgisayar Mimarisi Nedir?

Evrak Tarih ve Sayısı: 19/11/

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

TEKNİK ŞARTNAME. Özel Amaçlı Taşınabilir Bilgisayar (7 adet)

Donanım Nedir? Bir bilgisayar sisteminde bulunan fiziksel aygıtların tümü


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

Donanım Nedir? Bir bilgisayar sisteminde bulunan fiziksel aygıtların tümü

ANA KARTLAR. Ana Kart Nedir?

BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ

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

Bilgisayar Sistemlerine Genel Bakış

Alternatif ADET TAŞINABİLİR BİLGİSAYAR HP PAVİLİON 13-B101NT CORE İ5 4210U 1.7GHZ-8GB-750GB-13.3"-INTEL-W8.1 NOTEBOOK

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

4. HAFTA KBT104 BİLGİSAYAR DONANIMI. KBUZEM Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Asal sayıların Eratosten kalburu algoritması kullanılarak bulunmasında GPU ve CPU başarımlarının analizi

İleri Bilgisayar Mimarileri (COMPE 532) Ders Detayları

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

Ham Veri. İşlenmiş Veri Kullanıcı. Kullanıcı. Giriş İşleme Çıkış. Yazılı Çizili Saklama. Doç.Dr. Yaşar SARI-ESOGÜ-Turizm Fakültesi

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Bazı Gömülü Sistemlerde OpenCV ile Performans Analizi

2,3 2,4 OLAĞANÜSTÜ ÇOKLU GÖREV PERFORMANSI

Bilgisayar Donanımı. Temel Birimler ve Çevre Birimler. Öğr.Gör.Günay TEMÜR / KAYNAŞLI MESLEK YÜKSEOKULU

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

AMD'NİN MİSYONU. İnsanlara olabildiğince sınırları zorlama gücü kazandıran yenilikçi ve özel çözümlerin lider tasarımcısı ve entegratörü olmaktır

İleri Bilgisayar Mimarileri (COMPE 532) Ders Detayları

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

CASPER EXCALIBUR G700 & G800 DDR 4 İLE FARK YARATIN! ÜSTÜN GÖRSELLİK, BENZERSİZ GERÇEKLİK BÜYÜK OYNAYIN! , Full HD 16/32GB

Donanımlar Hafta 1 Donanım

SİSTEM İHTİYAÇLARI (Tiger Enterprise / Tiger 3 Enterprise)

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

Bilgisayar Donanım 2010 BİLGİSAYAR

AutoCAD LT Bir bina veya kafes köprü üzerinde pencere gibi diziler arasında ilişkisel nesneler koyma

INTEL İŞLEMCİLİ MASAÜSTÜ BİLGİSAYARLAR EYLÜL 2010 ÜRÜN KATALOĞU

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

PR Şubat 2012 Hannover Messe 2012 Sayfa 1 / 6. Üretim süreçlerinde ve mühendislikte verimlilik artışı

Copyright 2012 EMC Corporation. All rights reserved.

Çekirdek Nedir? Ne yapar?

Sonsuz İmkan için Esnek İnce İstemci

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

BM-311 Bilgisayar Mimarisi

Sistem. Sistem, bilgisayarda veri işlemek amacıyla kullanılan elektronik bileşenleri içeren kasadır.

BM-311 Bilgisayar Mimarisi

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Anakart ve Bileşenleri CPU, bellek ve diğer bileşenlerinin bir baskı devre (pcb) üzerine yerleştirildiği platforma Anakart adı

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

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

BİLGİSAYAR MİMARİLERİ

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

YZM 3102 İşletim Sistemleri

Bilgisayar Mimarisi ve Organizasyonu Giriş

Geleneksel ekran kartları, bilgileri, sistem belleğinden kendi belleğine alıp monitöre göndermekteydi. Günümüzdeki ekran kartları ise görüntülenecek

BİLGİSAYAR ORGANİZASYONU

SİSTEM İHTİYAÇLARI (Tiger Plus / Tiger 3)

Java Temel Özellikleri

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları

MİKROİŞLEMCİLER. Mikroişlemcilerin Tarihsel Gelişimi

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

Logsign Hotspot. Güvenli, izlenebilir, hızlı ve. bağlantısı için ihtiyacınız olan herşey Logsign Hotspot da!

Görüntü Bağdaştırıcıları

Presentation Name. IBM PureData for Analytics. Name Surname. Title. Ayhan Önder Netezza Teknik Uzmanı IBM Corpora.on

William Stallings Computer Organization and Architecture 9 th Edition

Masaüstü Bilgisayarlar ve İş İstasyonları

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

Bilişim Teknolojilerine Giriş

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

VIERO, görüntü tabanlı analiz sayesinde, ortalama araç hızı bilgisi üretmekte ve araç yoğunluğunu da ölçmektedir. VIERO Araç Sayım Sistemi

~BĠLGĠSAYAR DONANIMI~

Yrd.Doç.Dr. Celal Murat KANDEMİR

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

VIERO ARAÇ SAYIM SİSTEMİ

eralp tarafından yazıldı. Cumartesi, 19 Şubat :51 - Son Güncelleme Cumartesi, 19 Şubat :11

Android e Giriş. Öğr.Gör. Utku SOBUTAY

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

AutoCAD Mechanical 2012

Oracle Exadata Version 2 İlk OLTP Veritabanı Makinesi

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

Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı

Şunu unutmayın asla 750 liralık anakart 1 milyarlık işlemci de alsanız ekran kartınız kötü oldukça oyunlarda verim elde edemezssiniz.

Dell Precision İş İstasyonu T1500 Kurulum ve Özellikler ile İlgili Teknik Bilgi Sayfası

Sistem Yapılanması ve Tanıtım

Bilgisayar Mimarisi ve Örgütleşimi (COMPE 331) Ders Detayları

40. yıl INTEL CORE 2 DUO PC BİLGİSAYAR. Açıklama Intel Core 2 Duo 2.13 PC Bilgisayar (4 adet) Denklik/Onay

GAZİANTEP ÜNİVERSİTESİ

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

BELLEKLER. Kelime anlamı olarak RAM Random Access Memory yani Rastgele Erişilebilir Bellek cümlesinin kısaltılması ile oluşmuş bir tanımdır.

Transkript:

Alptekin Temizel atemizel@ii.metu.edu.tr

Seminer Programı 13:00-13:15 TR-GRID tanitim sunumu 13:15-14:30 GPU Programlamaya Giriş, Alptekin Temizel GPU ların tarihi ve GPU lar üzerinde genel amaçlı programlama (GPGPU) GPGPU uygulama alanları, avantaj ve dezavantajları PC ve GPU mimarisi 14:30-14:45 Ara-1 14:45-16:30 CUDA ve OpenCL Temelleri, Alptekin Temizel CUDA ya giriş CUDA programlama yapısı Örnek kodlar üzerinden anlatım OpenCL e giriş OpenCL programlama yapısı CUDA ve OpenCL benzerlik ve farklılıkları Örnek kodlar üzerinden anlatım 16:30-16:45 Ara-2 16:45-17:30 Supercomputing at 1/10th of the Cost, Edmondo Orlotti, NVIDIA 17:30-18:15 Açık oturum

CUDA Teaching Center Professor Partnership Award Temmuz 2009 CUDA Teaching Center Aralık 2010

Kitaplar - 1 David B. Kirk and Wen-mei W. Hwu Programming Massively Parallel Processors: A Hands-on Approach Morgan Kaufman, ISBN-10: 0123814723, ISBN-13: 978-0123814722.

Kitaplar - 2 H. Bidgoli, CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison Wesley, ISBN-10: 0131387685, ISBN-13: 978-0131387683.

Kitaplar - 3 Wen-mei W. Hwu (Editor), GPU Computing Gems, ISBN-10: 0123849888, ISBN-13: 978-0123849885. Chapters 1. Scientific Simulation 2. Life Sciences 3. Statistical Modeling 4. Emerging Data-Intensive Applications 5. Electronic Design Automation 6. Ray Tracing and Rendering 7. Computer Vision 8. Video and Image Processing 9. Signal and Audio Processing 10.Medical Imaging

Kaynaklar NVIDIA Developer Zone, http://developer.nvidia.com/page/home.html OpenCL Developer Zone, http://www.khronos.org/opencl/

1. GPU Programlamaya Giriş i. GPU ların tarihi ve GPU lar üzerinde genel amaçlı programlama (GPGPU) ii. iii. GPGPU uygulama alanları, avantaj ve dezavantajları PC ve GPU mimarisi

Graphics Processing Unit (GPU) (1) Graphics Processing Unit/Grafik İşleme Ünitesi (GPU) yoğun matematiksel hesaplamaları yapmak üzere tasarlanmış tek-çip işlemcilerdir. Ref: http://www.eng.unt.edu/ian/classes/spring07/csce4930-5933/

Graphics Processing Unit (GPU) (2) GPU lar aslen grafik canlandırma (rendering) ve oyunlar için geliştirilmişlerdir. PC ler, oyun konsolları, gömülü sistemler ve cep telefonlarında bulunurlar. Ev kullanıcıları için genelde oyun amaçlı kullanılırlarken profesyonel kullanıcılar tarafından CAD uygulamaları and CGI için kullanılırlar. Piyasadaki büyük oyuncular: ATI/AMD, Intel ve NVIDIA

Graphics Processing Unit (GPU) (3) GPU pazarı hareketlenmektedir, CPU üreticileri GPU larla ilgilenmeye başlamıştır. AMD, ATI firmasını 2006 yılında satın almıştır. Intel CPU-GPU hibrit mimariler üzerinde çalışmaktadır Programlamada bir paradigma kayması? Daha önceden mümkün olmayan uygulamalar mümkün mü olacak?

Graphics Processing Unit (GPU) (4) GPU lar oldukça hızlıdır: NVIDIA GTX 580: 5120 çekirdek, ~1581 GFLOPS (teorik) Intel i7 920 (2,66 GHz): 4 çekirdek, ~69 GFLOPS GPU lar daha hızlı hızlanmaktadır! CPU: yıllık gelişme : 1.5 On yıllık gelişme ~ 60 GPU: yıllık gelişme > 2.0 On yıllık gelişme > 1000x

GPU vs. CPU Performance

GPU Performans Tahminleri Nvidia Chief Scientist William Dally nin tahminlerine göre grafik çipleri 2015 yılında; 5000 çekirdeğe sahip olacak, yaklaşık 20TFLOPs işlem gücü sağlayacak, ve 11nm üretim teknolojisiyle üretilecekler.

En hızlı 500 süper bilgisayar-kasım 2010 Rank Site Computer/Year Vendor Cores R max R peak Power 1 National Supercomputing Center in Tianjin China Tianhe-1A - NUDT TH MPP, X5670 2.93Ghz 6C, NVIDIA GPU, FT-1000 8C / 2010 NUDT 186368 2566.00 4701.00 4040.00 2 DOE/SC/Oak Ridge National Laboratory United States Jaguar - Cray XT5-HE Opteron 6-core 2.6 GHz / 2009 Cray Inc. 224162 1759.00 2331.00 6950.60 3 National Supercomputing Centre in Shenzhen (NSCS) China Nebulae - Dawning TC3600 Blade, Intel X5650, NVidia Tesla C2050 GPU / 2010 Dawning 120640 1271.00 2984.30 2580.00 4 GSIC Center, Tokyo Institute of Technology Japan TSUBAME 2.0 - HP ProLiant SL390s G7 Xeon 6C X5670, Nvidia GPU, Linux/Windows / 2010 NEC/HP 73278 1192.00 2287.63 1398.61 5 DOE/SC/LBNL/NERSC United States Hopper - Cray XE6 12-core 2.1 GHz / 2010 Cray Inc. 153408 1054.00 1288.63 2910.00 Kaynak: www.top500.org

Paralel İşleme: GPU Sağladıkları işlem gücü ve esneklikleri GPU ları genel amaçlı hesaplama işlemleri için ilgi çekici konuma getirmiştir. Hedef: GPU nun düşük maliyetle sağladığı gücü uygulama geliştiricilere bir yardımcı işlemci olarak sunmak. Massively Parallel Computing Çok Büyük Ölçekte Paralel Hesaplama Courtesy David Luebke, University of Virginia

GPU Tabanlı Kümeler Kümeler ve veri merkezi uygulamaları için NVIDIA Tesla 1U işlem üniteleri:

Gömülü Sistemler: Tegra Platformu Cep telefonları, tablet PC ler ve benzeri cihazlar için tasarlanmış system-on-a-chip serisi: Tegra 2: 2 çekirdekli CPU + GPU (1920x1080 HD video decode) Tegra 3: 4 çekirdekli CPU + GPU (2560x1600 HD video decode)

GPU ları kullanmak zordur GPU lar bilgisayar oyunları için tasarlanmıştır: Programlama modeli farklıdır ve grafik uygulamalarına yönelik tasarlanmıştır Programlama ortamı kısıtlı kullanıma sahiptir Mimarileri: Doğası gereği paraleldir Hızla gelişmektedir (temel özellik kümeleri bile!) Çoğunlukla ticari gizlidir CPU için yazılmış bir kodu uyarlamak güçtür. Courtesy David Luebke, University of Virginia

GPU ları kullanmak zordu GPU lar bilgisayar oyunları için tasarlanmakla beraber artık genel amaçlı programlama da düşünülerek tasarlanmaktadır. Programlama modeli ve geliştirme ortamları artık daha genel ve kullanıcı dostudur. Mimarileri: Doğası gereği paraleldir (ancak programlamak daha kolaydır) Hızla gelişmektedir (ancak standartlara sahiptir) Çoğunlukla ticari gizlidir (ancak mimariden bağımsız programlayabiliriz) Programlama yapıları CPU dakilere artık daha çok benzediği için CPU için yazılmış bir kodu uyarlamak daha kolaydır

The Ox vs. Chicken Analogy (1) If you were plowing a field, which would you rather use: Two strong oxen or 1024 chickens? Eğer bir tarlayı sürüyor olsaydınız 2 öküz kullanmayı mı yoksa 1024 tavuk kullanmayı mı tercih ederdiniz? Seymour Cray (1925-1996) Founder of Cray Research

The Ox vs. Chicken Analogy (2) 4 çekirdek CPU + GPU Eş-işleme Heterojen Hesaplama

The Ox vs. Chicken Analogy (3) CPU nun iyi olduğu işler: Sıralı işlemler, I/O işlemleri, Program akışı. GPU ise çok büyük ölçekte paralel hesaplama (massively parallel calculations) konusunda iyidir.

GPU Programlama Programlama grafik API ı üzerinden yapılmak zorundaydı. Bu esnek değildi ve pek çok limiti vardı. GPGPU: General Purpose computation on the GPU GPU üzerinde genel amaçlı programlama

CUDA Compute Unified Device Architecture NVIDIA tarafından geliştirilmiştir Temel olarak genişletilmiş C programlama dilidir

OpenCL Apple önderliğinde AMD, IBM, Intel ve NVIDIA dan teknik takımların desteği ile geliştirilmiştir. OpenCL 1.0 Mayıs 2009 da yayınlanmıştır. OpenCL 1.1 ise Haziran 2010 da yayınlanmıştır. Halen geliştirilmeye devam etmektedir.

Stream Framework AMD/ATI in GPU programlama çözümüdür. Stanford Üniversitesi tarafından geliştirilmiş olan Brook üzerine inşa edilmiştir. ATI Stream OpenCL desteklemektedir.

DirectCompute Microsoft tarafından geliştirilmiştir ve Windows 7 destekler. DirectX 11 API nın bir parçasıdır. GPU donanımının tipinden bağımsızdır.

Google Arama Sonuçları 21 Şubat 2011 tarihi Google arama sonuçları:

GPU Üreticileri ve GPGPU NVIDIA: Kolay kullanıma sahip ve hızlı performanslı ürünleri ile şu an lider konumdadır. AMD/ATI: Yakın performans sağlamasına rağmen geliştirme araçları daha az gelişkin durumdadır. Intel: Yakın zamanda rekabete katılacağı beklenmektedir.

CPU-GPU Hibrit İşlemciler: AMD Fusion AMD tarafından Fusion APU yani hızlandırılmış işlemci birimi olarak tanımlanan CPU+GPU tabanlı yeni nesil mikroişlemci tasarımları için ilk etapta dört yeni model lanse edildi. 5 Ocak 2011, kaynak:donanımhaber

CPU-GPU Hibrit İşlemciler: Intel Larrabee Intel Larrabee x86 uyumlu mimarisi ve önbellek tasarımı CPU benzeri, geniş SIMD vektör uniteleri ve and texture donanımı GPU benzeri bir işlemcidir. Intel Larrabee projesini durdurarak geleneksel ayrık CPU-GPU mimarilerine devam etmeye karar verdi.

CPU-GPU Hibrit İşlemciler: NVIDIA Jen-Hsun Huang, CEO, NVIDIA: Now is time for innovation, not for integration Şimdi entegrasyon zamanı değil yenilik zamanı

Heterojen Hesaplama Paralel İşleme GPU (Paralel İşleme) Grafik Kontrol ve İletişim CPU (Sıralı İşleme) Üretkenlik Uygulamaları Veri Yoğun Uygulamalar

1. GPU Programlamaya Giriş i. GPU ların tarihi ve GPU lar üzerinde genel amaçlı programlama (GPGPU) ii. iii. GPGPU uygulama alanları, avantaj ve dezavantajları PC ve GPU mimarisi

GPU Hesaplama Alanları Petrol ve Gaz Finans Medikal Biofizik Hesaplama Ses Video Görüntü İşleme

GT200 Mimarisi

Yeni Nesil Fermi Mimarisi Fermi kod isimli GPUlar Mart 2010 da GTX 400 serisinde piyasaya sürüldü, yeni GTX 500 serisi de bu mimariyi kullanmaktadır. GPU lar GF10x olarak adlandırılır. Daha yüksek sayıda çekirdeğe sahiptirler. C++ doğal desteği vardır. 8 kata kadar double precision performansı sağlayabilirler. Daha büyük shared memory leri vardır.

Yeni Nesil Fermi Mimarisi Son kullanıcı kartlarında (GeForce serisi), double precision performansı Fermi mimarisinin sağladığı kapasitenin ¼ üne sınırlandırılmıştır.

GPU Hesaplama Örnekleri (1) CPU GPU1 GPU2 GPU3 GPU4 Intel i7 920, 2.66 GHz, Windows 7 Professional (32 Bit) NVIDIA Quadro FX 5800, 240 Cores, Processor Clock: 1.3 GHz Memory: (512bit), 4GB NVIDIA GeForce GTX 285, 240 cores, Processor Clock: 1.476 GHz Memory Clock: 1.242 GHz (512bit), 1 GB NVIDIA GeForce 9800GT, 112 cores, Processor Clock: 1.5 GHz Memory Clock: 900 MHz (256bit), 1 GB ATI HD 5750, 720 Stream Processing Units, Engine Clock: 700 MHz Memory Clock: 1.15 GHz, 1 GB

GPU Hesaplama Örnekleri (2) Video arkaplan çıkarımı

125 30 7 5 102 27 20 216 138 116 30 22 102 35 9 7 156 51 16 11 345 458 348 332 237 440 637 570 440 Number of Cameras 860 1130 1438 1315 1731 2722 3158 GPU Hesaplama Örnekleri (3) Video arkaplan çıkarımı 3500 3000 2500 2000 160X120 1500 1000 320X240 640X480 720X576 500 0 Serial OpenMP Cuda OpenCL Cuda OpenCL Cuda OpenCL OpenCL CPU GPU1 GPU2 GPU3 GPU4 (ATI) Device/Framework Video arkaplan çıkarımı algoritması için gerçek zamanlı olarak maksimum desteklenen kamera sayısı (I/O not included). En pahalı kart işinizi en iyi görecek kart olmayabilir

7 5 9 6 30 27 20 24 18 13 11 32 37 79 73 Number of Cameras 87 102 103 108 98 125 128 135 112 103 132 222 228 233 247 257 312 345 338 330 355 GPU Hesaplama Örnekleri (4) Video arkaplan çıkarımı 400 350 300 250 200 150 160X120 100 50 0 Serial OpenMP Cuda OpenCL Cuda OpenCL Cuda OpenCL OpenCL CPU GPU1 GPU2 GPU3 GPU4 (ATI) Device/Framework 320X240 640X480 720X576 Video arkaplan çıkarımı algoritması için gerçek zamanlı olarak maksimum desteklenen kamera sayısı (I/O included). Hafıza işlemleri gerçek performansı önemli biçimde etkileyebilir

GPU Hesaplama Örnekleri (5) Video arkaplan çıkarımı Number of Camera 125 30 7 5 345 102 27 20 532 397 197 156 596 446 224 180 271 94 26 20 600 500 400 300 160X120 320X240 200 640X480 720X576 100 0 Serial OpenMP Cuda Cuda Cuda CPU GPU1 GPU2 GPU3 Device/Framework Video arkaplan çıkarımı algoritması için gerçek zamanlı olarak maksimum desteklenen kamera sayısı (Asynchronous I/O). Düzgün bir tasarım ve optimizasyon performansı önemli biçimde etkileyebilir

0,79 0,92 0,96 1,00 1,54 1,73 Gain 3,89 4,37 7,30 7,80 8,30 9,00 GPU Hesaplama Örnekleri (6) Video arkaplan çıkarımı 10,00 9,00 8,00 7,00 6,00 5,00 4,00 CUDA 3,00 2,00 1,00 0,00 160X120 320X240 640X480 720X576 160X120 320X240 640X480 720X576 160X120 320X240 640X480 720X576 GPU1 (FX 5800) GPU2 (GTX 285) GPU3 (9800 GT) Device / Video Size GPUs vs. OpenMP CPU (Intel i7 920) versiyonları kazanç sonuçları Küçük verilerle en iyi kazanç elde edilemeyebilir.

1024 2048 4096 8192 1024 2048 4096 8192 1024 2048 4096 8192 1024 2048 4096 8192 8,49 10,65 6,51 6,79 7,00 7,04 6,60 6,75 6,45 6,81 5,06 10,18 13,25 12,24 12,01 16,90 21,18 15,93 20,03 25,84 32,28 Gain 40,98 38,37 48,97 61,94 74,15 71,29 89,84 GPU Hesaplama Örnekleri (7) Pearson cross correlation 90,00 80,00 70,00 60,00 50,00 40,00 Open CL 30,00 CUDA 20,00 10,00 0,00 GPU1 (FX 5800) GPU2 (GTX 285) GPU3 (9800 GT) GPU4 (ATI 5750) Device / Number of Images 160x120 imgeler için Pearson cross correlation gerçeklenmesinin OpenMP CPU versiyonuna kıyasla kazanç miktarları.

Özet GPU ların hesaplama hızlarını önemli ölçüde hızlandırma potansiyelleri vardır. Algorithmaların paralelleştirilebiliyor olması gereklidir. Hafıza işlemleri darboğaz yaratabilir. Geliştirme, optimizasyon and hata ayıklama daha güç olabilir. Uygulama için uygun GPU en pahalısı olmayabilir. Farklı GPU lar test edilerek karar verilmelidir. Tüm problemler GPU da gerçeklemeye uygun değildir. GPU kullanımına eldeki probleme göre karar verilmesi faydalı olacaktır.

1. GPU Programlamaya Giriş i. GPU ların tarihi ve GPU lar üzerinde genel amaçlı programlama (GPGPU) ii. iii. GPGPU uygulama alanları, avantaj ve dezavantajları PC ve GPU mimarisi

Bant Genişliği Farklı parçalar arasındaki bant genişliği sistem performansını önemli ölçüde etkiler Bu büyük veriler işleyen çok büyük ölçüde paralel sistemler için özellikle geçerlidir. Tamponlama (buffering), yeniden sıralama, önbellek (cache) kullanma gibi yöntemler bu dezavantajı bir miktar gizlemeye yardımcı olabilir. Nihayetinde, performans veri sağlanabilecek hızla sınırlıdır.

PCIe PC Mimarisi PCIe birleştirme iskeletini oluşturur Northbridge/Southbridge : PCIe anahtarlarıdır (switch) Bazı Southbridge dizaynları kendi içinde PCI-PCIe köprüsü barındırarak eski PCI kartlarını destekler Bazı PCIe karları PCI-PCIe köprüsü barınıdıran PCI kartlarıdır Source: Jon Stokes, PCI Express: An Overview: http://arstechnica.com/articles/paedia/hardware/ pcie.ars

PCIe linkleri ve şeritleri (lane) Her link bir ya da daha fazla şeritten oluşur Her şerit 1-bit genişliğindedir PCIe xn: N adet şeritten oluşur. Güncel sistemler: x8, x16 PCIe tipi x1 x2 x4 x8 x16 Veri transfer hızı (tek yön) 250 MB/s 500 MB/s 1GB/s 2 GB/s 4 GB/s David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign

Güncel Intel Mimarisi Northbridge (82925X): PCIe - GPU ve DRAM bağlantısı. PCIe x16, 8 GB/s (4 GB/s tek yöne) Southbridge (ICH6RW): diğer çevre birimleri bağlantısı

CUDA ve OpenCL Programlama Modelleri

CUDA Derleyicisi (1) void serial_function( ) {... } void other_function(int... ) {... } void saxpy_serial(float... ) { for (int i = 0; i < n; ++i) y[i] = a*x[i] + y[i]; } void main( ) { float x; saxpy_serial(..);... } Paralel CUDA koduna çevirilir C CUDA Key Kernels NVCC (Open64) CUDA object files Linker Rest of C Application CPU Compiler CPU object files CPU-GPU Executable

CUDA Derleyicisi (2).cu uzantılı kaynak kodları NVCC kullanılarak derlenir NVCC bir derleyici sürücüsüdür Gerekli araçları ve derleyicileri (cudacc, g++, cl,...) çağırır NVCC çıktısı: C kodu (host CPU kodu) Daha sonradan uygulamanın geri kalanı ile birlikte derlenmelidir. PTX Obje kodu ya da, çalışma zamanında yorumlanan PTX kaynağı

CUDA Derleyicisi (3) Device Emulation Mode: Artık desteklenmiyor An executable compiled in device emulation mode (nvcc -deviceemu) runs completely on the host using the CUDA runtime No need of any device and CUDA driver Each device thread is emulated with a host thread Running in device emulation mode, one can: (. etc Use host native debug support (breakpoints, inspection, Access any device-specific data from host code and vice-versa Call any host function from device code (e.g. printf) and vice-versa Detect deadlock situations caused by improper usage of syncthreads

OpenCL (1)

OpenCL (2) OpenCL heterojen bir ortam sunar, aynı kod CPU ve GPU ortamlarında çalıştırılabilir.

OpenCL (3) Tecrübelerimize göre: Programlaması daha güçtür. CUDA ya göre daha düşük performanslıdır. Farklı platformlar ve heterojen ortamlarda çalışmak istiyorsanız iyi bir çözümdür.

Alptekin Temizel atemizel@ii.metu.edu.tr

CUDA Aygıtları ve Threadleri Hesaplama aygıtı (device) CPU ya (host) yardımcı işlemcidir,,( memory Kendi DRAM i vardır (device Pek çok thread i parallel işler, Genelde GPU olmasına rağmen farklı bir paralel işleme aygıtı da olabilir. Uygulamanın veri-paralel kısımları pek çok thread in aynı anda çalıştığı kernel larda işlenir. David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign 61

GPU ve CPU Threadleri arasındaki farklar GPU threadleri çok daha yalındır (lightweight) Yaratılma yükleri çok düşüktür. GPU verimli çalışabilmek için 1000 lerce thread e ihtiyaç duyar Çok çekirdekli CPU lar yalnızca bir kaç threadle bile en iyi verimliliklerine ulaşabilirler.

Paralel Thread Dizilimleri Bir CUDA kernel ı thread dizilimleri (thread arrays) tarafından çalıştırılır Tüm thread ler aynı kodu çalıştırır (Single Process Multiple Data - SPMD) Her thread i kendine ait hafıza adresleri hesaplayabilmek ve kontrol kararları alabilmek için bir ID si vardır. threadid 0 1 2 3 4 5 6 7 float x = input[threadid]; float y = func(x); output[threadid] = y; David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign 63

Thread Blokları: Ölçeklenebilir Ortak Çalışma Thread dizilimleri bloklara bölünür Bir block içerisindeki threadler shared memory, atomic operations ve barrier synchronization yardımı ile ortak çalışabilir. Farklı bloklardaki threadler ortak çalışamaz. threadid Thread Block 0 Thread Block 1 Thread Block N - 1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 float x = input[threadid]; float y = func(x); output[threadid] = y; float x = input[threadid]; float y = func(x); output[threadid] = y; float x = input[threadid]; float y = func(x); output[threadid] = y; David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign 64

CUDA Hafıza Modeli Global memory host ve device arasındaki temel haberleşme alanıdır (R/W). Tüm threadlerden erişilebilir. Uzun gecikme süresi vardır. Host Grid Block (0, 0) Shared Memory Registers Registers Thread (0, 0) Thread (1, 0) Global Memory Block (1, 0) Shared Memory Registers Registers Thread (0, 0) Thread (1, 0) David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign 65

Genel Bir Programlama Stratejisi(1) Global memory aygıt üzerinde yer alır (DRAM) ve erişim hızı shared memory ye göre çok daha yavaştır. Hesaplama yaparken karlı bir yöntem veriyi parçalara ayırarak shared memory den faydalanmaktır. Öncelikle veri shared memory ye sığacak parçalara ayrılır. Her bir veri parçası bir thread block tarafından işlenir: Veri parçası bir çok thread tarafından shared memory ye kopyalanır. Bir çok thread kullanımı hafıza erişiminde paralellik sağlar. Hesaplama shared memory deki veri parçasının bir çok thread tarafından işlenmesiyle gerçekleşir. Veri üzerinden birden fazla geçiş yapılabilir. İşlenmiş veri parçası shared memory den global memory ye geri aktarılır. David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign

Genel Bir Programlama Stratejisi(2) Constant memory de DRAM üzerinde yer alır, bu nedenle shared memory ye göre oldukça yavaştır. Ancak tamponlanır! Read-only veriler için avantajlıdır. Texture: Veri okuma için kullanılan bir obje yapısıdır. Pek çok şekilde erişime (Filtreleme, sarma modları ve 1D,2D,3D erişim gibi) izin verir. David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2009 ECE 498AL, University of Illinois, Urbana-Champaign

Genel Bir Programlama Stratejisi(3) Hafıza kullanımı veri erişim yapısına göre tasarlanmalıdır: R/Only constant memory (tamponlanmış ise çok hızlıdır) R/W, blok içerisinde paylaşım shared memory (çok hızlı) R/W, yalnız thread içerisinde register (çok hızlı) R/W inputs/results global memory (yavaş)

Genel Bir Programlama Stratejisi(4) Hesaplama kodlarını yazmadan önce hafıza operasyonları için gerekli kodları yazın, Hafıza erişimlerini optimize edin, Hesaplama kodlarını yazıp entegre edin, Profiler ı kullanarak sistem darboğazlarını analiz edin. Memory access optimization is extremely important