2017-01-17 12 views
0

Поддерживает ли матричные операции долота, такие как сложение, умножение, транспонирование и т. Д.? Если нет, то каков наилучший способ их реализации?Операции с матрицами в долото

Как насчет векторов?

ответ

1

Буровое долото не поддерживает операции с матрицами. Это DSL для записи аппаратных генераторов, которые реализуют такие операции. Примеры специализированных генераторов математического оборудования см. В: Hwacha: A hardware vector unit и DspTools: a set of math tools

0

Да, вы можете выполнять операции с матрицами в Дололе с помощью векторов. Код, который я придумал, ниже (входные матрицы имеют размеры 3x5 и 5x2).

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 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^