chisel入门初步2_0——使用chisel完成一个混合机制的GCN网络搭建

为完成项目相关要求,从本章开始将尝试设计一个混合机制的GCN加速器,如果我某方面理解有问题,还望各位大佬指正
GCN网络的机制在这里不细谈了,可以看看b站同济子豪兄相关的论文精读视频,这里简单说明一下混合机制的GCN。
首先说一下什么是混合机制。对于GCN网络而言,可以分为两个主要的硬件步骤聚合(Aggregation)和组合(Combination)。聚合阶段就是将一个节点相邻的节点特征乘以某个特定的权重相加的过程,组合阶段是一个多层感知机结构,可以使用标准的神经网络阵列进行加速。下面截取一段GCN网络的公式。

图卷积网络(GCN)的基本公式

在GCN中,节点的特征表示可以通过以下公式计算得到:

H ( l + 1 ) = σ ( D − 1 2 A D − 1 2 H ( l ) W ( l ) ) H^{(l+1)} = \sigma(D^{-\frac{1}{2}} A D^{-\frac{1}{2}} H^{(l)} W^{(l)}) H(l+1)=σ(D21AD21H(l)W(l))

其中:

  • H ( l ) H^{(l)} H(l) 是第 l l l 层的节点特征表示矩阵。
  • A A A 是图的邻接矩阵,通常是归一化的。
  • D D D 是节点的度矩阵,其对角线上的元素 D i i D_{ii} Dii 是节点 i i i 的度(包括自环)。
  • W ( l ) W^{(l)} W(l) 是第 l l l 层的权重矩阵。
  • σ \sigma σ 是激活函数,通常是ReLU函数。
  • H ( l + 1 ) H^{(l+1)} H(l+1) 是下一层的节点特征表示矩阵。

可以看出,聚合阶段就是将某个节点所有连接节点的特征乘以起始节点与目的节点各自的节点度的-1/2次方再加和。
Σ ( 1 / ( i n d e g r e e ⋅ o u t d e g r e e ) ⋅ f e a t u r e ) \Sigma(1/\sqrt(indegree·outdegree)· feature) Σ1/( indegreeoutdegree)feature)
组合阶段直接对照多层感知机即可

整个过程我将先从小模块搭起,使用chisel语言完成相应模块的设计。同时,由于图数据非常离散,导致cache命中率极低,大大降低了所设计的加速器的运行速度。本人同时设计了一套节点重排的软件方法,将关联度较高的节点相邻排布,同时使所设计的加速器支持数据预取。未来设计的加速器将基于这一点进行设计。由于专利尚在审核,此处就暂不将算法具体内容放出。望各位海涵。

注:由于尚在摸索期,此项目文件可能会多次修改,不断测试。代码可能也较为丑陋,望周知。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值