Parallel Scientific Computing in C++ and MPI

George Em Karniadakis, Robert M. Kirby II

Mentioned 1

Accompanying CD-ROM has a software suite containing all the functions and programs discussed.

More on

Mentioned in questions and answers.

I have a fair hang of programming in various languages. I have been implementing my codes for research using MATLAB (during the past few months) and for the first time really noticed the difference in execution speed of MATLAB v$ C. (As much as I love the blazingly fast prototyping capabilities).

I am looking to pickup C++ and start using it in my research. I am aware of OOP and have programmed fair bit of Java (relatively long back) and C++ (even longer back). I would like to really get deep into C++ now and hence need suggestions for resources on the same:

  • What C++ things I need to pick up (STLs and. ) to really make good use of C++?
  • What is a good tutorial/manual to get started with?
  • What are the numerical/scientific libraries for C++? GSL? Is there a equivalent (features) of Scipy/Numpy for C++?

I shall be programming on Linux, so I shall be using g++ .

Any pointers to previous SO questions also appreciated.

You'll want to get to grips with parallel programming as quickly as possible. For message-passing I like this book by Karniadakis and Kirby. Of the books on OpenMP, for distributed-memory programming, this one is the best.

If you can get access to them, then Intel's Threading Building Blocks, Maths Kernel Library, and Integrated Performance Primitives are good to have. If not, there are plenty of open source alternatives, start looking at Netlib.

Oh, I almost forgot BOOST, which is a must.

Realated tags