Toward Greener Matrix Operations by Lossless Compressed Formats
<|reference_start|>Toward Greener Matrix Operations by Lossless Compressed Formats: Sparse matrix-vector multiplication (SpMV) is a fundamental operation in machine learning, scientific computing, and graph algorithms. In this paper, we investigate the space, time, and energy efficiency of SpMV using various compressed formats for large sparse matrices, focusing specifically on Boolean matrices and real-valued vectors.   Through extensive analysis and experiments conducted on server and edge devices, we found that different matrix compression formats offer distinct trade-offs among space usage, execution time, and energy consumption. Notably, by employing the appropriate compressed format, we can reduce energy consumption by an order of magnitude on both server and single-board computers. Furthermore, our experiments indicate that while data parallelism can enhance execution speed and energy efficiency, achieving simultaneous time and energy efficiency presents partially distinct challenges. Specifically, we show that for certain compression schemes, the optimal degree of parallelism for time does not align with that for energy, thereby challenging prevailing assumptions about a straightforward linear correlation between execution time and energy consumption.   Our results have significant implications for software engineers in all domains where SpMV operations are prevalent. They also suggest that similar studies exploring the trade-offs between time, space, and energy for other compressed data structures can substantially contribute to designing more energy-efficient software components.<|reference_end|>
@article{tosoni2024toward,
    title={Toward Greener Matrix Operations by Lossless Compressed Formats},
    author={Francesco Tosoni and Philip Bille and Valerio Brunacci and Alessio De
  Angelis and Paolo Ferragina and Giovanni Manzini},
    journal={arXiv preprint arXiv:2409.18620},
    year={2024},
    archivePrefix={arXiv},
    eprint={2409.18620},
    primaryClass={cs.DS cs.PF}
}