Research project exploring optimal Network-on-a-Chip interconnection topology, created for a school assignment, written in Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Drews_Final_Report.pdf
README.md
comparisons.py
tool.py
writeconfigs.py

README.md

NoC-topology

This repository contains a research project created for a school assignment. The project explores the optimal topology for interconnection circuitry between cores of a multicore, Network-on-a-Chip (NoC) processor for a given target application being executed on that NoC processor.

This project was implemented as a tool written in Python. Please see Drews_Final_Report.pdf for a detailed report of the goals, methodology, and results of this project. I received a grade of "A" for this assignment.

Project Contents

The tool consists of three Python files:

  1. tool.py
  • this is step one of the tool which profiles the target app and creates the novel topology
  • usage: ./tool.py <maxlinks> <maxdegree> <targetapp>[ <targetappargs>]
  • this outputs novel-net-config.txt desribing the new, novel topology
  • this also outputs the other config files needed by Multi2Sim
  • provides performance stats for the fully-connected topology to stdout
  1. comparisons.py
  • this is step two which measures the performance of the target app with a specified topology
  • choices are "novel" (what was just generated by tool.py), "ring", "mesh", or "torus"
  • usage: ./comparisons.py <maxlinks> <maxdegree> <topology> <target app>[ <targetappargs>]
  • this outputs the config files needed by Multi2Sim
  • provides performance stats for the specified topology to stdout
  1. writeconfigs.py
  • imported by both tool.py and comparisons.py
  • not intended to be run directly; just a helper

Necessary resources

  1. Multi2Sim multicore hardware simulator
  • available from www.multi2sim.org
  • need to update the path to m2s in the code of tool.py (at the top of the __main__ section) to reflect the path on your machine
  • currently hardcoded to the absolute path to m2s in my filesystem
  1. NetworkX
  • Python library created by people from LANL for graph manipulation
  • info at networkx.github.io
  • Can be installed on RHEL using easy_install --user networkx or on Ubuntu using apt-get install python-networkx
  1. PARSEC multithreaded benchmark suite