Skip to main content

Computer systems

2023/2024
Programme:
Computer Science and Mathematics, Second Cycle
Year:
1 in 2 year
Semester:
second
Kind:
optional
ECTS:
6
Language:
slovenian
Course director:

Branko Šter

Hours per week – 2. semester:
Lectures
3
Seminar
0
Tutorial
2
Lab
0
Prerequisites

Knowing basics of computer systems architecture, at least basic programming skills.

Content (Syllabus outline)
  1. Shared memory multiprocessors

  2. Multicores (architectures UMA and NUMA, cache coherence, hardware multithreading, atomic instructions).

  3. Differences between architectures Intel,ARM,RISC
  4. Vector units in modern processors
  5. Accelerator Architectures

  6. GPU architectures. Schedulers on HW level, working with memory, latency hiding, data transfer between GPU. Nvidia, AMD, Intel, EUPAC. Tensor cores.

  7. Unified memory
  8. FPGA accelerators.
  9. Distributed memory systems

  10. cluster architectures

  11. supercomputers
  12. unified global memory
  13. interconnection networks (switching fabric, virtual channels, Infiniband, Ethernet)
  14. scalable systems
  15. latency issues (of memory accesses and interprocessor communication), precommunication, block data transfer, multithreading
  16. cluster cooling methods, energy consumption of processors and cooling system
  17. Evaluation of parallel systems
  18. Architectural issues in designing power-aware computing systems

  19. high-performance systems

  20. embedded systems
Readings
  1. D. Culler, J.P. Singh, A. G. Tanenbaum: Parallel Computer Architecture: A Hardware-Software Approach Morgan Kaufmann Publishers, 1999.
  2. J.L. Hennessy, D.A. Patterson: Computer Architecture: A Quantitative Approach, 6th ed., Morgan Kaufmann, 2017.
  3. V. Eijkhout, E. Chow, R. van de Geijn: The Science of Computing, The Art of High Performance Computing, volume 1. 3rd edition 2022, https://theartofhpc.com
  4. T.M. Aamodt, W.W.L. Fung, T.G. Rogers: General-Purpose Graphics Processor Architectures (Synthesis Lectures on Computer Architecture), ‎Morgan & Claypool Publishers, 2018.
  5. T. Sterling, M. Brodowicz, M. Anderson: High Performance Computing: Modern Systems and Practices, Morgan Kaufmann, 2017.
  6. D.A. Patterson, J.L. Hennessy: Computer Organization and Design RISC-V Edition: The Hardware Software Interface,2nd ed., Morgan Kaufmann, 2020.
Objectives and competences

The course aims to present to graduate students modern parallel high performance computer systems.

Competences: Developing skills in critical, analytical and synthetic thinking.
The ability to define, understand and solve creative professional challenges in computer and information science.
The ability of professional communication in the native and in a foreign language.
The ability to apply acquired knowledge in independent work for solving technical and scientific problems in computer and information science; the ability to upgrade acquired knowledge.
Basic skills in computer and information science.
Practical knowledge and skills necessary for successful professional work in computer and information science.
The ability to independently perform engineering and organisational tasks in certain narrow areas and independently solve specific well-defined tasks in computer and information science.

Intended learning outcomes

Knowledge and understanding:
Knowledge of the principles of advanced state-of-the-art computer architectures.
Understanding of implications of different ways of using hardware parallelism (processors, interconnection networks and accelerators). Architectural design issues in parallel computers.
Application:
Programming high performance computer systems on various fields of science and engineering. Analyzing and solving architectural design problems.
Reflection:
Understanding theoretical methods for solving practical problems, and their limitations.
Understanding trends in parallel computer architectures. How can high performance systems be used in practice to solve complex problems.
Transferable skills:
Students will be able to combine the knowledge from other courses that cover computer architecture and organization, programming, parallel and distributed systems. The course will require students to acquire skills in literature search, search and application of existing parallel software, and engineering skills for solving real-life complex problems.

Learning and teaching methods

Lectures, calculation exercises, laboratory exercises, homeworks.

Assessment

Midterm work: laboratory exercises, homeworks.
Final exam: written exam.
Final exam:theoretical exam.
grading: 5 (fail), 6-10 (pass) (according to the Statute of UL)

Lecturer's references
  1. Branko Šter: Selective recurrent neural network. Neural processing letters, 38(1): 1-15, 2013.
  2. Dominik Olszewski, Branko Šter: Asymmetric clustering using the alpha–beta divergence. Pattern Recognition, 47(5): 2031-2041, 2013.
  3. Rok Gaber, Tina Lebar, Andreja Majerle, Branko Šter, Andrej Dobnikar, Mojca Benčina, Roman Jerala: Designable DNA-binding domains enable construction of logic circuits in mammalian cells. Nature Chemical Biology, 10(3): 203-208, 2014.
  4. Jernej Zupanc, Damjana Drobne, Branko Šter: Markov random field model for segmenting large populations of lipid vesicles from micrographs. Journal of liposome research, 21(4): 315-323, 2011.
  5. Tom Vodopivec, Spyridon Samothrakis, Branko Šter: On Monte Carlo tree search and reinforcement learning. The journal of artificial intelligence research. Sep. 2017, vol. 60, str. 881-936.