Parallel algorithms for matrix multiplication