Giter VIP home page Giter VIP logo

magma-si's Introduction

MAGMA-Si(Matrix Accelerator Generator for GeMM Operations)

Overview

Matrix Accelerator Generator designed in CHISEL HDL for efficient General Matrix Multiply (GeMM) operations. The architecture employed is the innovative SIGMA Architecture, which enhances performance and scalability in matrix multiplication tasks.

Key Features

CHISEL HDL: Developed using the CHISEL hardware description language, ensuring flexibility and control in hardware design.

GeMM Optimization: Tailored for General Matrix Multiply (GeMM) operations, a fundamental computational kernel in many numerical and machine learning applications.

SIGMA Architecture: Leveraging the SIGMA Architecture, known for its efficiency and scalability, to accelerate matrix multiplication tasks.

Performance: Designed with a focus on performance improvements, allowing for faster and more efficient matrix operations.

Usage

  1. Clone the Repository:

    git clone https://github.com/merledu/magma-si.git
    
  2. Access the Project Directory:

    cd magma-si
    
  3. Compile the project using SBT (Scala Build Tool) with the following command:

    sbt
  4. Execute the tests with VCD output by issuing the following command:

    testOnly magmasi.components.flexdpecom2test -- -DwriteVcd=1
  5. Test case that has been executed in this manner:

    1.  // for input data base 1
          c.io.i_data_bus(0).poke(1.U) 
    2. // for input data bus 2
          c.io.i_data_bus2(0).poke(0.U)
    3. // for i vn
          c.io.i_vn(3).poke("b11101".U)
    4. // for muxes
          c.io.i_mux_bus(576).poke(1.B)
    5. // stationary and valid
          c.io.i_stationary.poke(1.B)
          c.io.i_data_valid.poke(1.B)
  6. Desire Output:

    When you provide the correct input values for i_vn and muxes pins, you will receive the expected matrix output.
    

Documentation of Matrix multiplication achieved using it

In this document, we illustrate the matrix multiplication process and conduct a comparative analysis between the results obtained from traditional matrix multiplication and the flexDpe multiplication which is use in magma-si .matrix multiplication

magma-si's People

Contributors

masfiyan avatar shahzaibk23 avatar syedowaisalishah avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magma-si's Issues

To make Pathfinder and Benes wrapper for Boolean Muxes Conversion

  1. To design the Pathfinder Module for calculating the sources and destinations for each PE according to the input values provided.
  2. Since the Benes Module takes in Boolean values for muxes and we are calculating it individually like "VVDV", so this needs to be converted to boolean values via a wrapper interface.

To make Pathfinder and Benes Wrapper for Boolean muxes conversion

  1. To design the Pathfinder Module for sources and destinations calculation for each Processing Element in each Flex-DPE, in accordance with the provided set of inputs.
  2. To design a wrapper interface on Benes to translate the Pathfinder generated simplified muxes values (i.e VVDV) into the muxes values.

Code CleanUp

I see many discrepancies in the Code.

We need to structure the codebase at first priority before moving forward any further.

Some necessary changes

  • There are multiple modules for same thing, delete all extra ones keep one original with right name
  • Delete all not needed in future commented code
  • Structure Code and create comments for understandability
  • Remove direct parameters into modules, Use a case class for parameters definition and use it as an implicit parameter in all respective modules

Some basic rules to follow

  • Take Care of indentation
  • Files names start with first letter Capital
  • package name is all small letters

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.