Parallellprogrammering med hjälp av MPI

Storlek: px
Starta visningen från sidan:

Download "Parallellprogrammering med hjälp av MPI"

Transkript

1 Parallellprogrammering med hjälp av MPI Anders Gustafsson Institutionen för informationsbehandling Åbo Akademi, FIN Åbo, Finland e-post: URL: Abstrakt Denna text utreder grunderna i parallellprogrammering och orsakerna till att parallellprogrammering i vissa situationer är nödvändig. I texten genomgås bakgrunden till Message Passing Interface (MPI) och de funktioner som en programmerare kan behöva. Dessutom genomgås källkoden i några exempel och visas hur denna källkod kompileras i praktiken. I texten genomgås också några exempel på datormiljöer där MPI används. I texten gås inte igenom installation eller konfigurering av någon MPI implementation. Klassificering ACM-klass: D.1.3 Concurrent Programming ACM SIG: SIGSIM Kort om multiprocessorsystem En vanlig fråga som man ofta stöter på då man diskuterar om parallellprogrammering är "Till vad behövs parallellism då vi redan har så kraftiga processorer." Men sanningen är att det existerar ett stort antal problem som kräver parallellism för att lösas inom en rimlig tid. Detta beror på att den mängd data och det antal beräkningar som behövs är så stora. Ta som exempel det klassiska problemet med att göra en väderleksrapport. En väderleksrapport görs genom att det aktuella området delas upp i ett nät av ett lämpligt antal kuber och beräkningar görs i nätets varje nod. Vi vill göra en två-dygns väderprognos av det europeiska vädret. Området är ca 10 miljoner kvadratkilometer stort och den övre höjden är 20 km. Då behövs det: 1, km 2 20km 10 3 kuber per km 3 = noder. Det behövs ca. 100 beräkningar per nod, d.v.s beräkningar. Beräkningarna ska göras en gång i timmen under 48 timmars tid: beräkningar 48 timmar = 9, totala beräkningar. Om vår datamaskin skulle kunna utföra 10 9 beräkningar per sekund så skulle det ta över 11 dygn att beräkna två-dygns prognosen. Om maskinen däremot klarar av beräkningar per sekund blir vi klara efter ca. ett dygn. [1] De vanligaste användningsområdena för parallella datamaskiner är olika typer av simuleringar och numerisk modellering som t.ex. simuleringar av väder, molekyler, atomer, design av bilar och flygplan m.m. Det som eftersträvas av parallella maskiner är att n maskiner utför samma uppgift n gånger snabbare än en data maskin, men detta går aldrig att uppnå i praktiken eftersom en del av maskinens kapacitet går åt att dela upp problemet i mindre bitar.

2 Det existerar ett antal olika typer av parallella datamaskiner som t.ex. Delade minnes system (Shared memory systems), Meddelande överförings system (MÖS) (Message-passing multicomputers) och Distribuerade delade minnes system (DDMS) (Distributed shared memory systems). Men i denna text kommer vi att koncentrera oss på meddelande överförings system En delad minnes system maskin är en konventionell datamaskin med flera processorer av vilka alla processorer kan accessera allt minne gemensamt. En övre gräns för antalet processorer i den här typens maskin med PChårdvara ligger kring 8. En meddelande överförings datamaskin består av ett antal skilda datorer, med antingen en eller flera processorer, kopplade ihop med varandra genom ett datanät. En maskin av den här typen är mycket nära besläktad med ett datorkluster, skillnaden mellan dessa är egentligen bara avståndet mellan noderna och typen av nätverket. Distribuerade delade minnes system liknar mycket meddelande överförings maskiner, den största skillnaden är att DDMS har en delad minnesrymd. Minne Minne En datamaskin Nätverk (SAN) Processor Vanlig datamaskin med en processor. Processorer En multiprocessordatamaskin. Nätverk (LAN) Processor Nätverk (LAN) Processor En datamaskin Delad minnes rymd Minne Meddelande överförnings datamaskin Delat minnes multiprosessor datamaskin Figur 1. Fyra olika datamaskin typer. [7]

3 Datamaskiner kan också klassificeras enligt Flynn:s (1966) klassificerings system. Här kan maskinerna delas in i singel instruktions - flöde singel data flöde (SISD)(single instruction stream - single data stream) och multipel instruktions flöde - multipel data flöde (MIMD) (multiple instruction - stream multiple data stream). Till SISD klassen hör datamaskiner med en processor och till MIMD klassen både MÖS och DDMS. MIMD klassen kan ännu delas i multipel program multipel data (MPMD) och singel program multipel data (SPMD) system. I MPMD system kör herren och slaven olika program, medan i SPMD kör båda två samma program. Det går att programmera både MPMD och SPMD med MPI, men denna text koncentrerar sig på SPMD typen [7]. Superdatamaskiner, klusters och grids I Finland finns de kraftigaste datamaskinerna hos CSC - Tieteellinen laskenta Oy i Esbo. Deras snabbaste datamaskin, en IBM eserver Cluster 1600 som ligger på 91 platsen bland med de 500 snabbaste datamaskinerna i värden, kan bl.a. programmeras med MPI.[9][10] Trenden inom superdatorvärden i dag ligger i att bygga klusters d.v.s länka vanliga persondatorer ihop till multiprocessormaskiner. Dessa maskiner brukar ofta använda Linux som operativsystem eftersom det är mycket passligt för klusterbruk. Klusters kan man nuförtiden finna på de flesta universitet t.ex vid Åbo Akademi existerar det flera stycken. Det sker också forskning kring s.k. Grids (gitter) och grid computing. Grids är egentligen klusters som kopplats ihop via internet. Dessa grids kan täcka en stad, ett land eller hela jorden. Flera europeiska länder experimenterar med grids, bl.a. Finland. Finland är dessutom med i NorduGrid som är ett grid som täcker de nordiska länderna. Nätverk För att kunna överföra data mellan olika noder i klustret behövs ett effektivt datanätverk. Det existerar ett antal olika alternativ som t.ex. Gigabit Ethernet, Myrinet, HiPPI, FDDI och Fiber Channel. Vid valet av nätverk måste bl.a. följande aspekter beaktas: effektivitet, egenskaper och kostnad. Det existerar en rad olika nätverkstopologier. Nätverken kan antingen vara linjära räckor (bus), ringformade, nätformade, torusformade, fullständigt kopplat, hyperkuber m.m. Den effektivaste topologin är beroende av problemets karaktär, men vissa topologier går att inbädda i andra topologier. En räcka kan tillexempel inbäddas i en ring och denna kan i sin tur inbäddas i en torus. Räcka Ring Fullständigt kopplat nät

