Introduction to parallel computing: design and analysis of algorithms