Multicore Semantics and Programming
- Exercises for the first part of the
course. Deadline noon December 5.
- Exercises for the second part. Deadline noon 17 January 2017
- Practical report for the second part. Deadline noon 17 January 2017
First part: Exercises
The written coursework comprises a series of questions on the memory
models of multiprocessors and programming languages
Second part: Problem sheet
The written coursework comprises a series of questions on the design of mutual exclusion locks and shared-memory data structures. Pseudo-code can be used when writing algorithms, and a sequentially-consistent memory model can be assumed. For questions about performance, it is sufficient to describe how an algorithm is likely to interact with a classical MESI cache in a machine with multiple cores and/or multiple sockets.
Second part: Practical report
The report is required to describe the experiments carried out to a sufficient level of detail to enable someone else to repeat them. The report should include information about the hardware and software used (such as the operating system and compilers). The report should also describe the experimental techniques that were used, such as how the timed portions experiments were run, how variability between runs was examined, and how you confirmed that results are showing stable behavior rather than “warm up” effects. In addition, the report should describe any control made over the placement of threads within the machine (e.g., whether threads were placed on the same socket, or on different sockets). On Unix, tools such as “top” may be used to watch the behavior that occurs in practice. On Windows, the task manager tool may provide this information.
It is not necessary to submit the actual code.