4 Binärt träd Stjärna Hyperkub 2-D nät 2-D torus Systolisk räcka Figur 2. Exempel på nät-topologier. [6] Det existerar olika sätt att mäta nätverkets effektivitet t.ex med bandbredd (bandwidth), nätverkets latens (network latency) och kommunikationslatens (communication latency). Bandbredden kan definieras som det maximala antalet bitar som kan överföras per tidsenthet t.ex 100 Mbps (100 miljoner bitar per sekund). Med nätverkets latens avses den tid det tar för meddelandet att passera genom det fysiska datanätet oberoende av trafikmängden. Kommunikationslatens är den totala tiden det tar att överföra ett meddelande från en nod till en annan. Med räknas tiden för att passera mjukvara, nätkablar, routning och övrig trafik på nätet. [6] Vad är MPI Message Passing Interface (MPI) är ett bibliotek som innehåller underprogram för kommunikation mellan olika noder i den parallella maskinen. MPI ger ett enkelt gränssnitt för att skicka meddelanden mellan olika noder utan att programmeraren behöver bry sig om datanätets egenskaper, topologi etc. Dessa gränssnittsfunktioner kan anropas från C, C++ eller Fortran. Program som utnyttjar MPI rutiner måste länkas med MPI bibliotek och köras i en MPI omgivning. Det som skiljer MPI från andra motsvarande system är dess portabilitet. Ett program skriven på en vanlig person dator (PC) kan utan att modifieras kompileras och köras på en superdator. Då kan en programmerare sitta vid en vanlig arbetsstation och programmera och testa programmet. När programmet är färdigt kan det köras på en maskin med tillräckliga resurser. Detta sparar både pengar och datorresurser. Dessutom har MPI gett en möjlighet att av billig PC-hårdvara bygga datorkluster som kan konkurrera med de stora datortillverkarnas superdatorer. Till exempel kan redan existerande datorklassers räknekapacitet användas nattetid till beräkningar. Litet historia De första parallella maskinerna tillverkades på mitten av 1960-talet i skuggan av kalla kriget. Initiativet togs av Atomic Energy Comission som önskade att datortillverkare skulle

