Näytönohjain CPU:n laskennan suorittajana
|
|
- Olavi Saarnio
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 Näytönohjain CPU:n laskennan suorittajana Markus Järvinen Opinnäytetyö Marraskuu 2015 Tekniikan ja liikenteen ala Insinööri (AMK), Ohjelmistotekniikan tutkinto-ohjelma
2 Kuvailulehti Tekijä(t) Järvinen, Markus Työn nimi Näytönohjain CPU:n laskennan suorittajana Tutkinto-ohjelma Ohjelmistotekniikka Työn ohjaaja(t) Ari Rantala Toimeksiantaja(t) Tiivistelmä Julkaisun laji Opinnäytetyö, AMK Sivumäärä 25 Päivämäärä Julkaisun kieli Suomi Verkkojulkaisulupa myönnetty: Näytönohjaimia käytetään perinteisesti 2D- tai 3D-grafiikan piirtämiseen, mutta nykyisin näytönohjaimilla voidaan suorittaa grafiikan piirron lisäksi muutakin laskentaa. Tätä näytönohjaimen laskentakapasiteetin hyödyntämistä kutsutaan GPGPU-tekniikaksi ja sitä voidaan käyttää mm. OpenCL-ohjelmointirajapinnan avulla. Näytönohjaimet ovat keskusprosessoreihin verrattuna hyvin tehokkaita rinnakkaislaskennassa. GPGPUtekniikkaa on hyödynnetty piirtämisen apuvälineenä esim. peleissä piirrettävien kohteiden tietoja päivittämiseen näytönohjaimessa. Työn tavoitteena oli selvittää näytönohjaimen hyödyntämistä keskusprosessorin rinnalla tietokonepelien yhteydessä. Opinnäytetyössä luotiin pelimoottorin pohja, jonka avulla luotiin vokselipohjainen simulaatio. Simulaatio toteutettiin OpenCL-ohjelmointirajapinnan avulla näytönohjaimelle sopivaksi suunniteltuna. Lisäksi verrattiin näytönohjaimesta saatuja tuloksia keskusprosessorilla suoritettavaan vastaavan toteutukseen. Opinnäytetyöllä ei ollut toimeksiantajaa vaan kyseessä oli henkilökohtainen tutkimusprojekti GPGPU-tekniikan hyödyntämisestä. Toteutus kirjoitettiin C++-kielellä Ubuntu Linux -käyttöjärjestelmäympäristössä. Toteutuksessa hyödynnettiin myös keskusprosessorin monisäietukea. Simulaation avulla ei onnistuttu keräämään suoritukseen liittyviä tuloksia, joten toteutus jäi siltä osin vajaaksi. Tiedonsiirroista saadut tulokset rajoittuivat vain yhteen näytönohjaimeen, mutta siitä saadut tiedot toimivat kohtuullisen hyvin suunnan antajina näytönohjaimen hyödyntämisessä. Opinnäytetyön tulokset osoittavat, että tiedonsiirto näytönohjaimelle on hidasta näytönohjaimen tarjoamaan muistimäärään nähden. Tulosten avulla pääteltiin, että painopisteenä tulisi olla GPGPU-tekniikan hyödyntäminen näytönohjaimessa jo olevalle datalle ja tiedonsiirtojen minimointi näytönohjaimen ja tietokoneen keskusmuistin välillä. Suurien datakokoelmien käsittely näytönohjaimella kestäisi liian kauan, mikäli tulokset tulisi siirtää pois näytönohjaimelta käsittelyn jälkeen. Nämä tiedonsiirrot laskisivat kuvanpiirtämisten määrän alle 30 kuvanpiirtoon sekunnissa, jota ei voida hyväksyä monissa nykyajan peleissä. Avainsanat näytönohjain, vokseli, prosessori, OpenCL, OpenGL, moniydinprosessori Muut tiedot
3 Description Author(s) Järvinen, Markus Title of publication Applying CPU computing for GPU Degree programme Software Engineering Supervisor(s) Rantala, Ari Assigned by Type of publication Bachelor s thesis Number of pages 25 Date Language of publication: finnish Permission for web publication: Description Graphics processing units are normally used for drawing 2D- or 3D-graphics; however, nowadays graphics processing units can be utilized for different kinds of computing besides graphics rendering. This type of graphics processing unit computing is referred to as GPGPU and it can be implemented with the usage of APIs like OpenCL. Graphics processing units are more efficient compared to central processing units when it comes to parallelized computing. GPGPU has been utilized in conjunction with rendering in games where the statuses of drawn entities are updated through the usage of GPGPU. The main goal of the thesis was to study utilizing GPGPU alongside the central processing unit in video games. For thesis purposes a simple game engine was build which was used to create voxel based simulation. The simulation was adapted for it to be run on graphics processing units with the OpenCL API. The performance results received from the usage of GPGPU were to be compared to the results received from central processing unit which could also run the simulation. The thesis did not have an assigner(s) and was a personal research project on utilizing GPGPU. Implementation was done with the C++ language and the operating system used was Ubuntu Linux. Central processing unit's multithreading capabilities were utilized during the development. Results could not be measured through the simulation which left parts of the goals of the thesis unobtained. Results received from data transfers were limited for single graphics processing unit; however, the results gained from it could be used as guidelines when using GPGPU. The results showed that data transfers are slow compared to the memory size offered by the graphics processing unit. Through the results it was deduced that when using GPGPU the implementations should focus using the data residing within the graphics processing unit and minimize data transfers between central processing unit and graphics processing unit. Keywords (subjects) graphics processing unit, central processing unit, GPGPU, OpenCL, OpenGL Miscellanous
4 1 1 Johdanto Tietoperusta Muistityypit RAM VRAM Näytönohjain GPU GPGPU OpenGL OpenCL CUDA Vokseli GPGPU-tekniikan ongelmien tarkastelu tietokonepeleissä Tiedonsiirtonopeudet ja muistin hyödyntäminen Näytönohjaimen hyödyntäminen ei-visuaalisissa efekteissä GPGPU:n hyödyllisyys verrattuna prosessoriin ja yhdessä Ulkopuolisten kirjastojen toteutukset Hyväksyttävä määrä kuvaruutuja sekunnissa GPGPU-tekniikan hyötykäytön selvittäminen RAM:in ja VRAM:in välinen viive Datapakettien mitoittaminen Vokselipohjainen nesteen simulointi Vokselien määritelmät Vokselityyppi Vokselien päivittäminen GPGPU-tekniikan sovellus vokseleilla Prosessoripohjainen sovellus vokseleilla Prosessori ja GPGPU-pohjainen sovellus vokseleilla Piirrettyjen kuvien määrä sekunissa tarkastelu Säikeistys prosessorilla Tehtävän määritelmä Tulokset Tiedonsiirtonopeudet Johtopäätökset Tiedonsiirron ongelmat GPGPU:n tehokkuus Yhteenveto Lähteet... 25
5 Taulukot 2 Taulukko 1: Tiedonsiirron kirjoitusnopeudet Taulukko 2: Tiedonsiirron lukunopeudet... 21
6 1 Johdanto 3 Pelit ovat maailmanlaajuisesti erittäin merkittävä bisnes ja pelien yleistyminen, lisääntyminen ja monipuolistuminen mobiililaitteilla, kuten älypuhelimilla (Android, iphone, Windows Phone) sekä tableteilla, perinteisten pelikonsoleiden (Nintendo, Playstation, Xbox) sekä tietokoneiden rinnalle, ovat nostaneet pelien merkityksen merkittäväksi viihdeteollisuudenalaksi ympäri maailman. Peliteollisuus Suomessakin on jo noussut miljardin euron liikevaihdon tasolle ja kasvun lisääntymistä on jo ennustettu. (S. Suvanto, 2014) Erilaisia pelityyppejä ovat esimerkiksi pulma-, seikkailu-, toiminta-, ammunta-, rooli-, tasoloikka- ja strategiapelit. Pelityyppien välillä on yleensä myös paljon eroa pelilaitteen tehovaatimuksissa esim. pulmapelit voivat olla tehovaatimuksiltaan yleensä melko vaatimattomia, kun taas toiminta sekä strategiapelit voivat vaatia paljon tehoja fysiikan, keinotekoisen älyn ja pelin graafisen ulkoasun vuoksi. Normaalisti pelien toimintatapa on pohjautunut yksisäikeiseen toimintaan. Sen tehokas toimintakyky joko pohjautuu out-of-order suoritukseen (Out-of-Order Execution, OoOE), jossa suoritettavia komentoja pyritään suorittamaan siten, että kun komentojen vaatimat tiedot ovat valmiita käytettäväksi ja riippuvuuksia tietoihin liittyen ei ole jäljellä, voidaan kyseiset komennot suorittaa samalla kun aikaa vievät edelliset komennot ovat suoritettavina. OoOE tehokkuus riippuu prosessorin laskukyvystä sekä itse koodin riippuvaisuuksista edellisiin komentoihin. Pullonkauloja voi esiintyä liikaa koodissa, mitkä haittaavat OoOE suoritusta. Toinen vaikuttava tekijä yksisäikeisten pelien toimintaan on prosessorin taajuus, mikä kääntyy nopeudeksi. Koska taajuutta ei voi nostaa jatkuvasti ylöspäin laskentatehon kasvattamiseksi laitteiston vikaantumisen vuoksi, kuten tietokoneen materiaalien fyysisten vaurioiden takia esim. komponenttien lämpövaurioiden takia, siirryttiin moniydinprosessoreiden käyttöönottoon ja hyödyntämiseen. Laskennan jakaminen mahdollistaa nopeamman suorituksen sekä helpommin skaalattavan ja tehon nostattavan laitteiston, mutta vaatii
7 4 enemmän tiedon synkronisointia komentosarjojen välissä, jotta tiedot pysyisivät samana komentojen eri vaiheissa. Moniydinprosessoreiden hyödyntämistä on myös yritetty helpottaa tarjoamalla niiden hyödyntämiseen tarkoitettuja kirjastoja kuten OpenMP sekä Intelin Intel TBB (Thread Building Blocks), jotka helpottavat olemassa olevan koodin kääntämistä moniydinprosessoreille pienemmällä vaivalla. Nykyajan pelit ovat soveltaneet useampaa prosessoriydintä toteutuksessaan, vaikkakin tuki kehittäjien puolelta on ollut vaihtelevaa. Moniydinprosessoreiden lisäksi on myös kehitetty näytönohjaimia hyödyntäviä GPGPU (General-purpose computing on graphics processing units)- ohjelmointirajapintoja, joilla pyritään hyödyntämään näytönohjaimien laskentakykyä muussa kuin 3D-grafiikan piirrossa. Tietokonepelien yhteydessä GPGPU-tekniikka on painottunut visuaalisten efektien simulointiin savusta partikkeleihin, mutta kyseiset efektit eivät vaikuta itse pelin toiminnallisuuteen ollenkaan. Tämän työn tarkoituksena oli pyrkiä selvittämään GPGPU-tekniikan käyttöä tietokonepelien toiminnallisuuden vaikuttamiseen sekä sen tehokkuuden ja hyödyllisyyden selvittämiseen niin itsenäisesti kuin prosessorin rinnallakin sekä siihen liittyviä ongelmia ja vaatimuksia.
8 5 2 Tietoperusta 2.1 Muistityypit RAM RAM (Random-Access Memory) on tietokoneen ajon aikana käytettävissä oleva muisti. RAM:iin voidaan ohjelmien suorittamisen aikana tallentaa ja lukea tietoa, joka on paljon nopeampaa, kuin kovalevyiltä lukeminen ja niihin kirjoittaminen ohjelmien ajon aikana. Tietokoneohjelmien tulisi käyttää RAM:ia sillä prosessorien sisäänrakennetut muistimäärät ovat todennäköisesti liian vähäiset ohjelman tarvittavaan ja nopeasti saatavaan ja käsiteltävään tietomäärän nähden. Yleisin RAM-tyyppi on DRAM (Dynamic Random-Access Memory) pohjainen DDR SDRAM VRAM VRAM (Video Random-Access Memory) on näytönohjaimissa sovellettu muistityyppi. Nykyisten näytönohjainten VRAM-tyyppi on GDDR, joka pohjautuu DDR SDRAM muistiin. VRAM:in määrää ei voi kasvattaa normaalin RAM:in tapaisesti, sillä se on pysyvästi liitettynä näytönohjaimeen. 2.2 Näytönohjain GPU GPU (Graphics Processor Unit) on näytönohjain, jonka pääkäyttötarkoitus on grafiikan piirtämisessä näyttölaitteille. Näytönohjaimet painottuvat rinnakkaiseen laskentaan toteutuksessaan, mikä mahdollistaa tehokkaan toteutuksen grafiikan piirtämiseen. Grafiikan piirtämiseen sovellettavia laitteita oli jo olemassa, mutta ne olivat erikoistuneita vain tiettyjen grafiikan piirtämisen osien hyödyntämiseen. Vasta v Nvidia ja ATI julkaisivat kuluttajakäyttöön nykytermin mukaiset
9 6 näytönohjaimet, joissa kaikki grafiikan piirtoon liittyvät toiminnot tapahtuvat näytönohjaimessa. (C. McClanahan, 2011) GPGPU GPGPU tarkoittaa näytönohjaimen soveltamista yleiskäyttöisen laskentaan (General-purpose computing on graphics processing units). Tämän suuntautumisen avulla voidaan soveltaa näytönohjaimia muuhunkin kuin grafiikan piirtämiseen, johon se on alun perin suunniteltu. Tämän hetken tunnetuimmat ja käytetyimmät GPGPU-tekniikkaan soveltuvat ohjelmointirajapinnat ovat OpenCL sekä Nvidian CUDA OpenGL OpenGL on laitteistosta riippumaton ohjelmointirajapinta 2D- sekä 3Dgrafiikan piirtämiseen. Ohjelmointirajapintaa tukevien laitteiden kuitenkin tulee tarjota omat ajurinsa OpenGL:n virallisten määritelmien mukaisesti toteutettuna. OpenGL:n alkuperäinen kehittäjä oli SGI (aikaisemmin Silicon Graphics), jonka kehittäminen siirtyi v Khronos Groupin alaiseksi. OpenGLrajapintaa käytetään tietokonepelien piirtämiseen sekä teollisuuden grafiikkasovellusten yhteydessä. OpenGL:n piirtämistapa perustuu tilakoneeseen missä OpenGL:lle määritellään piirtämiseen liittyvät asetukset ja tilat joiden perusteella piirtämiskomennot toimivat. Tämän lisäksi OpenGL voi ajaa varjostin (eng. Shader) ohjelmia virallisesti OpenGL 2.0:sta lähtien. Varjostin-ohjelmien avulla grafiikkakoodaaja voi määritellä erilaisia piirtotapoja, mitä näytönohjain suorittaa. (The Khronos Group, 2015) OpenCL OpenCL on ohjelmointirajapinta, jolla pyritään luomaan ohjelmia, joita voidaan suorittaa erilaisissa laskentayksiköissä, kuten prosessoreissa että näytönohjaimissa. OpenCL:n alkuperäinen kehittäjä oli Apple Inc, joka on siirtynyt Khronos Groupin alaiseksi jatkokehittämiseen. OpenCL:n avulla voidaan hyödyntää tietokoneen erilaisia laskentayksiköitä, joita saatettaisiin käyttää normaalisti
10 7 tietyn tyyppiseen laskentaan, kuten näytönohjaimet, joita käytetään grafiikkasovellusten grafiikan piirtämiseen ja antamalla kyseisille laskentayksiöille niiden normaalista laskentatehtävistä poikkeavat tehtävät. OpenCL:n pääasiallisena tarkoituksena on suorittaa paljon rinnakkaista laskettavaa vaativia tehtäviä sekä toteutuksia. Tämän avulla esimerkiksi näytönohjaimien laskentayksikköjä saadaan tehokkaasti käyttöön GPGPUtekniikan periaatteella, sillä ne juuri perustuvat rinnakkaiseen laskentaan 2Dkuvien muodostamiseen 2D- sekä 3D-mallien pohjalta. (The Khronos Group, 2015) CUDA CUDA (Compute Unified Device Architecture) on Nvidian näytönohjaimille suunnattu GPGPU-tekniikalle suunniteltu ohjelmointirajapinta. Nvidia on toteuttanut GPGPU-pohjaisia sovelluksia CUDA:n avulla esim. PhysX, joka on reaaliaikainen fysiikkamoottori, jota monet tunnetut pelit sekä pelimoottorit hyödyntävät kuten pelimoottoreista Unreal Engine. PhysX oli alun perin oli suunniteltu erillisille fysiikan käsittely yksiköille (PPU, Physics Processing Unit) suoritettavaksi, mutta sitä hyödynnetään nykyisin näytönohjaimissakin. Näytönohjaimien hyödyntäminen mahdollistaa täten erikoistuneiden laskentayksiköiden kuten PPU:n korvaamisen ja helpottaa tietokoneen laskentakyvyn parantamista vain lisäämällä sopivia näytönohjaimia. PhysX:ää sovelletaan graafisten efektien simuloinnissa suurimmaksi osaksi. (Nvidia Corporation, 2015) 2.3 Vokseli Vokseli (eng. Voxel) on elementti 3D-kuvassa joka koostuu useista kerroksista 2D-kuvia. Normaalissa 2D-kuvassa pikseli on vokselin vastine 3D-kuvaan nähden. Jokainen kerros esittää tietyltä syvyydeltä napattua kuvaa. Vokseliin voidaan varastoida 2D-kuvan pikselin tapaisesti tietoa, joita voidaan hyödyntää erilaisissa sovelluksissa, kuten lääketieteessä magneettikuvien yhteydessä. Peleissä sitä on hyödynnetty maaston kuvaamisessa ja piirtämisessä sekä geometrian muotojen määrittämisessä. Tunnetuin vokselipohjainen peli on Minecraft. (Voxel, 2015)
11 3 GPGPU-tekniikan ongelmien tarkastelu tietokonepeleissä Tiedonsiirtonopeudet ja muistin hyödyntäminen Vaikka näytönohjain pystyisi laskemaan tehokkaasti normaalisti prosessorilla laskettavia laskuja ja toimintoja, sen hyötykäyttöön vaikuttaa RAM:in ja VRAM:in välisessä tiedonvaihdossa/synkronoinnissa syntyvä viive. Tämän vuoksi pitää pyrkiä tarkastelemaan ja selvittämään eri tasoisten näytönohjainten tiedonsiirtokykyä ja määrittämään tiedonsiirtoon liittyvät suositukset tehokkaan laskennan vuoksi. Muistin määrä näytönohjaimissa on vaihtelevaa ja tällä hetkellä vallitsevat VRAM määrät ovat n. 1-4 GB (Steam Hardware & Software Survey, 2015; Standalone Hardware Stats, 2015), joka myös vaikuttaa GPGPU:n käyttöön sekä grafiikan piirtämiseen sillä piirtämiseen kuulumaton data vie tilaa piirtämiseen liittyvältä datalta, mikä saattaa aiheuttaa pullonkaulan jos piirtämiseen liittyvää dataa joudutaan poistamaan näytönohjaimen VRAM:sta GPGPU laskennan ajaksi ja siirtämään sen takaisin laskentojen jälkeen. 3.2 Näytönohjaimen hyödyntäminen ei-visuaalisissa efekteissä GPGPU-tekniikkaa käytetään yleisesti pelien yhteydessä graafisten efektien lisäämiseen tai parantamiseen esim. lisäämällä partikkeleita, jotka säilyvät näytönohjaimen muistissa. Kyseisten efektien tilaa päivitetään myös näytönohjaimen puolella ilman, että prosessori vaikuttaa asiaan ollenkaan. Samaa suoritetaan savun simuloinnissa sekä piirtämisessä. Tämä on käytännöllistä, mutta ei anna tarpeeksi hyvää kuvaa GPGPU:n soveltuvuudesta muuhun kuin puhtaasti graafisten efektien simuloinnista ja piirtämisestä, sillä pelin toiminnallisuuteen kyseiset visuaaliset efektit eivät juuri vaikuta. Tarkoituksena onkin pyrkiä suorittamaan pelin toiminnallisuuteen vaikuttavaa laskentaa, jonka voi havainnollistaa visuaalisena efektinä.
12 3.3 GPGPU:n hyödyllisyys verrattuna prosessoriin ja yhdessä Koska näytönohjaimen laskentatapa ja tehokkuus ei ole verrattavissa normaaliin prosessorilla suoritettavaan laskentaan suoraan, pitää näytönohjaimella suoritettava laskenta purkaa yksinkertaisempiin palasiin, joita voidaan ajaa rinnakkain ilman datakisoja, jotka voivat aiheuttaa vääristyneen tiedon lukemista ja kirjoittamista. Tämä saattaa vaatia useamman askeleen verrattuna prosessoreilla suoritettaviin vastaaviin laskentoihin, mutta mahdollistaa suurien tietomäärien käsittelyn kerralla, mikä on GPGPU-tekniikan käyttötarkoitus. Paljon jakautuva koodipolku on hitaampaa suorittaa näytönohjaimella kuin prosessorilla Ulkopuolisten kirjastojen toteutukset Pelimoottorit voivat hyödyntää muita kirjastoja, jotka saattavat myös hyödyntää GPGPU-tekniikkaa. Tällöin saattaa syntyä tilanteita, joissa esim. näytönohjaimen muistin käytöstä syntyy ongelmia tiedonsiirtojen kanssa. Tässä työssä ei kuitenkaan tarkastella kyseistä tilannetta. 3.5 Hyväksyttävä määrä kuvaruutuja sekunnissa Työn tavoitteena oli pyrkiä tarkastelemaan tuloksia eri skaaloilla GPGPU:n tehokkuudesta kun alarajana on 30 kuvan piirtämistä sekunnissa. Tämän rajan alittaminen vaikuttaa pelikokemukseen siten, että kuvien vaihtuminen on selkeästi havaittavissa videopelien yhteydessä ja mahdollisesti vaikuttaa itse pelin pelaamiseen, sillä pelin pyörimisnopeus joko hidastuu ennalta määrätyn kuvaruudun päivitysnopeuteen nähden tai sisältää suuria aukkoja päivitysten välissä. Tämä taas vaikuttaa pelaajan haluamien toimintojen toteuttamiseen, jotka suoritetaan syöttölaitteiden, kuten näppäimistön pohjalta. Eli yhden päivityksen ja päivityksen tuloksen piirtämisen suorittamiseen saisi kulua vain 33 millisekuntia, kun pyritään havainnollistamaan päivityksen tulokset piirrettynä ruudulle 30 kertaa sekunnissa.
13 4 GPGPU-tekniikan hyötykäytön selvittäminen Opinnäytetyössä sovellettiin OpenCL-ohjelmointirajapintaa mittauksissa GPGPU:n tehokkuudesta ja näytönohjain kohtaisia optimointeja ei toteutettu. Mittauksissa käytetään itsetehtyä pelimoottorin pohjaa. Tämän työn aikana ei käytetty kovalevyä sovelluksen apuna. 4.1 RAM:in ja VRAM:in välinen viive Mitataan näytönohjaimeen liittyvät kirjoitus- ja lukunopeudet skaalaamalla käsiteltävää datamäärää kunnes siirtonopeudet ovat selvillä. Tarkoituksena on selvittää onko tämä viive kuinka haitallinen GPGPU:n hyötykäyttöön. Viiveen ollessa suuri, se haittaisi nopeasti suoritettavan, mutta yksinkertaisen laskennan hyötykäyttöä. Mittauksessa käytetään 50 megatavua muistia siirtoaikojen mittauksessa, joka täytetään valmiiksi arvoilla. Muisti sijaitsee RAM:iin sijoitettuna. Toteutus suoritetaan yksinkertaisella silmukalla. for(unsigned int i = 0; i < OPENCLMEMORYTEST; ++i) { boost::property_tree::ptree t; cl_int error = queue->enqueuewrite(wr); while(cl_success!= this->clcontext->geteventprofilinginfo(p_info)) {} 10 p_info.name = CL_PROFILING_COMMAND_END; p_info.value = &timeend; while(cl_success!= this->clcontext->geteventprofilinginfo(p_info)) {} t.add("bytes",wr.size); t.add("time",timeend - timestart); t.add("average",(float)wr.size / (timeend - timestart)); tree.add_child("memory_transfer.results.write_results.result",t); wr.size *= 0.5f; p_info.value = ×tart; p_info.name = CL_PROFILING_COMMAND_START; } wr.size = b_info.size; p_info.value = ×tart; p_info.name = CL_PROFILING_COMMAND_START; for(unsigned int i = 0; i < OPENCLMEMORYTEST; ++i) { boost::property_tree::ptree t; cl_int error = queue->enqueueread(wr); while(cl_success!= this->clcontext->geteventprofilinginfo(p_info)) {}
14 11 p_info.name = CL_PROFILING_COMMAND_END; p_info.value = &timeend; while(cl_success!= this->clcontext->geteventprofilinginfo(p_info)) {} t.add("bytes",wr.size); t.add("time",timeend - timestart); t.add("average",(float)wr.size / (timeend - timestart)); tree.add_child("memory_transfer.results.read_results.result",t); wr.size *= 0.5f; p_info.value = ×tart; p_info.name = CL_PROFILING_COMMAND_START; } queue-muuttuja on OpenCL:n komentojonon (Command Queue) kääritsijä, joka ottaa vastaan suoritettavia käskyjä. Mittauskäskyjen aloitukset ja lopetukset saadaan geteventprofilinginfo()-funktion avulla p_info-muuttuja sisältää tarvittavat muuttujat eri tapahtumien tiedusteluun. Tällä hetkellä OpenCL tukee vain suoritukseen liittyvien aikojen tiedusteluun, kuten komennon aloitus- ja lopetusajat. Lopuksi tiedot tallennetaan Boost-kirjaston tarjoamaan tietorakenteeseen nimeltä property tree. 4.2 Datapakettien mitoittaminen Kun viive on saatu mitoitettua pyritään mitoittamaan siirrettävien/muutettavien datapakettien koko sellaisiksi, että näytönohjain saisi suoritettua datapaketteja koskevat laskut ja toiminnot yhtä datakokonaisuutta kohden. Samaan aikaan valmistellaan ja siirretään seuraava laskettava erä näytönohjaimen muistiin ja luetaan edellisten laskujen tulokset pois mahdollisesti näytönohjaimelta prosessorin ohjaamana. Tämä on suhteellisen tärkeä vaihe, sillä tehokkaan GPGPU laskennan suorittaminen riippuu datan siirtokyvystä varsinkin kun kyseessä on tietokonepelit, joissa ajan käyttö on rajoitettu. Myös datapakettien määrä ja koko myös vaikuttavat lopputulokseen siirtonopeuden lisäksi, jos kerralla käsiteltävän, siirrettävän ja luettavan datapakettien koko vaikuttaa piirtämisessä käytettävän tiedon tilapäiseen siirtoon pois näytönohjaimen muistista, voi se nostaa yhden päivityksen ja piirtämiseen liittyvän ajan liian korkeaksi, kun tarvittavat piirtämiseen liittyvät tiedot palautetaan takaisin näytönohjaimelle. Tämä myös saattaa osoittautua haitalliseksi ajureiden puolelta muistin varaamiseen ja vapauttamiseen
15 12 liittyvien ajankäytön vuoksi. Tarkoituksena on mittaustulosten perusteella päätellä, onko näytönohjaimen muistimäärä liian pieni jaettuna GPGPU:lle ja grafiikan piirtämiselle. Datapakettien mitoitus toteutetaan ennen varsinaisen ohjelman ajamista, joka sitten hyödyntää tuloksia toteutuksessaan parhaansa mukaan. 4.3 Vokselipohjainen nesteen simulointi Tässä työssä käytetään vokseleita nesteen simuloinnissa. Vokseleiden avulla voidaan helposti suorittaa simulointi ja vokseleiden vaatimat muistimäärät kattavat työssä tarkasteltavat tiedonsiirtoon liittyvät ongelmat Vokselien määritelmät Vokselin perusmuoto kuvataan näin: koko: 12 tavua jaettuna kolmeen (3) 32-bittiseen muuttujaan Vokseliryhmä tulee olemaan kooltaan 32³ Vokselin muotoja ei ole määritelty vokseliin itse vaan se toimii säiliönä, josta luetaan sen muoto ja kyseisen muodon yhteydessä esiintyvät arvot. Vokselin perustietoihin kuuluu: ID, jonka arvo on välillä Nolla (0) tarkoittaa, että vokseli on tyhjä Lämpömuokkausmerkki, joka on välillä 0 1. Toimii korvamerkkinä lämmön päivittämisen yhteydessä Muokkausmerkki, joka on välillä 0 1. Toimii korvamerkkinä siirtymien päivittämisen yhteydessä Olomuoto, jonka arvo on välillä 0 2, 0 = kiinteä, 1 = nestemäinen, 2 = kaasu Lämpötila, jonka arvo on välillä ja yksikkönä Kelvin Olomuodon perusteella suoritetaan kyseisille olomuodoille sopivat toiminnot. Vedellä ja kaasulla on samat ominaisuudet. Korkeus, joka on välillä Virtaussuunta X-tasolla, joka on välillä ja tarkkuutena 1,5 astetta Virtaussuunta Y-tasolla, joka on välillä ja tarkkuutena 1,5 astetta Nopeus, joka on välillä 0 - (2³² - 1) ja nopeus mm/s
16 13 Täyttösuunta, joka määritellään arvoilla 0 5 Muokkaustyyppi, joka määritellään arvoilla 0-3 Kiinteälle vokselille ei ole määritelty erikoisominaisuuksia Vokselityyppi Vokselityyppissä kuvataan tyypin eri ominaisuuksia seuraavasti. Yleisominaisuudet (attributes), jotka ovat bittikenttiä vokselityypin ominaisuuksista Tiheys Kiehumispiste Sulamispiste Vokselien päivittäminen Vokselien tilan päivittämistä suoritetaan seuraavasti: Vokselilähetin lähettää joko lämpöä tai tietyn tyyppistä vokselia tietyillä tiedoilla (esim. nestettä tietyllä nopeudella tiettyyn suuntaan). Lämpöä lähetetään tietystä pisteestä säteilynä ympärille, joka imeytyy vokseleihin sekä välittää sitä naapurivokseleille. Tämä päivitys suoritetaan pidemmän ajan yhteydessä siihen pisteeseen asti, että lämpöä ei imeydy tai varastoidu mihinkään vokseliin, jolloin lähetin poistetaan päivitettävistä lähettimistä. Tämän vakiintumisen jälkeen tilanteeseen voi vaikuttaa toinen lähetinlähde, vokselien tyypin muuttuminen tai lähettimen poistaminen. Toteutus käy vokseliryhmän jokaisen vokselin lävitse lähettimen sijainnista aloittaen pallon laajentumisen tapaisesti leviämällä ympäristöön päivittämällä vokselien tietoja ja muuttamalla mahdollisesti vokselien olomuotoa. Jos lähetin synnyttää esim. nestettä, tallennetaan nesteen etupään vokseliryhmä, josta tutkitaan nesteen mahdollinen eteneminen vokseliryhmässään sekä naapuriryhmissä. Tällä tavoin saadaan pidettyä päivitykseen liittyvien ryhmien määrä pienempänä, kuin jos tutkittaisiin jokainen ryhmä, jossa on liikkeellä olevaa nestettä, joiden määrä saattaa kasvaa huomattavasti nesteen etenemisen jatkuessa. Nesteen etenemisen päivittämistä tutkitaan kuution sivuja vastaavien naapurivokselien tilatietoja hyödyntämällä. Päivityksen alussa tarkastetaan
17 14 nesteen etenemisen kärkipisteet sekä mahdollisten loppupisteiden muodostuminen lähettimen sammuttamisen jälkeen. Näiden pisteiden avulla nesteen etenemistä päivitetään nopeuden sekä nesteen korkeuden avulla naapurivokseleihin GPGPU-tekniikan sovellus vokseleilla Tietokone luo vokseleiden avulla virtuaalimaailman ja lisää sinne nesteiden alkulähteet. Näiden purojen etenemistä simuloidaan ja samalla mitataan näytönohjaimen suoriutuminen kyseisestä tehtävästä. Simuloinnissa toteutetaan ennakointia, kosketuksen tunnistusta sekä siihen reagointia aivan kuten peleissä pelihahmojen ja kohteiden väleillä Prosessoripohjainen sovellus vokseleilla GPGPU:n sovellus mukautettuna prosessorille. Näytönohjaimen ja prosessorin tuloksia vertaillaan sekä toteutukseen liittyviä eroavaisuuksia. Prosessorin etuna on, että datasiirtoja ei tarvitse tehdä eri muistien välillä ja käytettävän muistin määrä voi olla suuri mutta tämän työn aikana pyritään pitämään ohjelman muistimäärä 4 Gt:n tasolla Prosessori ja GPGPU-pohjainen sovellus vokseleilla Prosessorin sekä näytönohjaimen hyödyntäminen yhtä aikaa jaetuilla resursseilla, missä tiedon yhdessä pitävyys on tärkeää ja tiedon siirtonopeus merkittävässä osassa pelin piirtonopeuden takia. Toteutuksessa pyritään ennakoimaan tulevia tapahtumia sekä niiden mahdollisia vaikutuksia muihin vokseliryhmiin, jotta vokseliryhmien päivitykset tapahtuisivat samalla suorittajalla. 4.4 Piirrettyjen kuvien määrä sekunissa tarkastelu Simuloinnin tulee käyttää vähemmän aikaa kuin 33 ms (millisekunti), jotta muut mahdolliset pelin osa-alueet, kuten tekoälyn käsittely, voisivat realistisesti toteutua, lisätään 10 ms mittaustuloksiin. Näin myös nähdään, onko ohjelman suorittamassa koodissa tai käsiteltävässä tietomäärässä
18 15 ongelmia. 4.5 Säikeistys prosessorilla Käytettävien säikeiden määrä lasketaan seuraavasti: hyödynnettävät säikeet = prosessorin maksimi säiemäärä * Koska PC suorittaa samanaikaisesti muita ohjelmia, pitää nämä ottaa myös huomioon ja jättää näille taustaohjelmille resursseja hyödynnettäviksi. Pelien käynnissä ollessa ei yleensä ajeta raskaita ohjelmia, minkä vuoksi pelit voivat olettaa käyttävänsä paljon laitteiston tarjoamia resursseja ilman, että pelin suoriutuminen kärsisi muiden ohjelmien vuoksi. Yksi säie poistetaan sillä se vastaa pelimoottorin omaa säiettä. Suoritettavien säikeiden sovellus toteutetaan seuraavasti: Pääsäie, joka aktivoi itse pelin oman silmukan ja suorittaa moottorin funktioita, jotka olisivat kevyitä kuten näppäimistön lukemista ja sen tallentamista peliä varten. Pelisäie, joka suorittaa itse pelin koodin sekä piirtämisen Muut säikeet, jotka odottavat tehtävän antoja pelisäikeeltä Nämä säikeet käynnistetään suorittamaan silmukkaa, jonka sisällä ne suorittavat seuraavat toiminnot. 1. Tarkista, onko tietyn tyyppistä tehtävän suorittajaa olemassa. 2. Jos ei ole, säikeestä tulee kyseisten tehtävien suorittaja, ja pyrkii suorittamaan kyseisen suorittajan tehtäviä kunnes kyseisiä tehtäviä ei ole jäljellä. 3. Säie suorittaa yleisiä tehtävänantoja 4. Jos säie ei löydä yhtään suoritettavaa tehtävää, se suorittaa X määrän kokonaisluvun yhteenlaskuja ja aloittaa tehtävien haun alusta. 5. Jos säie oli suorittanut aktiivisen odottamisen kuvattuna 4. askeleessa, menee säie lepotilaan ennalta määrätyksi ajaksi. 6. Lepotilan loputtua aloitetaan tutkiminen alusta. Vaiheiden 1. ja 2. suoritukset ovat lukittuna mutex-lukoilla, jonka avulla
19 16 huolehditaan siitä, että säikeet eivät suorita samoja tehtäviä ja että tietyn tyyppisille tehtäville olisi ainoastaan yksi suorittaja (esim. kovalevyltä lataukset sekä muiden laitteistojen kanssa keskustelu). Toteutuksen tulee tukea tehtävien määrittelyä sen määräämillä tavoilla, jotta säikeytys toimisi. 4.6 Tehtävän määritelmä Tehtävä on määritelty seuraavasti: class Task { public: void* object; void* taskarguments; char tasktype; void (*taskexecute)(task*); void (*taskcallback)(task*); }; object-muuttuja sisältää mahdollisesti jonkin luokan olion osoittimen. Tämä voidaan muuttaa takaisin oikean tyyppiseksi olioksi suoritettavassa funktiossa. taskarguments-muuttuja sisältää osoittimen funktion argumentteihin, mikäli niitä hyödynnetään. tasktype-muuttuja kuvastaa suoritettavan tehtävän tyyppiä, jota hyödynnetään tehtävien lajitteluissa sopiville tyypeille. Vaihtoehtoina ovat TASK, EXTERNAL_TASK, DATA_TRANSFER_TASK, SHARED_TASK. TASK on normaali, prosessorilla suoritettava toiminto, EXTERNAL_TASK on toisella laitteella suoritettava toiminto kuten näytönohjaimella, DATA_TRANSFER_TASK tarkoittaa tiedonsiirtoa kovalevyltä, ja SHARED_TASK voidaan suorittaa joko prosessorilla tai toisella laitteella kuten näytönohjaimella. taskexecute-muuttuja on suoritettavan tehtävän funktio-osoitin, joka toimii tehtävän aloituspisteenä. taskcallback-muuttuja toimii vapaaehtoisena funktio-osoittimena, joka suoritetaan tehtävän suorituksen jälkeen, mikäli se on käytössä.
20 17 Kun ohjelman yksi osio on lisännyt tarpeeksi suoritettavia tehtäviä, kannattaa nämä suorittaa loppuun, ennen kuin siirrytään ohjelman seuraavaan vaiheeseen, jotta seuraavan vaiheen tiedon hyödyntämiset olisivat ajantasaiset. Tämän synkronoiminen voidaan suorittaa funktiolla nimeltä executetasks(), joka suorittaa kaikki listassa olevat tehtävät muiden säikeiden ohella. Funktio löytyy jokaisesta pelimoottorin ajettavien osien luokista. Pelimoottorin toteutus ei tällä hetkellä priorisoi tiedon siirron vaatimusta, ennen kuin kyseisten tietojen hyödyntävä tehtävä suoritetaan. Tämä kyllä voidaan toteuttaa tehtävän taskcallback-funktio-osoittimella.
21 18 5 Tulokset 5.1 Tiedonsiirtonopeudet Tulokset on kerätty Nvidian GeForce GTX 560 Ti-näytönohjaimella, jonka valmistajana on ASUSTeK Computer Inc. Ajurin versio on Nvidian ja OpenCL-versio on 1.1. Mittaustulokset on kerätty ASUS-valmistajan Nvidia 560 Ti-näytönohjaimella. Kirjoitusmittaustulokset (Tiedonsiirron kirjoitusnopeudet)
22 19 Tavumäärä (kt) Aika (μs) Hyötysuhde , , , , , ,5 240, ,25 119, ,625 61, ,312 31, ,656 17, ,828 7, ,414 5, ,207 3, ,103 2, ,051 1, ,525 1, ,762 1, ,381 1, ,19 1, ,095 1, ,047 1, ,023 1, ,011 1, ,005 1, ,002 1, Taulukko 1: Tiedonsiirron kirjoitusnopeudet
23 20 Mittaustietojen perusteella voidaan sanoa, että tiedonkirjoituksessa esiintyvä viive on vähintään n mikrosekuntia ja pienimmän kirjoituksen yhteydessä esiintyvä suurin tiedonkirjoitusmäärä n. 1.5 kilotavun luokkaa. Paras kirjoitussuhde tavoitetaan vasta 390 kilotavun siirron yhteydessä, minkä kirjoittamiseen menee n. 60 mikrosekuntia.
24 21 Lukumittaustulokset (Tiedonsiirron lukunopeudet) Tavumäärä (kt) Aika (μs) Hyötysuhde , , , , ,5 239, ,25 131, ,625 61, ,312 32, ,656 17, ,828 10, ,414 6, ,207 4, ,103 3, ,051 3, ,525 3, ,762 2, ,381 2, ,19 2, ,095 2, ,047 2, ,023 2, ,011 2, ,005 2, ,002 2, Taulukko 2: Tiedonsiirron lukunopeudet
25 22 Tiedon lukunopeudessa minimiviive lukemisessa näyttäisi olevan n. 2,75 mikrosekuntia, mikä taas tarkoittaa sitä, että kirjoittaminen on n. kaksi kertaa nopeampaa suorittaa kuin lukeminen minimi viiveen puolesta. Mutta paras lukusuhde vastaa parasta kirjoitussuhdetta eli 390 kilotavua luetaan n. 60 mikrosekunissa, joten tämä ei tulisi olemaan ongelmana.
26 23 6 Johtopäätökset 6.1 Tiedonsiirron ongelmat Kuten tiedonsiirtotaulukoista (Tiedonsiirron kirjoitusnopeudet; Tiedonsiirron lukunopeudet) näkee, on tiedonsiirto hidasta. Pelkästään 50 megatavun siirtäminen kestää 7 millisekuntia ja lukeminen 8 millisekuntia, mikä vaikeuttaa selvästi näytönohjaimen hyödyntämistä tehokkaasti prosessorin rinnalla. Vaikka saisikin pidettyä näytönohjaimen suorittamassa tehokkaasti koodia niin tiedon siirtäminen RAM:in ja VRAM:in välillä rajoittaa näytönohjaimen hyödyntämistä prosessorin rinnalla tehtävissä missä tiedon synkronointi on tärkeässä osassa pelin päivitysten kannalta. Täten tiedon siirtoa tulisi minimoida ja kokonaan välttää mikäli mahdollista. 6.2 GPGPU:n tehokkuus GPGPU-laskennan hyödyntämistä ei onnistuttu mittaamaan aiotulla toteutuksella. Tämä johtui toteutuksen jäädessä keskeneräiseksi ajan loppumisen sekä liian aikaisten optimointi yritysten vuoksi. 6.3 Yhteenveto Vaikka toteutuksen avulla tehdyt mittaukset jäivät välistä sekä näytteiden määrä jäädessä pieneksi, antaa alun tiedonsiirtonopeudet kuitenkin suuntaa antavan kuvan siitä, että minkälaisia toteutuksia tulisi hyödyntää näytönohjaimella. Suurien tietomäärien siirtely olisi haitallista pelille, mikä alkaisi näkyä pelin päivitysnopeudessa selkeästi. Pelkästään 100 Mt siirtely yhteen suuntaan laskisi näytettävien kuvien määrän alle 60 kuvaruutuun sekunnissa ottamatta huomioon muita päivityksessä tapahtuvia toimintoja. Näytönohjaimien hyödyntäminen peleissä todellakin kannattaa painottaa siten, että suoritettavat toiminnot käyttävät näytönohjaimella sijaitsevaa dataa, kuten piirtämiseen liittyvää dataa. Tulevaisuudessa GPGPU:n hyödyntämisen parantamista varten
27 laiteistonkehittäjät voisivat parantamaan tiedonsiirron nopeuksia prosessorin ja näytönohjaimen välillä. 24
28 7 Lähteet 25 CUDA. Nvidia Corporation. Viitattu McClanahan, C. History and Evolution of GPU Architecture. Georgia Tech College of Computing Viitattu OpenGL. The Khronos Group. Viitattu OpenCL. The Khronos Group. Viitattu OpenCL History. Wikipedia. Viitattu PhysX. Nvidia Corporation. Viitattu Standalone Hardware Stats Unity Technologies Viitattu Steam Hardware & Software Survey: Septemper Valve Corporation Viitattu Suvanto, S Peliteollisuus on jo miljardibisnestä Suomessa. Yle Uutiset Viitattu Voxel. Wikipedia. Viitattu
CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen
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
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Kuvailulehti. Korkotuki, kannattavuus. Päivämäärä 03.08.2015. Tekijä(t) Rautiainen, Joonas. Julkaisun laji Opinnäytetyö. Julkaisun kieli Suomi
Kuvailulehti Tekijä(t) Rautiainen, Joonas Työn nimi Korkotuetun vuokratalon kannattavuus Ammattilaisten mietteitä Julkaisun laji Opinnäytetyö Sivumäärä 52 Päivämäärä 03.08.2015 Julkaisun kieli Suomi Verkkojulkaisulupa
Julkaisun laji Opinnäytetyö. Sivumäärä 43
OPINNÄYTETYÖN KUVAILULEHTI Tekijä(t) SUKUNIMI, Etunimi ISOVIITA, Ilari LEHTONEN, Joni PELTOKANGAS, Johanna Työn nimi Julkaisun laji Opinnäytetyö Sivumäärä 43 Luottamuksellisuus ( ) saakka Päivämäärä 12.08.2010
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,
Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat
2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat 2D-piirto 2-ulotteisen grafiikan piirto perustuu yleensä valmiiden kuvien kopioimiseen näyttömuistiin (blitting)
Selainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu
Tietokoneen muisti nyt ja tulevaisuudessa Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Yleisesti Muisti on yksi keskeisimmistä tietokoneen komponenteista Random Access Memory on yleistynyt
IOS%PELIN!LUOMINEN!UNITY% PELIMOOTTORILLA!
IOS%PELINLUOMINENUNITY% PELIMOOTTORILLA TuomoStamblewski Opinnäytetyö Huhtikuu2014 Ohjelmistotekniikankoulutusohjelma Tekniikanjaliikenteenala KUVAILULEHTI* Tekijä(t) Stamblewski,Tuomo Julkaisunlaji Opinnäytetyö
8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
Laita tietokone testipenkkiin
KUINKA TIETOKONEESI PÄRJÄÄ UUSIMPIA MALLEJA VASTAAN? Suoritin Laita tietokone testipenkkiin 2D-grafiikka Passmark Performance Test tutkii tietokoneen suorituskykyä lukuisten testien avulla. Tämän jälkeen
Videon tallentaminen Virtual Mapista
Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeammin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta
Lomalista-sovelluksen määrittely
Thomas Gustafsson, Henrik Heikkilä Lomalista-sovelluksen määrittely Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikka Dokumentti 14.10.2013 Tiivistelmä Tekijä(t) Otsikko Sivumäärä Aika Thomas
JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++
JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.
Jouko Nielsen. Ubuntu Linux
Jouko Nielsen Ubuntu Linux 19.4.2017 SISÄLLYS 1 UBUNTU... 3 2 LUETTELO VERSIOISTA... 4 3 OMINAISUUDET... 4 4 ASENNUS... 5 5 UBUNTU SERVER... 9 LÄHTEET... 10 3 1 UBUNTU Ubuntu on debian pohjainen Linux
Useimmin kysytyt kysymykset
Useimmin kysytyt kysymykset Versio 1.1 1 1. Mikä mobiilikortti on? Mobiilikortti on matkapuhelimessa toimiva sovellus ja www.mobiilikortti.com osoitteessa oleva palvelu. Sovelluksen avulla voit siirtää
Ammatillinen opettajakorkeakoulu
- Ammatillinen opettajakorkeakoulu 2 JYVÄSKYLÄN KUVAILULEHTI AMMATTIKORKEAKOULU Päivämäärä 762007 Tekijä(t) Merja Hilpinen Julkaisun laji Kehittämishankeraportti Sivumäärä 65 Julkaisun kieli Suomi Luottamuksellisuus
Kontrollilaitteet. Arsenaali
Arsenaali Kontrollilaitteet Tietokonepeleissä käytettäviä kontrollilaitteita on valtava määrä Kaikilla alustoilla, joilla pelejä pelataan on jokin vakio kontrolleri PC: Hiiri ja näppäimistö Konsolit: Controller
Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti
Intel Threading Building Blocks
Intel Threading Building Blocks Markku Vajaranta Esko Pekkarinen TBB Pähkinänkuoressa C++ luokkamallinen rinnakkaisuus Abstrahoi rinnakkaisuutta korkean tason tehtävät (tasks) ja niiden skedulointi suuri
Käyttöjärjestelmät: prosessit
Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä
8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
LIITE. asiakirjaan. komission delegoitu asetus
EUROOPAN KOMISSIO Bryssel 12.10.2015 C(2015) 6823 final ANNEX 1 PART 6/11 LIITE asiakirjaan komission delegoitu asetus kaksikäyttötuotteiden vientiä, siirtoa, välitystä ja kauttakulkua koskevan yhteisön
DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys
DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys 1. Esittely... 2 2. Asennusohjeet... 2 3. Yleiskuva ohjelmistosta... 3 4. Tietojen siirtäminen D-Boxin avulla... 4 4.1. Piirturitiedostojen siirtäminen...
Tehtävä 2: Tietoliikenneprotokolla
Tehtävä 2: Tietoliikenneprotokolla Johdanto Tarkastellaan tilannetta, jossa tietokone A lähettää datapaketteja tietokoneelle tiedonsiirtovirheille alttiin kanavan kautta. Datapaketit ovat biteistä eli
MUSEOT KULTTUURIPALVELUINA
Elina Arola MUSEOT KULTTUURIPALVELUINA Tutkimuskohteena Mikkelin museot Opinnäytetyö Kulttuuripalvelujen koulutusohjelma Marraskuu 2005 KUVAILULEHTI Opinnäytetyön päivämäärä 25.11.2005 Tekijä(t) Elina
Grafiikkasuorittimen käyttö keskusmuistitietokannoissa
Grafiikkasuorittimen käyttö keskusmuistitietokannoissa Matti Nauha Helsinki 9.3.2012 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI
Videotoisto Nexus 7 tableteilla: Android 4.4 KitKat selvästi edellistä versiota heikompi
Videotoisto Nexus 7 tableteilla: Android 4.4 KitKat selvästi edellistä versiota heikompi - Android 4.3 Jelly Bean ja 4.4 Kitkat käyttöjärjestelmien videotoiston suorituskyvyn vertailu Nexus 7 tabletilla
C++11 seminaari, kevät Johannes Koskinen
C++11 seminaari, kevät 2012 Johannes Koskinen Sisältö Mikä onkaan ongelma? Standardidraftin luku 29: Atomiset tyypit Muistimalli Rinnakkaisuus On multicore systems, when a thread writes a value to memory,
Mobiilit luontorastit
Mobiilit luontorastit Kesto: Riippuu reitin pituudesta Kenelle: lukio Missä: ulkona Milloin: kevät ja syksy Tarvikkeet: älypuhelin / tablet -tietokone (muistiinpanovälineet) Eräpassin osio: Luonnossa liikkuminen
Algoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
MIEHET TAVARATALON ASIAKKAINA
MIEHETTAVARATALONASIAKKAINA AnttilaOy:nvalikoimankehittäminen HeliHeikkinen Opinnäytetyö Huhtikuu2011 Vaatetusalankoulutusohjelma Kulttuuriala OPINNÄYTETYÖN KUVAILULEHTI Julkaisunlaji Opinnäytetyö Päivämäärä
ICT4TN004-10 9.9.2013. Tehtävänanto
Tehtävänanto - Kerää kuormitustietoja munin -ohjelmalla - Kuormita konetta stress:llä - Käytä tunnilla käytyjä työkaluja arvioidaksesi kuormitusta: cpu, mem, io - Lopuksi analysoi munin keräämiä käyriä
Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh
Yleisen n toteutus ohjelmoitavalla näytönohjaimella Mirko Myllykoski mirko.myllykoski@jyu.fi 15.2.2011 Mitä teen? Tarkoituksena toteuttaa (ja osin jo toteutettukin) stä versio ohjelmoitavalle näytönohjaimelle
!!!!!!!!!!!!!! PIKAOPAS!RAHAN!TEKEMISEEN!!! Opas!verkkokaupan!markkinoinnin!tuloksekkaa< seen!suunnitteluun!ja!toteutukseen!!! Antti!Sirviö!
PIKAOPASRAHANTEKEMISEEN Opasverkkokaupanmarkkinoinnintuloksekkaa< seensuunnitteluunjatoteutukseen AnttiSirviö JussiKämäräinen Opinnäytetyö Joulukuu2013 Yritystoiminnankehittämisenkoulutusohjelma Liiketalous
Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla
Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,
Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b
Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska
AS-0.3200 Automaatio- ja systeemitekniikan projektityöt
AS-0.3200 Automaatio- ja systeemitekniikan projektityöt A11-03 USB-käyttöinen syvyysanturi 5op 13.9.2011-29.11.2011 Johan Backlund Ohjaaja: Johan Grönholm Johdanto Projektin tavoitteena oli suunnitella
TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?
Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää
FOTONETTI BOOK CREATOR
F O T O N E T T I O Y FOTONETTI BOOK CREATOR 6 2012 Kemintie 6 95420 Tornio puhelin: 050-555 6500 pro/kirja: 050-555 6580 www.fotonetti.fi Ohjelman asentaminen 1 Hae ohjelma koneellesi osoitteesta http://www.fotonetti.fi/kuvakirjatilaa
Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.
BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET. Pekka Ollikainen Open Source Microsoft CodePlex bio Verkkosivustovastaava Suomen Sarjakuvaseura
3 9-VUOTIAIDEN LASTEN SUORIUTUMINEN BOSTONIN NIMENTÄTESTISTÄ
Puhe ja kieli, 27:4, 141 147 (2007) 3 9-VUOTIAIDEN LASTEN SUORIUTUMINEN BOSTONIN NIMENTÄTESTISTÄ Soile Loukusa, Oulun yliopisto, suomen kielen, informaatiotutkimuksen ja logopedian laitos & University
Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.
Yhden piirilevyn tietokone Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja sen toiminnoista. Sisällys Raspberry Pi Yleistä... 2 Teknistä... 2 Käyttöjärjestelmät... 4 Pelaaminen
SUURI. Windows 8.1 -kirja. Reima Flyktman
SUURI Windows 8.1 -kirja Reima Flyktman Readme.fi Korkeavuorenkatu 37 00130 HELSINKI A Bonnier Group Company Asiakaspalvelu: palvelu@readme.fi Lue lisää Readme.fi-kirjoista www.readme.fi Kansi: Marko Tapani
Rinnakkaistietokoneet luento S
Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa
Salasanan vaihto uuteen / How to change password
Salasanan vaihto uuteen / How to change password Sisällys Salasanakäytäntö / Password policy... 2 Salasanan vaihto verkkosivulla / Change password on website... 3 Salasanan vaihto matkapuhelimella / Change
Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä
OLAP-kuution teko Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta Esimerkin kuvaus ja OLAP-määritelmä Tavoitteena on luoda OLAP-kuutio Northwind-tietokannan tilaustiedoista
KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka
KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka Kristopher Vuorela UBUNTUN ASENNUS JA ALKEET 206101312 Linux järjestelmät Lukukausi: Kevät 2015 Työ valmistui: 15.04.2015
Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus
JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus Versio: 28.2.2013 Julkaistu: 28.2.2013 Voimassaoloaika: toistaiseksi Sisällys 1 Yleiset vaatimukset... 2 2 Latauspalvelun
OHJELMISTOKEHITYS -suuntautumisvaihtoehto
OHJELMISTOKEHITYS -suuntautumisvaihtoehto Suuntautumisvaihtoehdon esittely 1. vuoden opiskelijoille Kari Laitinen www.oamk.fi/~karil/opetus.html Ohjelmistokehitys -opintosuunnan valitsevista henkilöistä
Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio
1 Loppuraportti Virtuaali-Frami, CAVE-ohjelmisto Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu Versio 1.0 15.1.2006 2 Sisällys Tiivistelmä... 3 1 Johdanto... 4 1.1 Dokumentin tarkoitus...
T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010
12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
Zeon PDF Driver Trial
Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin
Kuvaruudun striimaus tai nauhoitus. Open Broadcaster Software V.20. Tero Keso, Atso Arat, Niina Järvinen & Valtteri Virtanen (muokattu 20.2.
Kuvaruudun striimaus tai nauhoitus Open Broadcaster Software V.20 Tero Keso, Atso Arat, Niina Järvinen & Valtteri Virtanen (muokattu 20.2.2019) Sivu 1 / 14 Sisällysluettelo Mikä on OBS... 2 Ohjelman perusasetukset...
Mobiilit luontorastit
Mobiilit luontorastit Kesto: Riippuu reitin pituudesta Kenelle: yläkoulu Missä: ulkona Milloin: kevät ja syksy Tarvikkeet: älypuhelin / tablettitietokone (muistiinpanovälineet) Eräpassin osio: Luonnossa
Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft.
Windows Phone 7.5 erilainen ja fiksu älypuhelin Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft.com Agenda 29.11.2011 Microsoftin strategia pähkinän kuoressa Kuluttajat
Efficiency change over time
Efficiency change over time Heikki Tikanmäki Optimointiopin seminaari 14.11.2007 Contents Introduction (11.1) Window analysis (11.2) Example, application, analysis Malmquist index (11.3) Dealing with panel
CT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa
CT50A2602 Käyttöjärjestelmät Seminaarityö Tietokoneen muisti nyt ja tulevaisuudessa Jyrki Eurén Raimo Asikainen Janne Laitinen Teppo Lapinkoski Manu Toivanen Pasi Ruuth Johdanto Taustaa Työn taustana ryhmän
Peliohjelmointi: Kontrollilaitteet. Teppo Soininen
Peliohjelmointi: Kontrollilaitteet Teppo Soininen Lähteet: Core Techniques and Algorithms in Game Programming, MSDN, www.xbox.com, www.playstation.com Arsenaali Tietokonepeleissä käytettäviä kontrollilaitteita
Kuvaruudun striimaus tai nauhoitus. Open Broadcaster Software V.20. Tero Keso, Atso Arat & Niina Järvinen (muokattu )
Kuvaruudun striimaus tai nauhoitus Open Broadcaster Software V.20 Tero Keso, Atso Arat & Niina Järvinen (muokattu 28.11.2017) OBS 1 (12) Sisällysluettelo Mikä on OBS... 2 Ohjelman perusasetukset... 2 Tarvittavat
TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO
TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO JOUNI HUOTARI 2005-2010 OLAP-OHJETEKSTIT KOPIOITU MICROSOFTIN OHJATUN OLAP-KUUTION TEKO-OHJEESTA ESIMERKIN KUVAUS JA OLAP-MÄÄRITELMÄ
Vaatimusmäärittely Ohjelma-ajanvälitys komponentti
Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit
Differentiaali- ja integraalilaskenta
Differentiaali- ja integraalilaskenta Opiskelijan nimi: DIFFERENTIAALILASKENTA 1. Raja-arvon käsite, derivaatta raja-arvona 1.1 Raja-arvo pisteessä 1.2 Derivaatan määritelmä 1.3 Derivaatta raja-arvona
Digikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle
TEEMA 1 Tietokoneen peruskäyttö Digikamera Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle Tämä tietopaketti hahmottaa lukijalle, millä tavalla kuvat voidaan siirtää kamerakännykästä tai
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka
Ulkoiset mediakortit Käyttöopas
Ulkoiset mediakortit Käyttöopas Copyright 2010 Hewlett-Packard Development Company, L.P. Java on Sun Microsystems, Inc:n tavaramerkki Yhdysvalloissa. SD-logo on omistajansa tavaramerkki. Tuotetta koskeva
LAITTEISTOKOKOONPANON SELVITTÄMINEN JA AJURIEN ASENTAMINEN
LAITTEISTOKOKOONPANON SELVITTÄMINEN JA AJURIEN ASENTAMINEN Oma tietokone -valintaa klikkaamalla hiiren oikeanpuoleisella näppäimellä, saadaan näkyviin laitteistokokoonpano Ominaisuudet laitteisto -valinnalla:
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
Toiminnanohjausjärjestelmien hyödyntäminen Suomessa 2013
Toiminnanohjausjärjestelmien hyödyntäminen Suomessa 2013 Loppukäyttäjätutkimus, alle 500 henkilön organisaatiot Osa 1/3: Pilvipalvelujen hyödyntäminen toiminnanohjausjärjestelmissä Leena Mäntysaari, Mika
Linuxissa uusi elämä 1
17.06.19 Linuxissa uusi elämä 1 Linux on hyvä vaihtoehto Windowsille Uusiin tai vanhempiin tietokoneisiin Miksi käyttäisin Linuxia Tekniikan Maailman Linux vinkki Siirtyisinkö Linuxiin? 17.06.19 Linuxissa
RINNAKKAINEN OHJELMOINTI A,
RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen
Apuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo
TIEKE Verkottaja Service Tools for electronic data interchange utilizers Heikki Laaksamo TIEKE Finnish Information Society Development Centre (TIEKE Tietoyhteiskunnan kehittämiskeskus ry) TIEKE is a neutral,
Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen
Helsingin Yliopisto, tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi (syksy 2006) Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen a. Käyttötarkoitus ja sovellusalue
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna
Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä
Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat
Tietokonearkkitehtuuri 2 TKT-3201 (5 op)
Tietokonearkkitehtuuri 2 (5 op) syksyllä 2012 periodit I & II (viikot 35-41 & 43-49) luennot tiistaisin klo 14-16 (periodi I: sali S4, periodi II: sali TB109) Kurssin tavoite Käydään läpi tietokoneen toimintaa
Pikaopas Bookeen Cybook Muse -lukulaitteet
Pikaopas Bookeen Cybook Muse -lukulaitteet Onnittelut lukulaitteen uudelle omistajalle E-kirjojen siirto lukulaitteelle WiFi-yhteyden yli Kädessäsi on varta vasten e-kirjojen lukemiseen suunniteltu laite,
812336A C++ -kielen perusteet, 21.8.2010
812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys
T Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mediatekniikan laitos / Informaatioverkostot
Selainohjelmointi Edistynyt verkkosivujen (JavaScript) kehitys T-111.1100 Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) DI Mari Markku HirviLaine Mediatekniikan laitos
Differentiaalilaskennan tehtäviä
Differentiaalilaskennan tehtäviä DIFFERENTIAALILASKENTA 1. Raja-arvon käsite, derivaatta raja-arvona 1.1 Raja-arvo pisteessä 1.2 Derivaatan määritelmä 1.3 Derivaatta raja-arvona 2. Derivoimiskaavat 2.1
Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)
Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä Prosessoriväylä Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master) Suuremmissa erillisiä väyliä Muistiväylä Oheislaiteväylät
Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.
Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan
TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?
Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Pistelaskurin saamiseksi tarvitaan kaksi osaa: Laskuri, joka laskee pisteitä Olio, joka näyttää pisteet ruudulla Laskuri voi olla esimerkiksi tyyppiä
LAS-TIEDOSTON SISÄLTÖ LIITE 2/1
LAS-TIEDOSTON SISÄLTÖ LIITE 2/1 LAS-TIEDOSTON SISÄLTÖ Las-tiedoston version 1.4 mukainen runko koostuu neljästä eri lohkosta, ja jokaiseen lohkoon voidaan tallentaa vain standardissa sovittua tietoa ja
PELIANALYYSIT JA VIDEOKOOSTEET
Kilpa- ja huippu-urheilun tutkimuskeskus KIHU Jyväskylä PELIANALYYSIT JA VIDEOKOOSTEET Mikko Häyrinen Joukkueurheilun kehittäjä www.kihu.fi Pelianalyysin historiaa Ensimmäiset käsin tehtävät analyysit
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen
Käyttöjärjestelmien historia Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen Käyttöjärjestelmien jaottelu Voidaan jaotella erilaisin menetelmin Aikajana (määrä,
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Maha Eurosystem jarrulaskentaohjelman asennusohje versio 7.20.026
2012 Tecalemit Oy Seppo Koskivuori Maha Eurosystem jarrulaskentaohjelman asennusohje versio 7.20.026 Vaatimukset: - tietokone (PC), jossa vapaa USB portti - käyttöjärjestelmä Windows XP, Vista tai Windows
XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.
XNA grafiikka laajennus opas Paavo Räisänen www.ohjelmoimaan.net Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei