CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

Samankaltaiset tiedostot
Grafiikkasuorittimen käyttö keskusmuistitietokannoissa

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Digikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Intel Threading Building Blocks

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Ohjelmistoradio. Mikä se on:

Käyttöjärjestelmät: prosessit

Visma Econet -ohjelmat ActiveX on epävakaa -virheilmoituksen korjausohjeet

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

4. Luokan testaus ja käyttö olion kautta 4.1

Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

K-Lite Codec Pack v2.48 Asennusohje (toimii myös uusissa versioissa)

L models. Käyttöohje. Ryhmä Rajoitteiset

Ville Suvanto GPGPU - PROSESSORIN KORVAAMINEN NÄYTÖNOHJAIMELLA YLEISHYÖDYLLISISSÄ OHJELMISSA

FOSS4G at CSC. CSC Tieteen tietotekniikan keskus Kylli Ek

Rajattomat tietoverkot ja niiden rooli pilvipalveluissa. Jukka Nurmi Teknologiajohtaja Cisco Finland

Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.

KYMENLAAKSON AMMATTIKORKEAKOULU. Ubuntu. Yukun Zhou

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen

e-business hinnoittelu Tuomas Salonen Oracle Finland Oy

.NET ajoympäristö. Juha Järvensivu 2007

VMwaren keskitetty työasemaratkaisu

HAKURATKAISUN ANATOMIA - KURKISTUS PELLIN ALLE

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

LIITE. asiakirjaan. komission delegoitu asetus

ZENworks Application Virtualization 11

Tekstinkäsittelystä. H4: Tekstinkäsittelyn perusharjoitus. Toimisto ohjelmista

Viisaat hankinnat JIT2015 sopimusehdot

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

Luento 2: Tiedostot ja tiedon varastointi

Näytönohjain CPU:n laskennan suorittajana

CipherLab CPT-8001L -tiedonkeruupäätteen käyttö Ecomin kanssa

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

Anvia IT-palvelut Oy Tuotetiedot. Tiedot. Tuotenumero FUJITSU CELSIUS W550 + K1200. Tuotetiedot.

Algoritmit 1. Luento 3 Ti Timo Männikkö

Visma Liikkuvan työn ratkaisut

Mastercam X6 Siirtymisopas

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

Tietorakenteet ja algoritmit - syksy

PIKAOPAS NOKIA PC SUITE 4.51a NOKIA PUHELIMELLE

Rinnakkaistietokoneet luento S

811312A Tietorakenteet ja algoritmit I Johdanto

PC-tietokonehinnasto

Harjoitustyö: virtuaalikone

AMKEn luovat verkostot -seminaari , Aulanko. Ennakointitiedon lähteitä henkilöstösuunnitteluun. Lena Siikaniemi henkilöstöjohtaja

Ohjelmoinnin peruskurssien laaja oppimäärä

NÄYTÖNOHJAIMEN SUORITUSKYKYTESTIT

TIE Ohjelmistojen suunnittelu

Linuxin asennus kannettavaan

WINDOWS 10 -kurssi.

MINITV POCKET43 MINI DV VIDEOKAMERA

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Sivuston tiedotaskgeek.io

Maiju Mykkänen Susanna Sällinen

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Johdanto. Olet rekisteröitynyt cined.eu -esitysalustalle ja käyttäjätilisi onaktivoitu.

Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Mobiililaitteiden ja sovellusten tietoturvallisuus mihin tulee kiinnittää huomiota?

Visma Liikkuvan työn ratkaisut VLS lisensointi. Ylläpitäjän opas

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

MS-A0102 Differentiaali- ja integraalilaskenta 1

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Lumejärjestelmä Xen. Reino Miettinen

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

lizengo Asennusopas Windows: in kopioiminen

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Hohde Consulting 2004

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

SANS Internet Storm Center WMF-haavoittuvuuden tiedotus

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Stallings, Luku

erasmartcard-kortinlukijaohjelmiston käyttöohje

Osoitin ja viittaus C++:ssa

Käyttöjärjestelmän rakenne

Sisältö IT Linux 2001:n uudet ominaisuudet IT Linux 2001:n yhteensopivuus Red Hat 7.0:n kanssa Asennuksen valmistelu

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Transkriptio:

CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen

Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden 2012 alusta avoin, kehittäjät voivat hakea Nvidialta pääsyä lähdekoodiin. Versio 1.0 julkisesti saatavilla helmikuussa 2007, viimeisin versio 4.1 tammikuussa 2012.

Yleisesti Vaatii Nvidian näytönohjaimen, vähintään Geforce 8-sarjaa. Käyttöjärjestelminä Windows, OS X ja Linux. Pääasiallisena kehityskielenä C tai C++, lisäksi bindingit mm. Javalle,.NETille, Pythonille. Runsaasti valmiita kirjastoja erityisesti tieteelliseen laskentaan. Kilpailijoita OpenCL ja DirectCompute. Toimivat myös muilla näytönohjaimilla, OpenCL:ssä myös CPU-fallback

