1. A method of performing a matrix operation that operates with first and second sparse matrices to produce a sparse results matrix, the method comprising: distributing non-zero matrix elements of the first sparse matrix and non-zero matrix elements of the second sparse matrix among a plurality of node processors, each of the node processors having memory for storing non-zero matrix elements; mapping matrix elements of the sparse results matrix across the plurality of node processors; receiving, by each node processor from the other node processors, one or more non-zero matrix elements of the first sparse matrix that had been distributed to those other node processors; generating, by each node processor, in accordance with the matrix operation, partial results based on the non-zero matrix elements of the first sparse matrix received by that node processor from the other node processors and on the non-zero matrix elements of the second sparse matrix distributed to that node processor; receiving, by each node processor from the other node processors, those partial results generated by the other node processors and associated with the matrix elements of the sparse results matrix mapped to that node processor; generating, by each node processor, a final value for each matrix element of the sparse results matrix mapped to that node processor based on the partial results generated by that node processor and on the partial results received from the other node processors associated with that matrix element of the sparse results matrix.