GPU Programming in Finance Course Outline - Feedback requested I'm looking for feedback on an in


I’m looking for some community feedback on the course outline for an in-house training course for programmers in finance (with an emphasis on trading and risk). I’m trying to cover a lot of ground in 3-days of training, so I want to make sure I’m not leaving out, or putting in, something that doesn’t belong.

Be harsh, be brutal, don’t hold back! I want the course to be focused and cover the really important stuff.

– Andrew

Course title: “GPU Programming For Quantitative Finance And Risk”

This is a 3-day in-house training course for Quants, Risk Professionals and Programmers in Quantitative Finance. It is a hands-on class in which students will write GPU enhanced programs throughout.

Course at-a-glance:

Day 1

9:00am A brief history of GPGPU programming / Introduction to GPGPU platforms: CUDA, OpenCL, DirectX Compute and commercial offerings / Why choose CUDA?
9:45am Overview of the CUDA architecture / The CUDA tool chain / Building and debugging CUDA programs / Profiling CUDA programs
10:30am Break
11:00am First steps in CUDA programming / Kernels and threads
11:45am Control flow in CUDA / Numerics and floating point
12:30pm Lunch
1:30pm GPU hardware architecture in-depth / Stream processors / Memory from a hardware perspective
2:15pm Thread / Memory hierarchies in CUDA
3:00pm Break
3:30pm Structuring CUDA programs to make best use of available hardware
4:15pm Review and hands-on programming
5:30pm Class ends

Day 2

9:00am Parallel programming patterns
9:45am CUDA libraries (using and building)
10:30am Break
11:00am Advanced memory management / Large data sets
11:45am Profiling & optimizing CUDA programs
12:30pm Lunch
1:30pm More advanced patterns for CUDA programs
2:15pm More advanced host/device interaction
3:00pm Break
3:30pm Multi-GPU card and cluster programming with CUDA
4:15pm Review and hands-on programming
5:30pm Class ends

Day 3

9:00am Problems in finance and risk that are a good fit for the GPU
9:45am Interfacing GPU programs with Excel [**]
10:30am Break
11:00am Case study – Derivatives pricing
11:45am Case study – Monte-Carlo simulation
12:30pm Lunch
1:30pm Case study - Risk
2:15pm Case study – Tick data
3:00pm Break
3:30pm Case study – Real-time event processing/trading
4:15pm Review and hands-on programming
5:30pm Class ends

[**] Note of explanation: The simple fact is that for much of finance, Excel is the “front-end” of choice, and certainly for many trading desks. This means that if it doesn’t work with Excel, no one will likely use it. Consequently, this part of the course deals with how to use Excel as a front-end for CUDA enabled programs. Data out, data in, program control from within Excel, and that sort of thing for which I’ve built a bunch of tools to help with that task.

PDF version attached.
GPU_Course_Outline___CUDA_Forum.pdf (29 KB)

If you’re introducing people to CUDA for the first time, based on a bunch of tutorials I’ve done I’d recommend to start with programming/code examples and do architecture later. Focusing in architecture first creates a lot of questions and burns a lot of time, and it doesn’t help a whole lot with the basics of programming. I found that it was useful to give people something solid to grab onto to start and then go from there.

I would also recommend having a number of small hands-on exercises interleaved with lectures, as opposed to one contiguous session at the end. That way the necessary concepts are still fresh in the attendees minds, whereas they forget the details by end of day.

You may want to take a look at the slides on CUDA basics attached in this thread:
CUDA C Programming Best Practices Guide released, Optimization guidelines
There’s a number of suggestions from readers you may find helpful as well.


That’s very useful. Your suggestion of “showing some code” first, and then “show the architecture” does make some sense. I’ll seriously consider doing that.

As to the code examples. Everyone in the class will have a laptop and access to a CUDA machine on the network to run code. The plan is to have people use their laptops to play with code examples throughout the talk. The coding session at the end of the day is really to ask questions and for me to “circulate” as they run their own code and catch up with any example code they didn’t get running during the day. So actual format is: code throughout the day, and a block of time at the end of the day to tie up loose ends. I should perhaps have made that more clear.

I’ll check out your linked material. Many thanks.

Hi,thanks for posting. I definitely agree with paulius. By the way,any updates on your training course by now?

Hope it’s running perfectly. Hope to hear from you soon…Goodluck!



Placement financier