优化点有三,一是矩阵乘法的优化,二是邻接矩阵的CSR乘法优化,三是logsoftmax的展开。 难点有二,其一是矩阵乘法如何分配线程、共享内存和cache,减少访存的同时进行更多的计算,其二是AX中的csr矩阵乘法,难度在于顶点和边的数目较大,无法直接展开做矩阵乘法,且不同的顶点对应的degree不一样,取值范围非常大,难以分配共享内存。
本次优化的创新性在于AX的计算以及与LogSoftmax的连接,省了一个核函数,减少了AX结果写回和LogSoftmax读取带来的访存耗时。针对AX中邻接矩阵每个顶点的不同degree,采用了一种可变长度的buffer策略(实际LDS固定为16*16),实现了多线程同时加载边与值,供后续循环使用,极大减小了访存耗时。