Priyam Saikia (UFID **** ****)
Design gossip protocol using genserver to implement gossip algorithm for information propagation and push-sum algorithm for sum calculation. Implement the same in various topologies.
Elixir Mix project is required to be installed. Files of importance in the zipped folder (in order of call):
go.exs -> Commandline entry module
gossip_protocol.ex -> Main Module
Client.ex -> Client Module
Server.ex -> Server Module
To run a test case, do:
- Unzip contents to your desired elixir project folder.
- Open cmd window from this project location (use $cd to change location)
- Use "mix run go.exs " in commandline without quotes to run test case.
- The run terminates when the algorithm converges (details in report).
- The result provides the time taken to converge.
- Topologies can be: torus | 3D | rand2D | impLine | line | full
- Algorithm can be: gossip | push-sum
Examples:
-
C:\Users\PSaikia\Documents\Elixir\kv\gossip_protocol>mix run go.exs 1000 torus gossip Running Gossip algorithm Implementing torus topology Time to Converge: 250 ms
-
C:\Users\PSaikia\Documents\Elixir\kv\gossip_protocol>mix run go.exs 100 rand2D push-sum Running Push-Sum algorithm Implementing random 2D topology Time to Converge: 94 ms
Convergence of the below two algorithms are working:
1. Gossip
2. Push Sum
And the algorithms are converging for all the below network topologies:
1. Full
2. 3D Grid
3. Random 2D Grid
4. Torus
5. Line
6. Imperfect Line
Largest network tested:
For Gossip Algorithm
- Full - 7000
- 3D Grid - 50,000
- Random 2D Grid - 50,000
- Torus - 50,000
- Line - 7000
- Imperfect Line - 50,000
For Push-sum Algorithm
- Full - 2500
- 3D Grid - 5000
- Random 2D Grid - 5000
- Torus - 5000
- Line - 5000
- Imperfect Line - 5000