5 utveckla en ny maskintyp med hög beräkningskapacitet och lågt pris. Till slutet av 1960-talet hade ett antal företag konstruerat parallella datamaskiner vars prestanda var enorm jämfört med den tidens maskiner. I början av 1980-talet experimenterade forskare vid California Institute of Technology (Caltech) med hyperkub multiprocessor maskiner och skrev också den första mjukvaran till dessa maskiner. Därmed var den första MÖS född. Många av dagens MÖS baserar sig direkt på det arbete som gjordes på Caltech och många andra har blivit påverkade av deras arbete. [2] Ett stort problem var att det saknades standarder, vilket ledde till att program skrivna för en maskin fungerade bara på den maskinen. Det försvårade programmerarnas arbete eftersom de måste programmera vid den maskin som ska köra programmet. [2] År 1992 samlades en grupp på ca 60 människor från 40 olika organisationer och kallade sig själva för The Message Passing Interface Forum (MPIF). Denna grupp bestod av bl.a. representanter för datortillverkare, universitet och forskningslaboratorier. Deras uppgift blev att utarbeta ett portabelt standardiserat gränssnitt för att skriva program för MÖS. I november 1993 var MPI-1-standarden klar och efter några korrigeringar publicerades MPI1.1. Den nyaste standarden är 2.0. [3] Det existerar flera implementationer av MPI, både kommersiella och gratis versioner. En av dessa gratis implementationer av MPI är MPICH ( Exempelprogrammet i denna text är kompilerad med denna kompilator. Grundläggande kommunikation MPI innehåller ett stort antal funktioner för olika typer av kommunikation. Dessa funktioner kan delas upp i två huvudkategorier blockerande (blocking) och icke blockerande (nonblocking). Blockerande kommunikation innebär att programmet väntar tills kommunikationen skett och icke-blockerande innebär att programmet fortsätter att exekvera medan kommunikationen pågår. Dessutom kan ett meddelande vara buffrat, vilket betyder att en kopia av meddelandet sparas i minne ifall mottagaren inte genast kan ta emot meddelandet. Då kan sändaren fortsätta att exekvera och mottagaren kan ta emot meddelandet då den har tid. Förutom kommunikation mellan två parter innehåller MPI också kollektiv kommunikation d.v.s. metoder för sända meddelanden till en grupp/ alla processer. Man kan nu fråga sig ifall det är någon skillnad vilken typ av kommunikation man väljer, men sanningen är att det är mycket viktigt ur prestandasynvinkel. Om man t.ex. använder blockerande kommunikation så kan ingen data gå förlorad men programmets effektivitet kan försämras avsevärt. Detta är möjligt ifall olika processer har olika tunga beräkningar att utföra. De flesta MPI metoder tar en kommunikator som parameter. Denna kommunikator definierar en grupp av processer. Det finns en global kommunikator som innehåller alla processer, nämligen MPI_COMM_WORLD.

6 MPI Primtitve Blockerande Ickeblockerande Standard Send MPI_Send MPI_Isend Synchroniserad Send MPI_Ssend MPI_Issend Buffrad Send MPI_Bsend MPI_Ibsend Färdig Send MPI_Rsend MPI_Irsend Receive MPI_Recv MPI_Irecv Slutförds prov MPI_Wait MPI_Test Tabell 1 Olika Send / Receive operationer i MPI. [6] Den vanligaste metoden som används för att sända ett meddelande är den blockerande send metoden: int MPI_Send( void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm ) där buf Adressen till sänd buffern count Antalet element i buffern datatype MPI datatypen för elementen dest Mottagarens adress, som är ekvivalent med rang (rank) värdet (ett heltal) tag En lapp m.h.a. en mottagare kan ignorera vissa meddelanden (ett heltal) comm Kommunikatorn (ofta MPI_COMM_WORLD) Det heltal som MPI_Send returnerar indikerar ifall operationen lyckades eller inte, om operationen misslyckades innehåller talet information om vad som gick fel. För att ta emot meddelanden kan t.ex en blockerand MPI_Recv användas: int MPI_Recv( void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status ) buf Adressen till mottagnings buffern count Antalet element i buffern (ett heltal) datatype MPI datatypen för elementen source sändarens adress, som är ekvivalent med rank värdet (ett heltal) tag En lapp m.h.a. en mottagare kan ignorera vissa meddelanden (ett heltal) comm Kommunikatorn (ofta MPI_COMM_WORLD) status Status objekt Heltalet som returneras fungerar på samma sätt som vid MPI_Send. [8] Kollektiv kommunikation I många fall är det önskvärt att en process skulle kunna sända data till ett större antal eller alla processer detta kallas för kollektiv kommunikation. Figur 3 visar idén bakom olika typer av kollektiv kommunikation. MPI ger möjlighet till en mycket flexibel kollektiv kommunikation och tabell 2 innehåller olika MPI metoder som kan utnyttjas.

7 X X X X X X X X X X Broadcast Multicast abcdef d abcdef d a b c e f a b c e f Scatter Gather Reduce Figur 3 Olika typer av kollektiv kommunikation. (fritt efter föreläsnings folierna i Parallel Programming 2002 Mats Aspnäs) Typ Metod Funktionalitet MPI_Bcast En till alla, identiska meddelanden MPI_Gather Alla till en, personaliserade meddelanden MPI_Gatherv Generalisering av MPI_Gather MPI_Allgather Generalisering av MPI_Gather Dataflyttning MPI_Allgatherv Generalisering av MPI_Allgather MPI_Scatter En till alla, personaliserade meddelanden MPI_Scatterv Generalisering av MPI_Scatter MPI_Alltoall Alla till Alla, personaliserade meddelanden MPI_Alltoallv Generalisering av MPI_Alltoall MPI_Reduce Alla till en reducering Aggregation MPI_Allreduce Generalisering av MPI_Reduce MPI_Reduce_scatter Generalisering av MPI_Reduce MPI_Scan Alla till alla parallell prefixoperation

8 Typ Metod Funktionalitet Synkronisering MPI_Barrier Barriär synkronisering Tabell 2 Metoder för kollektiv kommunikation i MPI. [6] MPI_Barrier är en metod som också räknas med till den kollektiva kommunikationen. Vid anrop av metoden blockerar processen och blir att vänta tills alla andra processer som tillhör kommunikatorn som angivits också nått anropet. Sedan fortsätter exekveringen normalt. MPI_Barrier kan användas till att synkronisera ett antal processer.[1] Det är vissa detaljer som måste beaktas vid kollektiv kommunikation. Alla processer tillhörande den aktuella kommunikatorn måste delta, d.v.s utföra anropet. Resultatet av att alla inte deltar i kommunikationen är odefinierad vilket betyder att vad som helst kan hända. Både värdet på variabeln count och datatypen måste vara samma hos alla processer vid kollektiv kommunikation. Då MPI_Bcast används kommer sändaren att skicka meddelandet till alla processer inkluderat sig själv d.v.s sändaren måste också ta emot meddelandet. Ett enkelt programexempel I detta kapitel presenteras ett komplett MPI program, skrivet i C, som genomgås rad för rad. Ett komplett fungerande MPI program kan skrivas med enbart sex MPI metoder. Programmet exekverar på två maskiner, herre (master) och slav (slave). Herren skickar två tal till slaven som adderar dessa två och därefter skickar resultatet tillbaka till herren. Programmet kompileras med kommandot mpicc -o simple simple.c och körs med kommandot mpirun -np 2 simple. Vid kompileringen tar mpicc emot vissa parametrar medan de övriga angivna parametrarna skickas vidare till c kompilatorn. Detta innebär att alla parametrar som c kompilatorn stöder kan användas t.ex parametrar för optimering (-O3). Då programmet startas för exekvering används shellskriptet mpirun. Detta skript är till för att gömma den process som krävs för att starta ett parallellt program. Skriptet tar som parameter bl.a antalet processorer (-np 2) som skall användas vid körningen, i detta fall alltså två.[8] Processorerna väljes ut i tur och ordning om inget annat specificeras. Vill man själv bestämma exakt på vilka maskiner och processorer programmet ska exekvera på kanman utnyttja -machine parametern i mpirun. Denna parameter anger en fil som innehåller namnen på de maskiner och antal processorer per maskin som ska användas. 1 #include <stdio.h> 2 #include "mpi.h" 3 4 int main(int argc, char* argv[]) { 5 int x, y, z, np, me; 6 int tag = 42; 7 8 MPI_Status status; 9 MPI_Init(&argc, &argv); 10 MPI_Comm_size(MPI_COMM_WORLD, &np); 11 MPI_Comm_rank(MPI_COMM_WORLD, &me); if (np!= 2) { 15 if (me == 0) {

9 16 printf("you have to use exactly 2 processors to run this program\n"); 17 } 18 MPI_Finalize(); 19 exit(0); 20 } if (me == 0) { 23 int length, source_id ; 24 x=6,y=7; printf("\n This is a simple MPI test program\n"); 27 printf("starting to send data..."); MPI_Send (&x, 1, MPI_INT, 1, tag, MPI_COMM_WORLD); 30 MPI_Send (&y, 1, MPI_INT, 1, tag, MPI_COMM_WORLD); MPI_Recv (&z, 1, MPI_INT, 1, tag, MPI_COMM_WORLD, &status); 33 printf("ok\n"); printf("\nwe sent a %d and a %d to be added and the resault we recieved was: %d\n", x, y,z); } 38 else { /* me == 1 */ MPI_Recv (&x, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &status); 41 MPI_Recv (&y, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &status); 42 z=x+y; 43 MPI_Send (&z, 1, MPI_INT, 0, tag, MPI_COMM_WORLD); } MPI_Finalize(); 49 return 0; 50 } På rad 2 inkluderas header-filen för MPI nämligen mpi.h. Rad 8-11: MPI_Init initialiserar MPI omgivningen och tar bl.a. hand om eventuella parametrar till programmet ifall användaren har gett några. Detta anrop måste vara det första MPI anropet som görs, Dessutom får det göras endast en gång. Metoden MPI_Comm_size returnerar antalet noder som deltar. MPI_Rank returnerar den rank som processen har fått d.v.s rot noden har ranken 0 och de övriga noderna har värden upp till np-1. Båda metoderna tar två parametrar nämligen en kommunikator och en adress för ett heltal dit resultatet lagras. Rad 14-15: Ifall antalet processorer inte är två, så kan inte programmet fortsätta eftersom det är designat för att köras på två processorer. Ett sådant problem kan uppstå ifall np parametern har vid starten haft något annat värde än två. Den andra if-satsen har att göra med I/O vilket behandlas senare i texten. Rad 18 och 48: MPI_Finalize anropas då programmet ska avsluta. Efter detta anrop får inga andra MPI anrop mera göras inte ens MPI_Init. Rad 22: If-satsen på denna rad testar ifall den aktuella processen är roten (herren) d.v.s me=0. Den kod som ligger inom den aktuella if-satsen kommer endast att exekveras av roten. Detta är den ena grundprincipen med MPI d.v.s att samma program körs på alla noder men olika noder exekverar olika delar av programmet. Kodblocket efter else satsen på rad 38 exekveras på de övriga processorerna (slavarna), i detta fall på den andra processorn. Rad 29-30: Här anropas en blockerande MPI_Send för att skicka data till den andra

