MLGK preconditioner not taking consideration of self-loop edges
Currently, the CG solver for MLGK is accelerated by a diagonal preconditioner. Due to the special structure of the MLGK, the diagonal preconditioner can be simply written out as D_x / V_x as long as no self-loops, i.e. edges that show up along the diagonal of E_x shows up. However, as a concrete use case for graphs containing self-loops has been proposed recently, and that the kernel has been updated accordingly to accommodate such cases (fc89140a), it is not apparent that the preconditioner might also need to include the diagonal A_x \odot E_x part. Not including that is technically not a bug since a preconditioner does not need to be exact for CG to converge. However, it might warrant some further investigation just to make sure that such an omission does not degrade convergence or causes the solver to converge to the wrong solution.