Git Product home page Git Product logo

ske-pi's Introduction

SkePi

Data parallel and stream parallel skeletons implemented in erlang.

compilation, debug and cleanup

Once you have moved to ske-pi's root directory, you can compile all sources to object code.

make all or make may be used to compile with debug mode turned on.

In this mode, some information regarding inter-process communication (and timeouts, if any have occurred), as well as function calls for each skeleton will be saved to a log file (located inside the ske-pi/logs directory by default).

make all DEBUG= or make DEBUG= will compile with debug mode turned off.

make clean may be used to remove the directory containing all the object files and keep the log files.

make cleanall will remove both object files and the log files generated previously.

usage examples

Each module has its own usage function printing a brief description and giving a simple usage example.

Once you have compiled ske-pi, you may:

  • start the Erlang shell with cd ebin; erl from ske-pi's root directory
  • call the usage function for a given skeleton. Via the Erlang shell, use the following command:
> <module_name>:usage().
  • additionally, you may test the stream parallel skeletons' performance using an example with a default configuration. Like so:
> test_stream:benchmark().
  • similarly, you may run the data parallel skeletons example. Write:
> test_mapred:benchmark().
  • the above is also available for the skeletons implementing the google mapreduce skeleton. Try it with:
> test_mapred_google:benchmark().
  • for the stream parallel skeletons example, it is possible to configure the length of the list, the length of the chunks onto which the list is split, the number of worker processes and the number of schedulers used (N.B. dependent on the machine used to run the tests)
  • you may also configure the length of the list, the length of chunks and the number of schedulers used for the data parallel skeletons example
  • for the google mapreduce example, you may input the name of a directory containing your own test files, an atom to be used to perform an unix grep-like operation on the test files and the number of scherdulers used (please note that the directory with your own test files must be located inside ske-pi's top directory and it must be in string format)
  • the erlang shell may be exited with the following command: q().

acknowledgements

The stream skeleton (stream.erl) is taken and then modified from the skel library for the ParaPhrase Project.

ske-pi's People

Contributors

sre990 avatar

ske-pi's Issues

Gmapred example

Adding a gmapred example test. Perhaps a simple "grep" operation?

Static typing

type-checking done statically, using dialyzer and adding type annotations

Escript examples

As of right now, examples are merely modules used only via the erl emulator. It would be better to turn them into scripts.

Binaries instead of lists

The Erlang concurrency model is shared-nothing, meaning that all data must be copied
between processes and this introduces some overhead. Overhead may be minimised by using binaries instead of lists, because binaries are passed by reference.

Documentation file

A more in-depth look at all functionalities + how to use this library would be neat! :)

Better error handling

As of right now, these modules have been developed with little to no concern towards error handling. It would be better to improve error handling and use the LOG macro.

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.