• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

MPI/OpenMP/High Performance Programming

What's the value of this in quant circles? My PhD involves doing quite a lot of optimisations to code so that it runs faster (as a very simplistic example, arranging loops for optimum memory access) and also some MPI and OpenMP. Is there any value in knowing this stuff for quant work? I assume most firms don't have big supercomputers hence MPI is largely redundant, but is it performance to have high performance code, or just code that works?
I also curious about this topic. I feel that its logical hedge funds start to adopt this technology. For instance, you probably need calculate the most likely path (Viberti) in your HMM whenever your data refreshes every 30 secs. A normal computer probably won't do it if you have too many states or mixtures.

My small contribution about OpenMP - In a section where I had to make calculates of an array of about 100 entries, I could easily implement OpenMP to create four loops, each looking at 25 entries of the data. It made the calculations much quicker though I had to look out for data dependencies.
there is nice support for parallel programming in R using MPI, so i guess some people do use it ... It is especially good when you can run some/all steps of a loop on a different CPU. Apart from that, speeding up things will always be nice good especially when can be done automatically.

Daniel Duffy

C++ author, trainer
Some other interesting libraries are Microsoft's PPL (C++), TPL (C#), Intel's TBB and Boost Thread. Some have built-in parallel design patterns which helps developer productivity.

Visual Studio 2010 has OpenMP version 2.0. PPL and OpenMP but PPL allows dynamic scheduling whereas OpenMP uses compile-time pragmas.

MPI is a standard in scientific HPC applications.