LightNE
LightNE copied to clipboard
Implement GBBS-based SPMMD
cblas_axpy(...)------>cblas_axpy(d,factor_new,X+v_d,1,Y+u_d,1);
The factor can be computed in advance and then used as function input to avoid the additional computational overhead caused by each multiplication.
Actually we can't do that. Suppose we want to compute D^{-1/2}AD^{-1/2} X.
Then for each edge e=(u, v), the factor is 1/sqrt(d(u)*d(v)) where d(u) denotes the degree of node u, and thus the factor can only be computed in the runtime. Otherwise, we need additional O(m) space to store the factors.