10 processen. Process 0, som är den som sender kommer att stanna vid denna rad ända tills mottagar processen har mottagit meddelandet. Rad 32-37: Efter att herren har sent datat så blir den och vänta på resultat från slaven m.h.a. MPI_Recv. När resultatet anlänt så fortsätter programmet med utskrift av resultatet. Rad 38: Det kodblock som kommer efter else satsen exekveras alltså på process 1 dvs. slaven. Först mottar slaven det data som herren skickar på rad 29 och 30. Efter det utförs en beräkning på rad 42 och sedan skickas resultatet till herren (rad 43) som sköter om utskriften. Rad exekveras åter på både herren och slaven. På dessa rader avslutas programmet. [4][8] Datatyper i MPI I programkod exemplet ovan användes en intern MPI datatyp nämligen MPI_INT. Orsaken till att MPI har egna datatyper är att de dator klustret inte behöver vara homogent, tvärtom, klustret kan bestå av datorer av helt olika typ med olika processorer, ordlängder etc. MPI innehåller ett antal olika färdigt definierade datatyper och dessutom kan egna datatyper göras. MPI_BYTE MPI_CHAR MPI_DOUBLE MPI_FLOAT MPI_INT MPI_LONG MPI_LONG_DOUBLE MPI_PACKED MPI_SHORT MPI_UNSIGNED_CHAR MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_UNSIGNED_SHORT Tabell 3 Färdigt definierade datatyper i MPI. Ur prestandasynvinkel lönar det sig att i stället för flera meddelanden sända ett större meddelande med en större mängd data. Ur algortimens synvinkel är detta inte alltid möjligt men MPI innehåller tre olika sätt på vilket data kan grupperas ihop. Dessa är parametern count, härledda datatyper och MPI_Pack/MPI_Unpack. Det som måste observeras är att en C struktur (struct) inte kan skickas med MPI metoder. Count parametern är lättast att använda men men den kan endast datatyper av samma slag skickas. Denna parameter använd främst då man vill skicka räckor.[1] I/O med MPI Då man programmerar sekvensiella program är det sällan några problem med I/O, dvs. i det här fallet kommunikation med användaren. Men då det handlar om ett och samma program som exekverar på ett antal olika maskiner är det inte självklart vad som händer vid t.ex utskrift till skärmen. Vissa system stöder kommunikation till och från alla processer medan andra gör det inte. Det säkraste sättet att kommunicera med användaren är att göra det via process 0 och sedan sända data till och från andra processer med send och recv. Felsökning Då man implementerar en algoritm för att lösa ett problem är det lättare att först skriva en

