About this project

This project aims to improve the implementation of NumRuby and Ruby-Sparse libraries. The developer is Udit Gulati. The project plan consists of the view support in NumRuby and supports of the following features in Ruby-Sparse:

What is NumRuby

NumRuby is the library to reimplement of the popular dense matrix library NMatrix. The purpose of NumRuby's reimplementation is improvements of the performance and the scalability. It has already shown up-to 100x faster than NMatrix for the fundamental features such as element-wise operations.

In this project, the developer aims to support view access in NumRuby. Adding view support enables us to avoid creating copy when we access subregion of the original matrix. It will realize to save a lot of execution time and memory consumption by copying data.

What is Ruby-Sparse

Ruby-Sparse is the library to support sparse matrix in several types of sparse formats.

In many real-world problems, we often encounter to handle matrices consists of a lot of zero elements. If such matrices are very large, handling them in NumRuby is much wasteful of memory. Using sparse matrix, we can reduce the memory usage by avoiding to hold zero-elements. Moreover, we can also reduce the computation time by using specialized algorithms for certain sparse matrix formats.

In this project, the developer aims to support 4 sparse matrix formats: COO, CSR, CSC, and DIA. These formats are also supported in SciPy library in Python.

Evaluation of the Project