SystemML has a preliminary set of GPU implementation for its primitive operations (Matmult, reductions, neural net operations among others). Currently, these GPU operations work when SystemML is run on a single machine (either using the Standalone mode or Spark mode). Programs written in the external DSLs (DML & PyDML) and internal DSLs (Python and Scala) can enable the use of these GPUs.
SystemML is aware of sparsity in matrix blocks and encodes them differently. It has 3 different types of Sparse formats (CSR, COO & a custom MCSR). A lot of the GPU operations are implemented for dense matrix blocks; for some GPU operations, when sparse matrices are encountered, they are first converted to dense and then sent to the GPU.
- This project is to implement CUDA kernels for Sparse Matrix blocks
- Operations to be implemented include reductions, element-wise operations, neural network operations among others
This project is fairly isolated from the internal compiler & optimizer, therefore a thorough knowledge of the entire system will not be needed.
Knowledge of CUDA programming is preferred.
For a initial implementation, the most efficient CUDA kernel is not required.
Rating - Medium