/matrixserver

A master service (to combine with matrixslave) for dispatching to the slaves multiple operations of row * column (of a matrix)

Primary LanguageClojureGNU General Public License v3.0GPL-3.0

matrixserver ver 0.1

It's a master service (to combine with matrixslave) for dispatching to the slaves multiple operations of row * column (of a matrix)

Rational

Distribute the computational load of matrix multiplication, across online services.

Matrixserver is a simple CLI application (designed to be a master), able to send HTTP requests of calculation (row * column) to n instances of the slave in parallel.

  • The matrices are splitted in chuncks of 'rows and columns'
  • every chunk is managed (in parallel) from a single thread
  • the threads call the slave HTTP API (one or many potentially) able to manage multiple instances of request and wait for the result
  • every single elaboration is aggregated (in the matrix result) at the moment of the arrive
  • partial results are displayed until the last thread finished the elaboration (or forced to quit after a defined number of seconds)
  • the file final-matrix.edn will contain the elaboration

Technical Requirements

  • Java 7+ / Clojure 1.8 / Leiningen 2.x

Usage

  • Edit the file resources/matrices.edn to define the matrices to elaborate

  • Edit the file config/config.edn to set where the slave is

  • To run the app

    $ java -jar matrixserver.jar

  • To run the test

    $ lein midje