As described in class 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 Erlang. Since actors ‘are fully asynchronous, the particular type of Gossip implemented is the so-called Asynchronous Gossip.
Gossip Algorithm for information propagation The Gossip algorithm involves the following:[8:57 PM, 9/29/2022] Rohit: Starting: A participant(actor) told/sent a rumor (fact) by the main process
Step: Each actor selects a random neighbor and tells it the rumor.
Termination: Each actor keeps track of rumors and how many times he has heard the rumor. It stops transmitting once it has heard the rumor 10 times (10 is arbitrary, you can select other values).
Push-Sum algorithm for sum computation
State: Each actor A, maintains two quantities: s and w. Initially, s = x; = / (that is actor number / has
value i, play with other distribution if you so desire) and w = 1
Starting: Ask one of the actors to start from the main process.
Receive: Messages sent and received are pairs of the form (s, w). Upon receiving, an actor should add the received pair to its own corresponding values. Upon receiving, each actor selects a random neighbor and sends it a message.
Send: When sending a message to another actor, half of s and w is kept by the sending actor, and half is placed in the message
Sum Estimate: At any given moment of time, the sum estimate is s/w where s and w are the current values of an actor.
Termination: If an actor’s ratio s/w did not change more than 10-10 in 3 consecutive rounds the actor terminates. WARNING: the values s and w independently never converge, only the ratio does.
Topologies: The actual network topology plays a critical role in the dissemination speed of Gossip protocols. As part of this project, you have to experiment with various topologies. The topology determines who is considered a neighbor in the above algorithms.
Full Network: Every actor is a neighbor of all other actors. That is, every actor can talk directly to any other actor.
3D Grid: Actors form a 2D grid. The actors can only talk to the grid neighbors
Line: Actors are arranged in a line. Each actor has only 2 neighbors (one left and one right, unless you are the first or last actor).
Imperfect 3D Grid: Grid arrangement but one random other neighbor is selected from the list of all actors (8+1 neighbors).
Input: The input provided (as a command line to your project2) will be of the form;
project2 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, the algorithm is.one of gossip, push-sum.
Output: Print the amount of time it took to achieve convergence of the algorithm. Please measure the time using
… build topology
val b = System.current TimeMillis;
…. start protocol
Actor modeling: In this project, you have to use exclusively the actor facility in Erlang. (projects that do not use multiple actors or use any other form of parallelism will receive no credit).
In the README file you have to include the following material:
. • Team members
What is working
What is the largest network you managed to deal with for each type of topology and algorithm?
9/25/22. 12:14 AM
Report.pdf For each type of topology and algorithm, draw the dependency of convergence time as a function of the size of the network. You can overlap different topologies on the same graph, i.e. you can draw 4 curves, one for each topology, and produce only 2 graphs for the two algorithms. Write about any interesting findings of your experiments in the report as well and mention the team members
You can produce Report.pdf in any way you like, for example using spreadsheet software. You might have to use logarithmic scales to have a meaningful plot.