Single-core, multi-core (openmp), multi machine(mpi) and GPU (CUDA) matrix multiplication algorithm. MIEIC Parallel Computing course assignments.