Miksi? CUDA is NVIDIA s parallel computing architecture. It enables dramatic increases in computing performance by harnessing the power of the GPU.

Miksi? Intel i5 2500: 200, 25 GFLOPs Nvidia Geforce GTX 560: 200, 1075 GFLOPs Toki prosessori löytyy jokaisesta koneesta, CUDA-kykenevää näytönohjainta ei. Useita näytönohjaimia helppo käyttää rinnakkain. CUDAn käyttöönotto melko nopeaa ja vaivatonta.

Mihin? Optimaalinen tehtävä sisältää suuren joukon liukulukuja, jonka jokaiselle alkiolle suoritetaan jokin tietty operaatio. Erityisesti neliöjuuri, trigonometriset operaatiot yms. ovat nopeita. Koska laskenta tapahtuu prosessorin ulkopuolella, voi prosessori samaan aikaan tehdä jotain muuta.

Missä?

Termit Kernel: Näytönohjaimella suoritettava funktio. Thread/säie: Yksi kernelin instanssi. Warp: 32 säiettä, SIMD-tyylisesti suoritettava joukko samanlaisia säikeitä. Block/lohko: 1 1024 säiettä, joukko samanlaisia säikeitä jotka ajetaan samanaikaisesti. Grid: Joukko samanlaisia lohkoja, jotka ajetaan toisistaan riippumatta. Kun ajetaan useampia lohkoja, CUDA suorittaa samanaikaisesti niin monta lohkoa kuin kortille mahtuu.

Termit kuvana

Sovellusten kehittäminen CUDA toolkit (kääntäjä + muut työkalut) Ajurit (sovellusten ajaminen) GPU Computing SDK (sampleja yms.) Näytönohjaimella ajettava koodi (kernelit) C- pohjaista, myös C++:n ominaisuuksia. Sovellus käyttää CUDAa joko runtime- tai driverkutsujen avulla (ei molempia). CUDAa käyttävät tiedostot käännetään CUDAkääntäjällä. Mikäli käyttää C:tä tai C++:aa, voi koko sovelluksen halutessaan kääntää tällä.

Rajapinnat

Kernelit Avainsanalla global sovelluksesta kutsuttava kernel. vrt. device vain toisesta kernelistä Ei paluuarvoa. Kernelin sisällä käytössä tiettyjä säikeen yksilöiviä arvoja.

Runtimen käyttäminen

Datan siirto Tehtävästä riippuen datan siirto keskusmuistin ja näytönohjaimen välillä voi viedä moninkertaisesti aikaa verrattuna itse laskentaan. Tämän vuoksi hyvin yksinkertaisia tehtäviä ei kannata kortille siirtää. Kaikki kortit kykenevät samanaikaisesti suorittamaan kerneliä ja kopioimaan dataa kortin ja keskusmuistin välillä yhteen suuntaan. Lisäksi kehittyneemmät kortit kykenevät molemminsuuntaiseen kopiointiin.

Liukuhihnoittaminen MEM - GPU GPU CPU GPU - MEM Tyhmä sovellus: Optimaalinen sovellus:

Nopeus C = A + B Q6600 GTX 460 T8100 8600M 1 000 0 1 0 1 10 000 0 1 0 2 100 000 1 2 1 6 1 000 000 5 10 5 21 10 000 000 54 88 46 150 Ajat millisekunteja

Nopeus C = sqrt(sin(a) + cos(b)) Q6600 GTX 460 T8100 8600M 1 000 0 1 0 1 10 000 1 1 1 2 100 000 14 2 13 6 1 000 000 185 10 125 21 10 000 000 1340 89 1238 151 Ajat millisekunteja

Suoritusaika 10 000 000 alkiolla suoritusaika jakautui 8600Mnäytönohjaimella seuraavasti: A ja B kopiointi Laskenta C kopiointi C = A + B 72 ms 0 ms 64 ms C = sqrt(sin(a)+cos(b)) 72 ms 1 ms 64 ms Lisäksi sovelluksen ensimmäinen CUDA-kutsu alustaa laitteen käyttöön, johon kului aikaa n. 90 ms. Tätä ei otettu huomioon mittauksissa.

Yhteenveto GPGPU noin yleisesti varteenotettava teknologia. CUDAlla kehittämisen aloittaminen helppoa hyvän dokumentaation, esimerkkien ja kirjastojen vuoksi. OpenCL saattaa kuitenkin olla varmempi valinta yhteensopivuutensa vuoksi. Nvidian OpenCL-tuki melko heikkoa, joten jos aikoo käyttää Nvidiaa, on CUDA parempi (nopeampi).

Lähteet/linkkejä Kuvat: http://www.tomshardware.com/reviews/nvidia-cuda-gpu,1954.html http://developer.nvidia.com/category/zone/cuda-zone Lataa CUDA 4.1: http://developer.nvidia.com/cuda-toolkit-41