Skip to content
 
 

Latest commit

 

History

959 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Firmament is a multi-scale execution engine for cluster computing under
development at the University of Cambridge Computer Laboratory.

It is currently in early alpha stage, with much of the high-level functionality
still missing, and interfaces frequently changing.


SYSTEM REQUIREMENTS
-------------------

Firmament is currently known to work on Ubuntu 10.10 (maverick), 11.10 (oneric),
12.10 (quantal) and 13.04 (raring); with caveats (see below) on 12.04 (precise)
and 13.10 (saucy); it does NOT work without extra actions on 10.04 and 11.04.

UPDATE 03/2014: Ubuntu versions prior to 12.10 no longer work as they cannot
build libpion, which is now included as a self-built dependency in order to
ease transition to libpion v5 and for compatibility with Arch Linux. Below
information is included for historical reference.

Other configurations are untested - YMMV. Recent Debian versions typically work
with a bit of fiddling.

Reasons for known breakage:
* Ubuntu 10.04 - packaged clang/LLVM version too old (requires Clang >=2.9).
* Ubuntu 11.04 - broken dependency on /usr/include/linux/errno.h;
                 see http://pad.lv/774215 for a possible workaround
* Ubuntu 12.04 - when using Boost v1.48, the HTTP interface does not compile
                 due to libpion-net relying on a deprecated (and removed) Boost
                 feature. As a workaround, disable -D__HTTP_UI__ in
                 include/Makefile.config.unix
* Ubuntu 13.04 - segfault failures when using Boost 1.53 packages; use 1.49
                 (default).
* Ubuntu 13.10 - clang/LLVM include paths need to be fixed.
                 /usr/{lib,include}/clang/3.2 should be symlinked to
                 /usr/lib/llvm-3.2/lib/clang/3.2.

BUILDING & RUNNING
--------------------

$ make all

will fetch dependencies are necessary, and may ask you to install required
packages.

$ make test

will run unit tests.

Other targets can be listed by running

$ make help

Binaries are in the build/ subdirectory of the project root, and all accept the
--helpshort argument to show their command line options.

Start by running a coordinator:

$ build/engine/coordinator --platform PL_UNIX --listen_uri tcp://<host>:<port>

Once the coordinator is up and running, you can access its HTTP interface at
http://<host>:8080/ (the port can be customized using --http_ui_port argument).

To submit a toy job, first make the examples target and then use the script in
scripts/job/job_submit.py. Note that jobs are currently submitted to the web UI
port, and NOT the internal listen port!

$ make examples
$ cd scripts/job/
$ python job_submit.py <host> <webUI port (8080)> <binary>

Example for the last line:

$ python job_submit.py localhost 8080 /home/me/build/examples/hello_world

(Note that you may need to run 'make' in the script directory since the script
depends on some protocol buffer data structures that need to be compiled. If
you have run 'make all', all script dependencies should automatically have been
built, though.)

If this all works, you should see the job print "Hello world" in the
coordinator's console.

About

The Firmament multi-scale execution engine

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages