First, Blas(Basic Linear Algebra Subprograms) is a collection of highly optimized low level functions performing standard linear algebra operations such as scaling, dot product and matrix multiplication. Therefore it is desirable to make use of these functions for optimal performance.
The major advantage of the modified Gram-Schmidt(MGS) over the classic Gram-Schmidt is that it offers better stability by rearranging the order of operations. Threfore it is often used in practice. Unfortunately, the MGS cannot be expressed by BLAS routines and requires additional communication when implemented in parallel.
In practice you will resort to some parallel programming language such as OpenMP or CUDA, if you own a graphics card. In the article http://www.drdobbs.com/go-parallel/article/print?articleId=240006334&siteSectionName= they mention a speed up of a factor 3 over serial implementation using OpenMP and almost a factor 9 when using OpenACC with a problem size of $10^3 \times 10^3$. You may also take a look at http://link.springer.com/article/10.1140/epjst/e2012-01638-7#page-1 for a comparison between GPU and CPU implementations.