11 linjär (serial) version av programmet och sedan ändra om den till en parallell version. Då undviker man att man har buggar i både algoritmen och koden för uppdelning och kommunikation. Denna teknik fungerar inte för alla problem men den kan anses vara en bra tumregel. De vanligaste felet som hittas i program skrivna med MPI är baklåsning (deadlock) som beror på att alla send inte har en matchande recv. Ett annat vanligt misstag är att en process sänder meddelande till fel process, och den riktiga mottagaren blir och vänta i all oändlighet. [1] En viktig detalj som man måste minnas är att MPI program kan bete sig ickedeterministiskt. Det finns inga garantier för hur länge det tar för ett meddelande att nå fram och om denna aspekt inte beaktas kan programmets resultat vara felaktigt. Skillnader mellan olika mjukvaru/hårdvaru system kan också leda till problem. Ett program som fungerat korrekt på en plattform kan krascha på en annan plattform. [1] MPE Tillsammans med MPI går det att använda MPE (Multi-Processing Environment) som är ett tillägsbibliotek. Detta bibliotek innehåller bl.a. Parallell X grafik Loggning Sekventiell exekvering av kodavsnitt Felhantering Den mest använda delen av MPE är X grafiken som går att t.ex använda till grafiska simuleringar. Det går mycket lätt att öppna ett fönster och rita och skriva text in i det. Dessutom stöds en viss interaktivitet med användaren via musen. Det går bl.a. att lyssna på mus drag och klickar. Men något mera avancerat som knappar och menyer stöds inte. Till skillnad från textbaserad I/O i MPI är MPE grafiken helt parallell.[12] MPI-2 Innehållet i denna text har behandlat version 1 av MPI d.v.s. MPI-1. År 1997 introducerade MPI-forumet en ny standard MPI-2 där de största nyheterna är dynamiska processer och ensidig kommunikation. Speciellt dynamiska processer är mycket användbara eftersom det ökar möjligheterna för att balansera belastningen (load balancing) på noderna. Detta kan göras genom att öka och minska antalet processorer under körningen. Detta bidrar också till bättre feltolerans (fault tolerance) d.v.s. processen som exekverar på en nod som strejkar kan flyttas över till en ny fungerande nod. [6] Källförteckning [1] Pacheco Peter S: Parallel programming with MPI, Morgan Kaufman Publishers,Inc, 1997 [2] Wilson Gregory V: Practical parallel programming, The MIT Press, 1995 [3] A High-Performance, Portable Implementation of the MPI Message Passing Interface Standard ftp://ftp.mcs.anl.gov/pub/mpi/mpich/papers/mpicharticle.ps

12 [4] MPI: A Message-Passing Interface Standard [5] MPI-2: Extensions to the Message-Passing Interface [6] K. Hwang, Z. Xu: Scalable Parallel Computing, WCB/McGraw-Hill, 1998 [7] B. Wilkinson, M. Allen: Parallel Programming: Techniques and Applications Using Networked Workststions and Parallel Computers, Prentice-Hall Inc, 1999 [8] MPICH manual sidor, [9] [10] [11] W. Gropp, E. Karrels, E. Lusk: MPE Graphics--Scalable X11 Graphics in MPI, [12] W. Gropp, E. Lusk, N. Doss A. Skjellum: A High-Performance, Portable Implementation of the MPI Message Passing Interface Standard,

Strategier för att utnytja parallella system. Peter Kjellström NSC Upplysning 2010-04-27

Strategier för att utnytja parallella system. Peter Kjellström NSC Upplysning 2010-04-27 Strategier för att utnytja parallella system Peter Kjellström NSC Upplysning 2010-04-27 Problemet Människor tänker normalt i seriella banor 2-24 cores i en vanlig desktop/server Det finns massor med seriell

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02 UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap Grafproblem Laboration 4, Datastrukturer och Algoritmer VT02 Laboration 4 - grafproblem Förpackningsdatum: Denna lab-spec är senast ändrad:

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Synkronisering. Föreläsning 8

Synkronisering. Föreläsning 8 Synkronisering Föreläsning 8 Synkronisering Så stort, intrikat och viktigt att det finns hela kurser om det i parallellprogrammering. Vi fuskar lite med några av de viktigaste bitarna! Synkronisering Vad

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

19. Skriva ut statistik

19. Skriva ut statistik 19. Skiva ut statistik version 2006-05-10 19.1 19. Skriva ut statistik Den här dokumentationen beskriver hur man skriver ut statistik från SPFs medlemsregister via Internet. Observera att bilderna är exempel

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

HI1025 Operativsystem, KTH Haninge, VT2012

HI1025 Operativsystem, KTH Haninge, VT2012 Del 2 av kursen: Systemprogrammering. Tillfälle 5 (F): Introduktion till programmering med parallella processer: fork(), wait(), exit(), getpid(), getppid(), execl(), execvp(). 1. Parallella processer

Läs mer

Datorsystem Laboration 2: Minnesmappade bussar

Datorsystem Laboration 2: Minnesmappade bussar Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion..................................

Läs mer

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Introduktion till integrering av Schenkers e-tjänster. Version 2.0 Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen

