MPI, or Message Passing Interface, is a library of functions for C,C++, and even Fortran. The purpose of this library is for you to easily create an application that fully utilizes multiple processors. Not only can you utilize multiple processors with MPI, but you can even run a single instance of a single application across multiple computers with MPI. This is the coolest, and most unique features of MPI which sets it apart from other libraries. For example, if you have a farm with 20 computes, each having a quad core processor, you can simply instantiate your program to run with 80 processors.
MPI has many advantages over other protocols. The learning curve for MPI is fairly small, and you can write an effective parallel processing application using only a handfull of MPI functions. The main functions are used to syncronize all of the threads, and to communicate from one thread to another. Depending on how you want your application to work, there are ways to broadcast information to all threads, there are ways for threads to communicate asynchronously, synchronously, etc. MPI is as simple as you want it to be, and it can also get as complicated as you want it to be. It’s important to keep in mind that because MPI is not limited to shared memory machines. This can be an advantage, or disadvantage, depending on your type of application. If a thread on one computer needs to send a massive amount of data to a thread on another computer, this could take quite some time. However, threads running on the same machine will be able to communicate very quickly with each other.
Of course, there’s a lot more to be said about MPI, but that pretty much covers the basics. MPI is an easy way for you to write an application that can harness the power of multi-core processors and even multiple computers.