Structure-Based Optimizations For Sparse Matrix-Vector Multiply