Läs mer

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass Övningstillfälle 4 Klasser och objekt (s. 221 ff.) Syfte 1: En naturlig fortsättning på koncepten abstraktion och inkapsling! Funktion (återanvändning av skyddad, säker och testad kod) Modul (återanvändning

Läs mer

Sätt att skriva ut binärträd

Sätt att skriva ut binärträd Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer

Läs mer

1 Funktioner och procedurell abstraktion

1 Funktioner och procedurell abstraktion 1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Anders Heyden Matematikcentrum Lunds Universitet Matematisk Modellering p.1/37 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren 2016-12-05 Sammanfattning I följande rapport introduceras de tillägg som planeras genomföras i kommande C++ 17

Läs mer

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999. Brädspelet Mulan Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker Göteborg 1999 June 8, 2001 1 Innehåll: 1. Inledning 2. Projektbeskrivning 3. Programflöde

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Laboration 2: Ett kommunikationssystem

Laboration 2: Ett kommunikationssystem Laboration 2: Ett kommunikationssystem 1 Syfte Att arbeta ännu mer med OO-design och programmering, framför allt programmering mot gränssnitt. Undantag och felhantering. Parallellism 2 Uppgift Ni skall

Läs mer

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration 1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012 1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Institutionen för datavetenskap 2014/15

Institutionen för datavetenskap 2014/15 LUNDS TEKNISKA HÖGSKOLA Datorer och datoranvändning Institutionen för datavetenskap 2014/15 ME en dator 1 Inledning ME är en påhittad dator, men den har likheter med riktiga datorer: det finns ett maskinspråk

Läs mer

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum: Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer

Läs mer

HF0010. Introduktionskurs i datateknik 1,5 hp

HF0010. Introduktionskurs i datateknik 1,5 hp HF0010 Introduktionskurs i datateknik 1,5 hp Välkommna - till KTH, Haninge, Datateknik, kursen och till första steget mot att bli programmerare! Er lärare och kursansvarig: Nicklas Brandefelt, bfelt@kth.se

Läs mer

Tentamen i Realtidsprogrammering

Tentamen i Realtidsprogrammering Tentamen i Realtidsprogrammering Ordinarie Tentamen Datum: 2011-05-14 Tid: 08:15 11:15 Ansvarig lärare: Telefon: 301438 Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 5 uppgifter.

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

e-sense move dali Manual

e-sense move dali Manual e-sense move dali Manual Innehåll Moves grundläggande funktionssätt...4 5 Programmera RF-signalen...6 7 Ta bort RF-signalen...8 Förinställda scenarion...9 Alternativ för mottagande av RF-signaler...10

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Lärare: pl@cdt.luth.se A 3113 Tomas Klockar klockar@sm.luth.se A 3019 Mats Folke folke@sm.luth.se A 3019 Labhandledare: Natasja Saburova Fredrik Jonsson Lars Persson

Läs mer

IP routinghierarkier. Robert Löfman Institutionen för informationsbehandling Åbo Akademi, FIN 20500 Åbo, Finland e post: robert.lofman@abo.nospam.

IP routinghierarkier. Robert Löfman Institutionen för informationsbehandling Åbo Akademi, FIN 20500 Åbo, Finland e post: robert.lofman@abo.nospam. IP routinghierarkier Robert Löfman Institutionen för informationsbehandling Åbo Akademi, FIN 20500 Åbo, Finland e post: robert.lofman@abo.nospam.fi Abstrakt Denna text berättar främst om hur Internets

Läs mer

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro Lite om Swedbanks Teknik Test Varför TruClient En ny teknik kräver ett nytt tänk

Läs mer

5 Grundläggande in- och utmatning

5 Grundläggande in- och utmatning 5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta

Läs mer

FileCentral Desktop. Användarhandledning Version 1.0 2010-11-05

FileCentral Desktop. Användarhandledning Version 1.0 2010-11-05 FileCentral Desktop Användarhandledning Version 1.0 2010-11-05 Inf of lex Connect AB Sankt Eriksgatan 58 SE-112 34 Stockholm Sweden Tel: 08-555 768 60 Fax 08-555 768 61 inf o@inf of lexconnect.se www.inf

Läs mer

Systemkonstruktion SERIEKOMMUNIKATION

Systemkonstruktion SERIEKOMMUNIKATION Systemkonstruktion SERIEKOMMUNIKATION Laborationsansvariga: Anders Arvidsson Utskriftsdatum: 2005-04-26 Syfte Laborationen syftar till att ge studenten tillfälle att närmare bekanta sig med RS-232-protokollet,

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Föreläsning 2: Avlusning och antilustekniker

Föreläsning 2: Avlusning och antilustekniker 2D1458, Problemlösning och programmering under press Föreläsning 2: Avlusning och antilustekniker Datum: 2007-09-11 Skribent(er): Emil Hesslow, Stefan Pettersson Föreläsare: Per Austrin Föreläsningen handlade

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2005-06-09.kl.08-13 Uppgift 1 ( Betyg 3 uppgift ) Ett plustecken kan se ut på många sätt. En variant är den som ses nedan. Skriv ett program som låter användaren mata in storleken på plusset enligt exemplen

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDI02 Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Verifikation, Validering och Testning XP Extreme Programming Vad är ett fel? I engelskan

Läs mer

Proaktivt forum för Elmätare. Från elmätare till energiserviceenhet, din ingång till smarta nät, en branschrekommendation

Proaktivt forum för Elmätare. Från elmätare till energiserviceenhet, din ingång till smarta nät, en branschrekommendation Proaktivt forum för Elmätare Från elmätare till energiserviceenhet, din ingång till smarta nät, en branschrekommendation Utges av Svensk Energi Swedenergy AB 1 Inledning Proaktivt forum är ett samarbete

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal

Läs mer

Agenda. Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna

Agenda. Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna Agenda Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna Projektupptakt I kursen ingår PRO1, enskild programmeringsuppgift En större programmeringsuppgift som ni löser

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch Digitalt lärande och programmering i klassrummet Introduktionsworkshop - Bygg ett akvarium i Scratch Introduktion Scratch är en programmeringsomgivning utvecklad av forskare på Massachusetts Institute

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010 Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Wkassa Handledning för administratörer

Wkassa Handledning för administratörer Wkassa Handledning för administratörer 1 Inledning...1 2 Arbetssätt...1 3 Administration...2 3.1 Avslut...2 3.2 Generera om filer...2 3.3 Avstämning...2 4 Systemunderhåll...3 4.1 Fasta uppgiter...3 4.1.1

Läs mer

LW053 Sweex Wireless LAN USB 2.0 Adapter 54 Mbps

LW053 Sweex Wireless LAN USB 2.0 Adapter 54 Mbps Svensk version LW053 Sweex Wireless LAN USB 2.0 Adapter 54 Mbps Inledning Först och främst tackar vi till ditt köp av denna Sweex Wireless LAN USB 2.0 Adapter 54 Mbps. Med denna Wireless LAN Adapter kan

Läs mer

Webbstudieplatsen Moodle

Webbstudieplatsen Moodle Webbstudieplatsen Moodle Manual för studenter http://moodle.hv.hik.se Humanvetenskapliga institutionen, Högskolan i Kalmar Peter Diedrichs, peter.diedrichs@hik.se Version 1.2, 8 juni 2007 Förslag och synpunkter

Läs mer

Allt om datalogging och datakommunikation!

Allt om datalogging och datakommunikation! PLC8D:1 Allt om datalogging och datakommunikation! Data Logging Data Logging, HMI Tools File Transfer Elementär datakommunikation Elementär datakommunikation, E-Designer och Ethernet PLC8D:2 Data Logging

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Beskrivning av hur du ansluter en E-terminal från Beijer Electronics till HC900 via Ethernet så att denna kan visa och manipulera data i HC900.

Beskrivning av hur du ansluter en E-terminal från Beijer Electronics till HC900 via Ethernet så att denna kan visa och manipulera data i HC900. Noterat i labbet om: Anslut en Beijer Electronics E-terminal till HC900 via Ethernet NIL00019 2002/09/03 Vad är Noterat i labbet om? Noterat i labbet om är en samling dokument som skall ses som hjälpmedel

Läs mer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

Teknikprogrammet, inriktning informations- och medieteknik

Teknikprogrammet, inriktning informations- och medieteknik Teknikprogrammet, inriktning informations- och medieteknik Varför välja oss? Kursplan Presentation av våra datatekniska kurser Eftersom företag mycket sällan anställer gymnasieelever (de vill att ni ska

Läs mer

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för ANVÄNDARMANUAL handdatorer i ängs- och betesmarksinventeringen för Ändringshantering Ansvarig för dokumentet: Maria Hall Diemer Datum Ändring Ansvarig 2010-05-11 Dokumentet skapades (version 1.0.0) Edward

Läs mer

Operativsystem. Informationsteknologi sommarkurs 5p, 2004. Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Operativsystem. Informationsteknologi sommarkurs 5p, 2004. Agenda. Slideset 7. Exempel på operativsystem. Operativsystem Informationsteknologi sommarkurs 5p, 2004 Mattias Wiggberg Dept. of Information Technology Box 337 SE751 05 Uppsala +46 18471 31 76 Collaboration Jakob Carlström Slideset 7 Agenda Exempel på operativsystem

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Handbok för nätverk. För säker och korrekt användning, läs igenom säkerhetsinformationen i "Handbok för kopiator" innan du använder maskinen.

Handbok för nätverk. För säker och korrekt användning, läs igenom säkerhetsinformationen i Handbok för kopiator innan du använder maskinen. Handbok för nätverk För säker och korrekt användning, läs igenom säkerhetsinformationen i "Handbok för kopiator" innan du använder maskinen. Inledning Den här handboken innehåller instruktioner om maskinens

Läs mer

Kundportal. Kundportal - Användarhandledning

Kundportal. Kundportal - Användarhandledning Kundportal Kundportal - Användarhandledning Version 1.0 Status Preliminär Datum 2014-12-07 Innehållsförteckning Innehållsförteckning... 2 Välkommen... 3 Support - Time Care Support Team... 3 Begränsat

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Instruktioner för dig som ska söka till Mattekollo 2016

Instruktioner för dig som ska söka till Mattekollo 2016 Instruktioner för dig som ska söka till Mattekollo 2016 Matematik är KUL men Mattekollo 2016 har tyvärr ett begränsat antal platser, nämligen 40 stycken. Det blir även ett roligare kollo om de som kommer

Läs mer

Tentamen i Introduktion till programmering

Tentamen i Introduktion till programmering Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Rahim Rahmani (rahim@dsv.su.se) Division of ACT Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Tentamensdatum: 2013-03-21 Tentamen består av totalt

Läs mer

Nät med flera länkar. Vägval. Enklaste formen av kommunikation:

Nät med flera länkar. Vägval. Enklaste formen av kommunikation: Nät med flera länkar väljarstrukturer Vägval vägvalsalgoritmer Dijkstra Bellman-Ford-Fulkerson ) UHOlVQLQJ 2002-10-11 Gunnar Karlsson, Bengt Sahlin 1 )UnQOlQNWLOOQlW Enklaste formen av kommunikation: kommunikation

