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

c1bf922 · Sep 29, 2024

History

25 Commits
Sep 29, 2024
Oct 3, 2023
Dec 12, 2023
Sep 14, 2020
Dec 7, 2023
Nov 13, 2021
Oct 19, 2020
Mar 1, 2024
Sep 22, 2020

Repository files navigation

DV-STM

A dual-versioned software transactional memory library with over 3 × 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).