LIACS >Kristian Rietveld >Courses >Computerarchitectuur, Najaar 2017
headerimg

Banner image shows Intel Core i7-5960X die. Source.

Practicum

Opdracht 1 Assembly languages
(0.3 van het practicumcijfer, toetsdatum: 9 oktober)
De omschrijving is hier te downloaden en de bijbehorende materialen vind je hier materialen-opdr1.tar.gz. Een aantal opgaven zijn uitgewerkt.

Toetsing: schriftelijk op maandag 9 oktober tijdens het werkcollege. Zalen: Snellius B01, Snellius 174 Voorbeeldtoets: klik hier [uitwerking]


Opdracht 2 ISA emulation
(0.4 van het practicumcijfer, deadline: 17 november)
De omschrijving is hier te downloaden. Belangrijk voor deze opdracht zijn ook de de voorbeeldprogramma's (update 23 oktober: kleine aanpassing aan brainfuck.c/.bin) en de source code van het startpunt voor de emulator.

Extra's:

  • Voorbeelden voor het schrijven van micro-programma's voor load/store instructies
  • Patch-bestand waarmee de code wordt verbeterd zodat ook hexadecimale waarden worden geaccepteerd om registers te initialiseren in config-bestanden en op de command-line. Tevens zorgt deze patch ervoor dat het programma een niet-nul exit code geeft wanneer een test faalt. hex-reginit.diff (update 23 oktober 2017). Plaats dit bestand in dezelfde directory als main.cc en voer het commando patch -p1 < hex-reginit.diff uit.


Opdracht 3 Exploiting Computer Architecture Characteristics
(0.3 van het practicumcijfer, deadline: 21 december 15 december)
De omschrijving is hier te downloaden. Het startpunt MET CUDA: fotowinkel.tar.gz, het oude startpunt ZONDER CUDA: fotowinkel-old.tar.gz. Een diff van het startpunt zonder CUDA naar nieuwe startpunt met CUDA: fotowinkel-cuda.diff.
Extra documenten: Gebruik van perf en SIMD instructies. GPU's programmeren met CUDA (update 12 december: enige verduidelijkingen over het gebruik van nvprof). Op afstand werken met CUDA en GPU's.

Testdata: test512.png, test2048.png, test4096.png.

Nog een aantal opmerkingen:

  • Vermeld in het verslag altijd het type van de CPU en GPU waarmee de experimenten zijn gedaan.
  • Bij het werken met laptops: sluit bij voorkeur aan op netspanning voor de hoogste performance en hopelijk iets mindere fluctuatie van meetresultaten door wisselende klokfrequentie.
  • Voor het uitvoeren van de metingen met een multi-core code, vervang CLOCK_PROCESS_CPUTIME_ID in timing.h met CLOCK_REALTIME. De eerste telt de CPU time van alle gebruikte cores bijelkaar op (dus geeft vermoedelijk niet het resultaat dat je zoekt), de tweede kijkt naar "real-time" maar is wellicht wat minder accuraat.