Läs mer

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Innehållsförteckning. Exempel. Åtkomst & användarhandledning Framsidan Framsidan på din labrapport kan du utforma ganska fritt. Tänk bara på att den ska vara läsbar, och innehålla (minst) följande information: Ditt namn Din e-mail adress här på CS! Kursens namn

Läs mer

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013

Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013 1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Bildslinga Användarguide

Bildslinga Användarguide Bildslinga Användarguide Bildslingan låter dig exponera dina objekt i helskärmsläge, exempelvis för skyltfönstret. Text och bild hämtas från de objekt som du för tillfället annonserar på Internet. Du måste

Läs mer

Trådar. Aktiva objekt

Trådar. Aktiva objekt Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.

Läs mer

Senaste version kan hämtas från Internet i PDF 1 format Http://www.e.kth.se/~e92_sli/exjobb/projektplan/projektplan.pdf

Senaste version kan hämtas från Internet i PDF 1 format Http://www.e.kth.se/~e92_sli/exjobb/projektplan/projektplan.pdf SPECIFIKATION 1(11) Projektplan Distribution Detta dokument är ej under kontrollerad distribution. Innehavaren ansvarar själv för att den senaste utgåvan av detta dokument används och att inaktuella kopior

Läs mer

DATORER OCH PROGRAM. Datorn är en symbolmaskin

