Git Product home page Git Product logo

ssmp's Introduction

ssmp is a highly optimized message passing library built on top of the cache-coherence protocols of shared memory processors. It exports functions for sending and receiving cache-line-sized (or bigger) messages.

  • Website : http://lpd.epfl.ch/site/ssmp
  • Author : Vasileios Trigonakis [email protected]
  • Related Publications: TM2C is now a part of the SSYNC synchronization suite (http://lpd.epfl.ch/site/ssync)
    1. TM2C: a Software Transactional Memory for Many-Cores, Vincent Gramoli, Rachid Guerraoui, Vasileios Trigonakis (alphabetical order), EuroSys '12 - Proceedings of the 7th ACM European conference on Computer Systems
    2. Everything You Always Wanted to Know about Synchronization but Were Afraid to Ask, Tudor David, Rachid Guerraoui, Vasileios Trigonakis (alphabetical order), SOSP '13 - Proceeding of the 24th ACM Symposium on Operating Systems Principles

Installation:

Please refer to the INSTALL file.

Interface of ssmp:

ssmp exports the following functions:

  • extern void ssmp_init(int num_procs);
  • extern void ssmp_mem_init(int id, int num_ues);
  • extern void ssmp_term(void);
  • extern inline void ssmp_send(uint32_t to, volatile ssmp_msg_t* msg);
  • extern inline void ssmp_send_no_sync(uint32_t to, volatile ssmp_msg_t* msg);
  • extern inline void ssmp_send_big(int to, void* data, size_t length);
  • extern inline void ssmp_broadcast(ssmp_msg_t* msg);
  • extern inline void ssmp_recv_from(uint32_t from, volatile ssmp_msg_t* msg);
  • extern inline void ssmp_recv_from_big(int from, void* data, size_t length);
  • extern inline void ssmp_recv(ssmp_msg_t* msg);
  • extern void ssmp_color_buf_init(ssmp_color_buf_t* cbuf, int (*color)(int));
  • extern void ssmp_color_buf_free(ssmp_color_buf_t* cbuf);
  • extern inline void ssmp_recv_color(ssmp_color_buf_t* cbuf, ssmp_msg_t* msg);
  • extern inline void ssmp_recv_color_start(ssmp_color_buf_t* cbuf, ssmp_msg_t* msg);
  • extern int ssmp_color_app(int id);
  • extern inline ssmp_barrier_t* ssmp_get_barrier(int barrier_num);
  • extern inline void ssmp_barrier_init(int barrier_num, long long int participants, int (*color)(int));
  • extern inline void ssmp_barrier_wait(int barrier_num);

and a number of helper functions.

Check smp.h for the details of the available functions.

Additionally, you can use the simple profiler functions in measurements.h.

Using ssmp (libssmp):

ssmp includes the following applications:

  • one2one : test one-to-one one-way messaging
  • one2one_rt : test one-to-one roundtrip messaging
  • one2one_big : test one-to-one messaging with big messages
  • client_server : test client-server one-way messaging
  • client_server_rt : test client-server roundtrip messaging
  • bank : a simple bank application based on servers
  • barrier_test : test the barriers in ssmp
  • cs : try to measure the cost of a context switch

Execute: ./app -h for the parameters that each application accepts

To use libssmp in your application, execute: make libssmp.a

This will generate the libssmp.a library.

In your application you need to include the ssmp.h header. Additionally, you also need to copy the ssmp_ARC.h (ARCH = x86, sparc, or tile) file that corresponds to your architecture, because it is included by ssmp.h.

Finally, you need to link your application with -lssmp and point the linker to the folder of libssmp.a (with -L/folder/to/libssmp.a).

Limitations:

  1. ssmp mostly aims at cache-line-sized messages and, for simplicity, it does not implement messaging queues. In other words, every process is allowed to send only a single pending message to each other process.
  2. ssmp works with process, not threads.
  3. the ssmp_[send/recv_from]_big functions are currently not implemented for the Tilera platforms.

ssmp's People

Contributors

trigonak avatar

Watchers

James Cloos avatar  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.