自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (8)
  • 收藏
  • 关注

原创 矩阵乘法脉动阵列的C++模拟

自从谷歌的TPU问世以后,被人们遗忘很久的脉动阵列又再次火了一把。矩阵乘法就可以用脉动阵列进行计算,而脉动阵列这种数据流又特别适合用硬件进行实现。下面是用脉动阵列进行矩阵乘法的示意图。可以看到,A的每一行不是同时进入脉动阵列的,而B的每一列也不是同时进入脉动阵列的,相邻行或列进入脉动阵列的时间恰好相差一个时钟周期。以下是用c++模拟脉动阵列的代码:#include <iostream>#include <cstdlib>#include <ctime>

2020-10-30 20:57:13 1040 1

原创 ShiDianNao的c++实现

#include"cfg.h"#include<iostream>#include<cstdlib>#include<ctime>using namespace std;class PE{public: int weight; int feature; int acc;public: void calc(){ acc+=weight*feature; return; }};class

2020-10-27 11:01:29 227

原创 循环分块对减少off-chip memory access的具体分析

如图,我们要计算NaN_aNa​个t(i)t(i)t(i)和NbN_bNb​个r(j)r(j)r(j)两两之间的距离,这是未进行分块的原始代码,假设cache(或者片上缓存)的容量为M个向量,并假设NaN_aNa​和NbN_bNb​远大于MMM,则对每个i,我们从片外存储器load一个ttt,并且从片外存储器load M-1个rrr,进行M-1次的距离计算后,这M-1个r便被替换出cache,转而加载下一组M-1个的r,因此,对每个确定的i,需要进行约[NbM−1][\dfrac{N_b}{M-1}][M.

2020-10-22 21:22:10 411

原创 N皇后问题的拉斯维加斯算法和回溯算法

#include<iostream>#include<cstdlib>#include<ctime>#define N 8using namespace std;int T[100]; //(i,T[i])指放在第i行第T[i]�?int k=0; //当前已经放置了多少行bool place(int j);void backtrace(){ //当前已经放置完第1,2,3...k行,从第k+1行开始回�?

2020-10-22 15:50:40 1007

转载 Graph Convolutional Network(GCN)

layers.pyimport mathimport torchfrom torch.nn.parameter import Parameterfrom torch.nn.modules.module import Moduleclass GraphConvolution(Module): def __init__(self, in_features, out_features, bias=True): super(GraphConvolution, self).__

2020-10-20 18:37:37 284

原创 EIE稀疏矩阵乘法硬件模拟

#include<iostream>#include<cstdlib>#include<ctime>#include <iomanip>using namespace std;typedef int dtype;typedef struct CSC{ int a; //存储非零元素个数 int n; //存储列数 dtype* v; //存储非零值

2020-10-19 16:17:38 326

原创 LSQ+的pytorch实现

import torch.nn as nnimport torch.nn.functional as Ffrom torch.autograd import Functionclass Round(Function): @staticmethod def forward(self, input): output = torch.round(input) return output @staticmethod def backward

2020-10-17 21:48:23 830

原创 稀疏矩阵CSR存储的C++实现

实现了稀疏矩阵的生成(指定稀疏程度)、稀疏矩阵转换为CSR、从CSR中恢复出矩阵、稀疏矩阵和向量的乘法等功能。从运行结果来看,稀疏矩阵存储为CSR格式和向量相乘的运行速度快于普通矩阵向量乘法,而且稀疏程度越高,优势越明显。#include<iostream>#include<cstdlib>#include<ctime>#include<stdio.h>typedef int dtype;using namespace std;void csr_

2020-10-16 20:53:11 4530 2

原创 LEARNED STEP SIZE QUANTIZATION论文复现

import torch.nn as nnimport torch.nn.functional as Ffrom torch.autograd import Functionclass Round(Function): @staticmethod def forward(self, input): output = torch.round(input) return output @staticmethod def backward

2020-10-15 23:23:51 528 2

原创 论文阅读-LEARNED STEP SIZE QUANTIZATION

一.TitleLEARNED STEP SIZE QUANTIZATION二.Abstract&Introductionwhy?近年来,神经网络作为一种许多革命性技术的组成部分开始崭露头角,比如图像识别、语音识别以及自动驾驶等。但是,要利用好这一技术并大规模应用需要开发者有一个系统性的视角,即要兼顾网络的性能、吞吐率、能效以及紧凑程度。现在很多研究者都致力于在保持网络精度的同时,用低精度的数据去表示权重和激活,这种方法使得模型的大小以及计算量大大降低。因此,如何在降低精度的同时尽可能保持网络

2020-10-15 19:59:34 1708 4

原创 BN融合的量化感知训练及其uint8推理的模拟

上一篇博客介绍了如何进行量化感知训练,并进行uint8前向推理,但是没有将BN层进行融合,这使得模型推理时的计算复杂度仍然有改进的空间,本篇博客讲述了如何进行BN融合的量化感知训练,并在训练完成后进行了uint8推理的模拟,以方便今后在FPGA上的部署。代码:from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport torchi

2020-10-15 10:21:07 1422 6

原创 uint8量化感知训练mnist手写体识别

import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch import distributedfrom torch.nn import initfrom torch.nn.parameter import Parameterfrom torch.autograd import Function# ********************* range_trackers(范围统计器,统计量化前范围) *

2020-10-14 18:06:22 856 1

原创 BNN训练MNIST数据集

from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport torch.nn as nnimport torchimport torch.nn.functional as Ffrom torch.autograd import Function# ********************* 二值(+-1) *********

2020-10-13 16:19:31 1006 2

原创 论文阅读6:MeliusNet

一.TitleMeliusNet: Can Binary Neural Networks Achieve MobileNet-level Accuracy?二.Abstract&Introductionwhy?深度神经网络在众多机器学习领域取得了巨大的成功,人们也在不断设计更大、更复杂的网络以追求更高的准确率,然而,深度神经网络巨大的参数数目和计算量阻止了其在移动和嵌入式设备上的应用,针对这一问题,人们做了许多工作来减少模型大小、加速推理速度,主要可以分为三个研究方向:一是模型剪枝技术,二是

2020-10-12 15:35:19 812

原创 论文阅读笔记5-An Asynchronous Energy-Efficient CNN Accelerator with Reconfigurable Architecture

一、TitleAn Asynchronous Energy-Efficient CNN Acceleratorwith Reconfigurable Architecture二、Abstract & Introductionwhy?卷积神经网络在计算机视觉领域被广泛使用,并且展示了它在图像分类、目标检测以及视频监控等方面的巨大优势。传统上 ,卷积神经网络的推断过程在CPU和GPU上完成,但是,CPU计算资源有限,并行度不够,而GPU虽然在计算方面强于CPU,但是GPU有着极高的功耗,ASI

2020-10-10 21:30:26 691

原创 ShiDianNao中的数据组织

在ShiDianNao中,NBin和NBout有2∗Py个Bank,每个Bank分为许多行,每行Px∗2字节,即每行Px个16位定点数2*P_y个Bank,每个Bank分为许多行,每行P_x*2字节,即每行P_x个16位定点数2∗Py​个Bank,每个Bank分为许多行,每行Px​∗2字节,即每行Px​个16位定点数,下面讲讲具体的数据组织方式(困扰了我很久)如图11所示,首先,将Nyin∗Nxin的输入特征按照Py∗Px进行分块N_{yin}*N_{xin}的输入特征按照P_y*P_x进行分块Nyin.

2020-10-09 21:57:13 215

原创 论文阅读4:ShiDianNao

一、TitleShiDianNao: Shifting Vision Processing Closer to the Sensor二、Abstractwhy?尽管近年来神经网络在很多领域都表现出色,但是神经网络的能效和性能都受限于访存,这在计算机视觉领域主要是指CNN(卷积神经网络),因此,如果要进行CNN在边缘应用中的推广,这是一个必须解决的问题。how?本文中,作者利用卷积神经网络权重共享的特性,提出了一个叫做ShiDianNao的加速器,它充分进行了数据复用,消除了对DRAM的访问,并且

2020-10-09 13:59:49 920

原创 生成不重复的随机数

问题:生成[0,N-1]区间内的n个互不相同的随机数。解决思路:首先,生成一个长度为N的数组,然后将其打乱,取前n个数,即为上述问题的解。为了验证上述方法产生的随机数是符合要求的,我们用下面的方法来检验。每次随机的从[0,N-1]中选取n个数,记它们的和为X,则X的期望可以计算如下:这样选取n个数总共有CNnC_N^nCNn​中取法,这么多取法总共取出了CNn∗nC_N^n*nCNn​∗n个数,而0,1,2,…N-1这N个数出现的概率是相同的,因此每个数出现了n∗CNnN\dfrac{n*C_N^n

2020-10-07 21:38:02 1019

原创 有序表搜索

#include<iostream>#include<algorithm>#include<ctime>#include<cstdlib>#include<set>#pragma GCC optimize("Ofast")using namespace std;int rand_int(int a,int b);void non_repeat(int n,int *a){ set<int> s; wh

2020-10-07 19:58:04 313

转载 windows和ubuntu双系统卸载ubuntu的安全方法

若启动方式为legacy引导,则使用Mbrfix。若启动方式为UEFI,则使用easyUEFI。链接

2020-10-06 16:53:49 187

原创 python中的NotImplementedError

class A(): def __init__(self): self.name='Tom' def func(self): raise NotImplementedError def get_sex(self): if self.sex=='man': print("男") else: print("女")class B(A): def __init__(self)

2020-10-04 19:37:08 2691

基于HLS的全流水FFT代码

1. 支持4,8,16点FFT运算 2. 采用蝶形运算单元,以全流水的方式运行 3. 基于Xilinx HLS语言开发

2023-02-09

纯c++实现对bmp图片的sobel边缘检测

纯c++实现对bmp图片的sobel边缘检测

2022-12-02

FIR滤波器的Verilog实现

FIR滤波器的Verilog实现

2022-07-13

基于FPGA的HLS CNN加速器

一个HLS设计的卷积神经网络加速器,并在zynq7020开发板上部署成功。数据集采用的是MNIST手写体,加速的网络为一个拥有4层卷积,2层池化和1层全连接层的自定义小网络,适合初学者学习。

2022-03-26

Win7 上安装 synopsys 工具

用于安装FPGA开发的Synplify,其综合速度优于vivado和quartus自带的综合器,可以大大加速FPGA开发速度

2021-02-05

pingpang_block_mm.rar

基于system verilog的矩阵乘法代码 ,进行了分块计算,并且对块矩阵的载入和写回进行了乒乓操作,大大掩盖了数据传输时间,且代码中的乒乓操作写法具有通用性,可供借鉴。

2020-11-18

动态分支预测MIPS.rar

用verilog实现的五级流水线CPU,通过旁路技术解决了数据冒险,通过BTB动态分支预测来解决控制冒险

2020-09-13

tt.py,一个轻量级卷积神经网络,基于numpy

本程序基于numpy,自己动手实现了一个简单的卷积神经网络,共两个卷积层,两个池化层以及两个全连接层,并达到了97%的准确率

2020-03-17

i2c_eeprom.rar

在fpga平台上用verilog通过iic总线实现对eeprom的读写

2019-11-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除