Using MPI: Portable Parallel Programming with the Message-Passing Interface