High Performance Computing

Hi Folks,

Can someone enlighten me about High Performance Computing? Do we get to learn from any MFE program? Thanks.

Cheers,
M
 
I don't know much about MFE programs myself. I guess you could learn some advanced computing at school. In my experience the best way to learn supercomputing is by doing it yourself. I went to a PhD program in physics and mostly nobody is there to guide you through every step. It is tough at the beginning, but once you get the hang of it, i am sure you won't have a problem.

I guess you want to learn this for quant finance applications. I am guessing that you don't have previous knowledge on programming, do you?. Start by simulating a simple Wienner process in C++. I can give you the code if you like, but the idea is that you do it by yourself.
 

Daniel Duffy

C++ author, trainer
Can someone enlighten me about High Performance Computing? Do we get to learn from any MFE program? Thanks.

HPC is a big area, you need to define what you mean? multi-threading, parallel, shared versus distributed memory etc.

I doubt if any MFE gives HPC courses (and I don't think it's part of its core business). It is possible to write a Hello Wurld program but a thread-safe, data corruption free and speedup production code is years away.

And you need *very* good knowledge of C++ (and hardware) before jumping onto the HPC wagon. Most MFEs do not do 'sequential' C++ as far as I know. And this is an industry standard.

A free and good way to start is OpenMP or boost Thread.
 
Hi Folks,

Thank you. I know programming but not C++. I am still learning but come across this HPC. I would like to know what is the application for HPC in quant finance?

Thanks,
M
 

Christophe

Senior Software Engineer
Hi Marko,

Like Lugh said, HPC is a big area and can be performed in many ways. Depending on what you are trying to achieve you have different possibilities. For example, if you are looking to speed up Monte Carlo simulations, GPU might be an option. Other type of parallel programming pattern like MapReduce can help you to speed up certain king of processing. Then you have things like FPGA, or Clusters. When trying to speed up things, most of the time you have to adapt your programming style to the machine architecture. I know it is kind of generic as an answer, but it is simply because performance can be obtained is so many ways. I would say that it should always start with good programming habits.

Regarding the application to quant finance, HPC is used to speed up computing time in order to obtain the closest thing possible to instantaneous calculation. This is very used in HF trading, and derivatives pricing. In HF trading the need for HPC is on the full range of the application, so you have needs for data mining related operations, heavy computing algorithms, I/O, network. For derivative pricing speed is usually obtained through grid computing. There are probably more things to say that I am not aware of. From what I understand if you work as quant for a big IB, you don't need to know these things, as you will have a team dedicated to address these issues. You probably need to know more about it, if you plan to work for a smaller firm.

Hope this helps
 
And you need *very* good knowledge of C++ (and hardware) before jumping onto the HPC wagon. Most MFEs do not do 'sequential' C++ as far as I know. And this is an industry standard.

While I'd say good knowledge of hardware is indeed pre-requisite for doing HPC work, I don't think C++ knowledge is needed that much. Fortran and C are languages of HPC, C++ is not.
 

Daniel Duffy

C++ author, trainer
While I'd say good knowledge of hardware is indeed pre-requisite for doing HPC work, I don't think C++ knowledge is needed that much. Fortran and C are languages of HPC, C++ is not.

For me, C++ assumes knowledge of C as well. It is a superset of C. These days people make a distinction but at the code level there is big overlap.

Fortran is great, but the job market? HPC is a very broad term, where do lightweight threads fit in? Many apps are desk-top shared memory and HPC as term is a bit inaccurate.
 

alain

Older and Wiser
I agree. For me, C++ assumes knowledge of C as well. These days people make a distinction but at the code level there is big overlap.

Although this is true, the mental "gymnastics" is totally different between C and C++. I have found people sometime have a hard time going from C++ to C.

IMHO, going from C to C++ is not as hard depending on which subset of C++ you plan to use.
 
Hi,

On the same topic, would anyone have an idea on good MS/ PhD programs for high performance computing (specifically focussed at applications such as hedge funds)?

Thanks,

appu
 

Daniel Duffy

C++ author, trainer
Although this is true, the mental "gymnastics" is totally different between C and C++. I have found people sometime have a hard time going from C++ to C.

IMHO, going from C to C++ is not as hard depending on which subset of C++ you plan to use.

From C++ to C is a paradigm shift indeed :) Does it happen often?
 
nothing beats good old ASM when you do HPC on a single node. :D

Don't know you if you're trying to be ironic here, but actually above is mostly true. For example, if you're up to getting any kind of performance from your x86 node, you simply have to deal with SSE (either through inline assembly, or using compiler intrinsics). And even if you are dealing with something that is much nicer for programming for performance than x86, like CUDA for example, knowledge of corresponding assembly language (PTX in this particular case), could be in my experience very helpful from time to time.

Fortran is great, but the job market?

Fortran job market is doing very well, at least in my experience, that is in turn mostly in the domains (computational electromagnetics, neutron transport, molecular dynamics) that are probably involved much longer with the HPC (I use this term in kind of its "traditional" meaning, which would be closely related to scientific computations) than what is the case with quantitative finances. There exist many scientific Fortran codes that are still actively maintained, and lots of new code get written in Fortran too. And to further perceive how vibrant is Fortran community, you could for example take a look into which is the only language besides C that is possible to use for CUDA programming - it's Fortran, in the Portland Group implementation (http://www.pgroup.com/resources/cudafortran.htm). Now, don't get me wrong - C++ certainly has its own strengths, but languages like C or Fortran are much more meaningful for numerical/parallel programming, so I'll stick with my (outsider, admittedly) impression that C++ is heavily overused by quantitative finances community, at least for these particular purposes.
 

alain

Older and Wiser
I was being sarcastic and serious at the same time. There are domains where ASM is the holly grail in HPC for a single node.
 
Top