A dual-versioned software transactional memory library with over
- To understand the difference between
inline …
andstatic inline …
and whycc -Wall -Wextra -Wfatal-errors -O2 -std=c11 -fPIC -I../include -c -o batcher.c.o batcher.c batcher.c:268:20: error: static declaration of ‘acquire’ follows non-static declaration 268 | static inline void acquire(atomic_flag* lock) { | ^~~~~~~ compilation terminated due to -Wfatal-errors.
- To understand the behavior of
posix_memalign(…)
regarding virtual address and alignment - To understand dynamic allocation of
struct
withunion
- To optimize "access sets" update
Currently, per-word "access sets" are always updated during each read/write operation even though it is not necessary to do so. - To understand synchronization examples in
sync-examples/
- To understand examples in
playground/
- To understand the workload and how an implementation is graded in
grading/
The project description includes
- An introduction to STM;
- The specifications of the STM implemented;
- Sufficient properties for an STM to be deemed correct
- The DV-STM algorithm
- A thorough description of the STM interface
- Practical information.
- How to test an implementation locally
- The performance metric
Directory | Description |
---|---|
dv-stm/ |
DV-STM implementation |
grading/ |
Workload and grader |
include/ |
STM API |
playground/ |
Unknown |
reference/ |
A reference implementation using a coarse-grained lock |
sync-examples/ |
Examples on synchronization primitives |
submit.py |
Autograding submission script |
This project is the coursework of CS-453 Concurrenct Computing by École Polytechnique Fédérale de Lausanne (EPFL).