DATORER OCH PROGRAM. Datorn är en symbolmaskin DATORER OCH PROGRAM Datorn är en symbolmaskin men kan ha såväl symboliska som fysiska gränssnitt till omvärlden Program beteendeplan och beteendegenerator Programmerade maskiner Generalitet och portabilitet

Läs mer

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT TIDAA Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Optimering. Optimering av transportproblem. Linköpings universitet SL. Campusveckan VT2013

Optimering. Optimering av transportproblem. Linköpings universitet SL. Campusveckan VT2013 Optimering Optimering av transportproblem Campusveckan VT2013 Linköpings universitet SL 1 Optimering - Distributionsproblem Företaget Kulprodukter AB producerar sina kulor vid fyra olika fabriksanläggningar

Läs mer

DATORER OCH PROGRAM. Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin

DATORER OCH PROGRAM. Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin DATORER OCH PROGRAM Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin men kan ha såväl symboliska som fysiska gränssnitt till omvärlden

Läs mer

Åtkomst och användarhandledning

Åtkomst och användarhandledning Innehållsförteckning Problemspecifikation...1 Åtkomst och användarhandledning...2 Systembeskrivning...3 Lösningens begränsningar...5 Problem och reflektioner...6 Testkörning...7 Bilagor......Källkod...

Läs mer

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Programmering grundkurs och Programmering C 1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Planering av egen cup - Steg 4: Under cupdagarna

Planering av egen cup - Steg 4: Under cupdagarna Planering av egen cup - Steg 4: Under cupdagarna Innehållsförteckning: 1 FÖRBEREDELSER INFÖR TURNERINGSSTART... 2 1.1 HUR SKA RESULTATREGISTRERING SKE?... 2 1.2 SKA RULLANDE RESULTATSKÄRMAR ANVÄNDAS?...

Läs mer

QlikView - Lathund för Flödesmodellen bas

QlikView - Lathund för Flödesmodellen bas QlikView - Lathund för Flödesmodellen bas För att komma åt en applikation i QlikView (hädanefter QV) krävs QV-pluginlicens samt behörighet till applikationen. Beställning av både licens och behörighet

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Testning. 1. Inledning

Testning. 1. Inledning Testning 1. Inledning I all ingenjörsmässig verksamhet är testning en vedertagen metod för att fastställa om en hypotes, konstruktion eller produkt är korrekt och fungerar som avsett. Datorprogram är ofta

Läs mer

Allmänt om Modbus. Modbus

Allmänt om Modbus. Modbus Modbus Modbus är ett populärt och fritt publicerat, royaltyfritt kommunikationsprotokoll för seriekopplingar med master/slave. Modbus-specifikationen styr meddelandens struktur och hantering, medan den

Läs mer

============================================================================

============================================================================ Begränsat/avdelat nätverk Postad av Marcus - 31 jul 2015 17:26 Hejsan! Har en ADLS anslutning och kombinerat modem/router idag, men vill ha en anslutning på en av Ethernet portarna som har tillgång till

Läs mer

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för ANVÄNDARMANUAL handdatorer i ängs- och betesmarksinventeringen för Ändringshantering Ansvarig för dokumentet: Maria Hall Diemer Datum Ändring Ansvarig 2010-05-11 Dokumentet skapades (version 1.0.0) Edward

Läs mer

CAN ett kommunikationsprotokoll för realtidssystem MOP 12/13 1

CAN ett kommunikationsprotokoll för realtidssystem MOP 12/13 1 CAN ett kommunikationsprotokoll för realtidssystem 1 Seriekomunikation- Datanät- Topologi Buss Ring Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Nod Stjärna Masknät 2 Seriekomunikation-

Läs mer

VHDL och laborationer i digitalteknik

VHDL och laborationer i digitalteknik V:1.1 VHDL och laborationer i digitalteknik Vid laborationskursen i digitalteknik används VHDL till alla laborationerna utom den första. VHDL är ett stort språk och enbart en liten del av språket behövs

Läs mer

Projektrapport EDA095

Projektrapport EDA095 Projektrapport EDA095 Grupp 8 Fredrik Stål, dt08fs5@student.lth.se Per-Gustaf Stenberg, dt08ps5@student.lth.se Mattias Frisk, dt08mf3@student.lth.se Joakim Hembrink, dt08jh8@student.lth.se 16 maj 2012

Läs mer

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 18 mars svar Datorteknik, EIT070 Lunds Universitet LTH Tentamen den 18 mars 2015 - svar Datorteknik, EIT070 Skrivtid: 14.00-19.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30

Läs mer