Skip to content
This repository has been archived by the owner on Oct 4, 2024. It is now read-only.
/ stm Public archive

Dual-versioned software transactional memory (DV-STM) library

Notifications You must be signed in to change notification settings

YconquestY/stm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DV-STM

A dual-versioned software transactional memory library with over $3 \times$ speedup against the reference implementation using a coarse-grained lock.

TODO

  • To understand the difference between inline … and static inline …
    and why
    cc -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 with union
  • 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/

Introduction

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 organization

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

Acknowledgement

This project is the coursework of CS-453 Concurrenct Computing by École Polytechnique Fédérale de Lausanne (EPFL).