We design a GCN accelerator, HyGCN, using a hybrid architecture to efficiently perform GCNs. Compared to PyG on Intel Xeon CPU and NVIDIA V100 GPU, HyGCN achieves on average 1509× speedup with 2500× energy reduction and average 6.5× speedup with 10× energy reduction, respectively.
本文从计算机体系结构视角审视GCN(图卷积神经网络),发现GCN的执行包含两个截然不同的阶段:Aggregation(聚合)和Combination(组合)。前者行为类似于图处理——动态、不规则;后者行为类似神经网络——静态、规则。
现有架构(CPU、GPU、图加速器、NN加速器)都只擅长优化其中一种模式,无法同时应对GCN的混合执行模式。本文提出HyGCN——一个专用双引擎硬件架构,以混合方式高效执行GCN,并实现了片上引擎间流水线和优先级显存访问协调。
GCN 每一层包含两个核心阶段:
从公式角度看,第 k 层:
核心矛盾:Aggregation 阶段的访存模式是动态+不规则的(每个顶点的邻居数量和位置都不同),而 Combination 阶段是静态+规则的(矩阵向量乘法,参数全顶点共享)。现有架构没有一个能同时高效处理这两种模式。
GCN 不同于传统图分析和传统神经网络:特征向量长且跨层变化(高 intra-vertex 并行度)、MLP参数在顶点间完全共享(高度可重用)、两阶段交替执行提供数据流融合机会。这些特性为专用架构设计提供了独特的设计空间。
HyGCN 的核心是两大处理引擎和一个协调器:
论文提出了一个两层的静态图划分方法——Interval-Shard Partition:
基于这种划分,聚合操作按 (目标区间 Ii, 源区间 Ij) 逐块执行:属于同一区间的顶点共享其邻接顶点的特征向量,极大提升数据复用。
数据感知的稀疏消除(Sparsity Eliminator):
尽管Interval-Shard分区提高了数据复用,但图连接是稀疏的,每个分片内仍有很多空边。论文提出窗口滑动+收缩的动态方法:
这避免了大量无用的特征向量加载,对于GCN尤其是自然——因为特征向量长达数百/数千维,每次冗余加载都非常昂贵。
Vertex-Disperse 处理模式:
将每个顶点的特征向量元素分散到所有SIMD核心并行处理,而不是让每个核心处理一个完整顶点。这充分利用了intra-vertex 并行度,避免了快顶点等待慢顶点的负载不均问题。
Combination是规则的MVM计算,适合传统的脉动阵列。但为了与Aggregation Engine的工作模式匹配,论文做了关键改进:
因为GCN的参数在所有顶点间完全共享,协同模式在多个顶点上复用权重,大幅减少了对外显存的访问次数。
两个引擎之间通过一个 16MB 的 Ping-Pong 缓冲连接。Aggregation Engine 写一份,Combination Engine 读另一份,实现引擎间并行。
提供了两种流水线模式:
两个引擎共享 HBM 带宽,需要仲裁。论文提出优先级策略:
基准测试:4种GCN模型(GCN, GraphSAGE, GIN, DFP)× 6个数据集(引文网络/社交网络等)。
精度最高的 GIN 模型加速比最大——因为GIN先做Aggregation,特征向量维度大,CPU/GPU的冗余访存问题最严重,而HyGCN的优化正好对症。
HyGCN 的能耗只有 CPU 方案的 0.04%,GPU 方案的 10%。注意这已经包含了 HBM 显存的能耗。Aggregation Engine 和 Combination Engine 分别贡献约 35~60% 和 25~50% 的能耗,Coordinator 仅占 5% 左右。
采用TSMC 12nm工艺综合,HyGCN 整体面积约为 50.3 mm²,峰值功耗约 14.7 W。其中片上SRAM(边缘缓冲、输入缓冲、权重缓冲、输出缓冲和聚合缓冲)占芯片面积的主导地位。