Opis

Tehnologija izdelovanja polprevodnikov je trčila ob fizikalne omejitve, ki trenutno preprečujejo večjo miniaturizacijo čipov in z njo izdelovanje varčnejših in hitrejših procesorjev. V zadnjem času nas zato mediji dnevno zasipavajo z novicami o novih in novih napravah z večjedrnimi procesorji ter splošno namenskimi grafičnimi procesnimi enotami na eni strani in najrazličnejšimi računalniškimi gručami ter storitvami v oblaku na drugi strani.

Da pa bi vse te naprave znali popolnoma izkoristiti, je potrebno poznati ustroj teh sistemov in njihove programske vmesnike. V okviru predmeta se bomo spoznali z večnitnim programiranjem večjedrnih procesorjev, s programiranjem splošno namenskih grafičnih procesnih enot in s programiranjem porazdeljenih sistemov. Večinoma bomo delali s programskim jezikom go, nekaj malega pa tudi v programskim jeziku C. Delali bomo na računalniški gruči Arnes, ki jo boste lahko tekom šolskega leta uporabljali tudi za reševanje nalog pri drugih predmetih.

Na izbranih primerih bomo spoznali pasti vzporednih in porazdeljenih sistemov, jih poskušali razumeti in zaobiti. Z znanji, ki jih boste pridobili pri predmetu, boste za izbrane aplikacije sposobni sami izbrati najprimernejšo strojno opremo in napisali dobre in učinkovite programe.

Description

The semiconductor technology has reached physical limitations that prevent greater miniaturization of chips and, with it, more energy-efficient and more powerful processors. Current research focuses on devices with multi-core processors and general-purpose graphics processing units on one side and a wide variety of computer clusters and cloud services on the other.

To take full advantage of these devices, it is necessary to know the architecture of these systems and appropriate software interfaces. During the semester, you will learn how to make multithreaded programs for multicore processors, exploit general-purpose graphics processing units, and program distributed systems. You will mostly work with the Go programming language but also a little in the C programming language. We will work on the Arnes computer cluster, which you can use during the school year to solve tasks in other subjects as well.

We will learn about the traps of parallel and distributed systems, try to understand them and find ways to avoid them. At the end of the course, you will be able to select the most appropriate hardware platform and write a parallel program for a problem at hand.