Git Product home page Git Product logo

tinystm's Introduction

TinySTM

OVERVIEW

TinySTM is a lightweight but efficient word-based STM implementation. This distribution includes three versions of TinySTM: write-back (updates are buffered until commit time), write-through (updates are directly written to memory), and commit-time locking (locks are only acquired upon commit). The version can be selected by editing the makefile, which documents all the different compilation options.

TinySTM compiles and runs on 32 or 64-bit architectures. It was tested on various flavors of Unix, on Mac OS X, and on Windows using cygwin. It comes with a few test applications, notably a linked list, a skip list, and a red-black tree.

INSTALLATION

TinySTM requires the 'atomic_ops' library, freely available from www.hpl.hp.com. A stripped-down version of the library is included in the TinySTM distribution. If you wish to use another version, you must set the environment variable LIBAO_HOME to the installation directory of 'atomic_ops'.

If your system does not support GCC thread-local storage, modify the TLS parameter in the 'Makefile' file.

To compile TinySTM libraries, execute 'make' in the main directory. To compile test applications, execute 'make test'. To check the compiled library, execute 'make check'. 'make clean' will remove all compiled files. To compile the TinySTM GCC compatible library, execute 'make abi-gcc'. To compile test applications, execute 'make abi-gcc-test'.

CONTACT

ACKNOWLEDGEMENT

This library was supported by the European research consortium VELOX.

tinystm's People

Contributors

joaomacp avatar patrickmarlier avatar tvale avatar

Watchers

 avatar  avatar

tinystm's Issues

Review #1

  • on read, check write-ts with respect to privileged-ts
  • on commit, check write-ts with respect to privileged-ts and read-ts with respect to privileged-ts
  • on commit, update commit-ts and privileged-ts
  • on commit, we need a fetch-and-add-2 atomic operation; check whether atomic_ops library provides it, or implement it using cas.

STMBench7

I believe it is working with TinySTM using 1 thread, but "randomly" segfaults with more threads.
It appears that the transaction's attributes are being unexpectedly changed. Specifically the no_retry flag becomes enabled and thus the control flow on an aborted read does not jump back. Instead the control flow continues, violating opacity.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.