Programming of high-performance computing systems is an important tool in various fields of science and engineering. However, the effective use of powerful computing systems largely depends on understanding their architecture. In this course, we will consider the architectures of modern high-performance computer systems. We will study different types of computing parallelism (processors, interconnection networks and accelerators) and discuss architectural aspects of the development of parallel (parallel) computers and try to understand modern trends in parallel architectures. The course is complementary to the course High-performance computing - it deals with the same topic, but from the point of view of computer architecture. We will also learn about high-level synthesis (HLS) for implementation in FPGA circuits. Such tools automatically synthesize a circuit from a high-level description of a function in the C language. Knowledge of HDL languages ​​for hardware description is desirable, but not necessary. Automatic synthesis enables simpler implementation of circuits, and at the same time provides the designer with various optimization options, e.g. pipeline, loop unrolling, array partitioning different interfaces, etc.