GPU Computing course project
This project aims to accelerate the evaluation of sparse neural networks.
The sequential code starts by converting featureVectors to CSR and the converting layer weights to CSC.The code loops over every layer ,and does spmspm multiplication(explained bellow) taking advantage of double buffering.After that it checks for non zero rows and store them into result vector. ### The SPMSPM multiplication: The SPMSPM multiplication happens by looping over non empty raws of feature vectors.Then for every non empty raw loop over all non empty column and the calculate the dot product by finding the intersction.And finally storing postive results in a CSR Form matrix.
* Bullet list Compile all versions: make
* Compile a specific version: make spnn_<version>
* Where <version> can be cpu, gpu0, gpu1, gpu2, or gpu3
By default, the following configurations are used:
* #layers: 120
* #neurons/layer : 1024
* Directory for reading input data: data
* You can provide your own configurations as follows:
./spnn_<version> -d <input directory> -l <#layers> -n <#neurons/layer>