Git Product home page Git Product logo

cs453-2018-project's Introduction

Project of the course CS-453

Your goal is to implement a Software Transactional Memory (STM).

The real goal is of course to get you a hands-on experience with actual concurrent programming.

What prior knowledge do I need?

Only basic C or C++ knowledge.

How to use the atomic libraries and the memory models of C11 and C++11 will be taught in the weekly project sessions.

Useful resources

What is a STM?

  • This course.

  • The Art of Multiprocessor Programming - Chapter 18.

Some implementations out there

You may read and inspire from existing STM libraries, but it must be your own code that carries out transactions.

Grading

  • Correctness is a must.

    Each transaction must appear atomic. No correctness = no passing grade (for the project only).

  • Throughput is to go from a passing grade to the maximum grade.

    Comparison of your implementation to the reference one. Metric: #transaction commits per second.

Evaluation machine

Precise specification to come.

How to write my own STM?

  1. Fork this repository.

  2. Make a local copy of the template directory with your SCIPER number (e.g. $cp template 123456).

  3. Complete (or completely rewrite) your copy of the template with your own code.

    1. Complete/rewrite your code; only the interface should be kept identical.

    2. Compile and test locally with: path/to/directory/grading$ make build-libs run.

    3. Possibly send your code to the TA for testing on the evaluation machine.

    4. Repeat any of the previous steps until you are satisfied with correctness and performance.

List of functions to implement

First iteration:

  • shared_t tm_create(size_t, size_t)

  • void tm_destroy(shared_t)

  • void* tm_start(shared_t)

  • size_t tm_size(shared_t)

  • size_t tm_align(shared_t)

  • tx_t tm_begin(shared_t)

  • bool tm_end(shared_t, tx_t)

  • bool tm_read(shared_t, tx_t, void const*, size_t, void*)

  • bool tm_write(shared_t, tx_t, void const*, size_t, void*)

Second iteration (which adds memory (de)allocation):

  • bool tm_alloc(shared_t, tx_t, size_t, void**)

  • bool tm_free(shared_t, tx_t, void*)

cs453-2018-project's People

Contributors

srlt avatar

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.