Skip to content

release-project/cloud-orbit

Repository files navigation

Cloud-orbit

Orbit for the cloud in Cloud Haskell!

This is a shameless translation from the original Orbit-int written in Erlang by Patrick Maier [email protected].

Required Haskell packages

Building

Make the executable

make

Execution

  • Sequential Orbit

    ./orbit seq short|intermediate|long host port
    
    # Example: executing the 'long' benchmark
    ./orbit seq long 127.0.0.1 1555
  • Parallel Orbit

    ./orbit par True|False short|intermediate|long nWorkers host port
    
    # Example: executing the 'long' benchmark with parallel image
    # computations using 4 workers on 4 cores
    ./orbit +RTS -N4 -RTS par True long 4 127.0.0.1 1555
  • Distributed Orbit

    First, start the worker nodes.

    # Run for every worker node
    ./orbit dist slave host port
    
    # Example: run a worker node on 4 cores
    ./orbit +RTS -N4 -RTS dist slave 127.0.0.1 1554

    Once all the workers nodes have been deployed on the local network, start the master node.

    ./orbit dist master True|False short|intermediate|long nWorkers host port
    
    # Example: executing the 'long' benchmark without parallel image
    # computations, using 4 workers on each node and the master node
    # running on 2 cores
    ./orbit +RTS -N2 -RTS dist master long 4 127.0.0.1 1555

Scripts for automated execution

We have created some Python scripts to automatically run sample configurations of the sequential, parallel and distributed Orbit.

Python 2.x is needed in order to run the scripts.

  • Sequential Orbit

    python seq.py
    

    Variables that can be tweaked with their default values.

    # Path to the file that will hold the results.
    fname = 'seq.log'
    # Number of repetitions per configuration.
    reps = 1
    # List of versions.
    versions = ["short", "intermediate", "long"]
    # Host information.
    node = {"host": "127.0.0.1", "port": 5050}
  • Parallel Orbit

    python par.py

    Variables that can be tweaked with their default values.

    # Path to the file that will hold the results.
    fname = 'par.log'
    # Number of repetitions per configuration.
    reps = 1
    # List of versions.
    versions = ["short", "intermediate", "long"]
    # Perform parallel image computations
    iwps = [False, True]
    # No of cores used
    cores = [1,2,4,8,16]
    # Ratio of No of workers to No of cores.
    workersPerCore = 1
    # Host information.
    node = {"host": "127.0.0.1", "port": 5050}
  • Distributed Orbit

    python dist.py

    Variables that can be tweaked with their default values.

    # Path to the file that will hold the results.
    fname = 'dist.log'
    # Number of repetitions per configuration.
    reps = 1
    # List of versions.
    versions = ["short", "intermediate", "long"]
    # Perform parallel image computations.
    iwps = [False, True]
    # No of cores used by each worker node.
    cores = [1]
    # Ratio of No of workers to No of cores in each worker node.
    workersPerCore = 1
    # Master node information
    master = {"host": "127.0.0.1", "port": 5050}
    # Maximum number of workers nodes
    maxSlaves = 60
    # No of workers nodes to add after each iteration
    step = 2
    # Port of the 1st worker node (Assume that the host will be localhost).
    workerPort = 5051

Memory Profiling

  • Compile with enabled profiling

    make prof
  • Run with the proper RTS options

    # Example: executing the 'long' benchmark
    ./orbit  +RTS -hd -p -RTS seq long 127.0.0.1 1555
  • Prepare the report

    make prof-results

Profiling with Threadscope

  • Compile with enabled event logging

    make threadscope
  • Run with the proper RTS options

    # Example: executing the 'long' benchmark
    ./orbit +RTS -ls -RTS seq long 127.0.0.1 1555
  • Open the report with threadscope

    threadscope orbit.eventlog

Credits

Written by:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •