首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chisel中的矩阵运算

Chisel中的矩阵运算
EN

Stack Overflow用户
提问于 2017-01-18 02:53:16
回答 2查看 614关注 0票数 1

Chisel是否支持加法、乘法、转置等矩阵运算?如果没有,实现它们的最好方法是什么?

那么向量呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-08 02:06:46

Chisel不支持矩阵运算。它是一种DSL,用于编写实现此类操作的硬件生成器。有关专用数学硬件生成器的示例,请参阅:Hwacha: A hardware vector unitDspTools: a set of math tools

票数 1
EN

Stack Overflow用户

发布于 2017-11-15 04:31:53

是的,你可以在矢量的帮助下在Chisel中进行矩阵运算。我想出的代码如下(输入矩阵的大小为3x5和5x2)。

代码语言:javascript
复制
package matrixmult

import chisel3._
import chisel3.iotesters.{PeekPokeTester, Driver}
import scala.collection.mutable.ArrayBuffer

class MatMult extends Module {
  val io = IO(new Bundle {
    val matA   = Input(Vec(15, UInt(32.W)))
    val matB   = Input(Vec(10, UInt(32.W)))
    val load  = Input(Bool())
    val matC = Output(Vec(6, UInt(32.W)))
    val valid = Output(Bool())
  })
  var sum = UInt(32.W)
  val matC = new ArrayBuffer[UInt]()

  for(i <- 0 until 6) {                
        matC += 0.asUInt(32.W)
  }

  when (io.load) {
    for(i <- 0 until 3) {
        for(j <- 0 until 2) {
            sum = 0.asUInt(32.W)
            for(k <- 0 until 5)
            {
                sum = sum + matA(i*5+k)*io.matB(k*2+j)

            }
            matC(i*2 + j) = sum
        }
    }
  io.valid := true.B
  } .otherwise {
    io.valid := false.B     
  }   

  val outputMat = Vec(matC)
  io.matC := outputMat   

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41704794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档