bharathaiys / Gossip-Simulator

A distributed system that spawns multiple actors that can communicate and perform aggregate computation using AKKA.net and F# in 4 different topologies(Full, Line, 2D Grid, and Imperfect 2D). Both the gossip algorithm as well as push-sum have been implemented.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GOSSIP SIMULATOR

Gossip type algorithms can be used both for group communication and for aggregate computation. The goal of this project is to determine the convergence of such algorithms through a simulator based on actors written in F#. Since actors in F# are fully asynchronous, the particular type of Gossip implemented is the so called Asynchronous Gossip.

TEAM MEMBERS:

BHARATH SHANKAR, UFID: 9841-4098
SHAUNAK SOMPURA, UFID: 9911-2362

WHAT IS RUNNING(ALGORITHMS & TOPOLOGIES):

The program prints the convergence time of all nodes for the following algorithms and topologies. For Gossip it ensures all nodes hear the rumour more than 10 times. For push-sum, all nodes' ratio of s/w should not have changed more than 10^-10 in 3 consecutive rounds.

Gossip:

Full Network
Line
2D Grid
Imperfect 2D

Push-sum:

Full Network
Line
2D Grid
Imperfect 2D

HOW TO RUN:

  1. Navigate to the folder with the file project2.fsx

  2. Run the following command on the terminal:

     dotnet fsi --langversion:preview proj2bf.fs <numNodes> <topology> <algorithm>
    

    Where numNodes is the number of actors involved (for 2D based topologies you can round up until you get a square), topology is one of full, 2D, line, imp2D, algorithm is one of gossip, push-sum.

LARGEST NETWORK DEALT WITH:

Gossip

Full Network: 50000
Line: 5000
2D Grid: 50000
Imperfect 2D: 20000

Push-sum

Full Network: 5000
Line: 64
2D Grid: 128
Imperfect 2D: 512# Gossip-Simulator

About

A distributed system that spawns multiple actors that can communicate and perform aggregate computation using AKKA.net and F# in 4 different topologies(Full, Line, 2D Grid, and Imperfect 2D). Both the gossip algorithm as well as push-sum have been implemented.


Languages

Language:F# 100.0%