FE529 GPU Computing in Finance
Financial Engineering (Lab)
  • Spring On Campus
In this course the students will learn the basics of CUDA programming using financial data and applications. They will learn how to use C++, Matlab and R to access the GPU in their computer and to use the Stevens GPU cluster. The course is designed for Nvidia CUDA but the basics are easily transferable to Open CL. 

Parallel programming using GPU’s is a relatively new area for multithreaded programming. It requires a certain amount of extra knowledge even for the most accomplished programmers. The objective of the course is to provide this extra for our students. Our students will be very well prepared for their future programming and software developing jobs by completing this course. This course is the first of a sequence of advanced programming courses that at the moment do not exist in any financial program at any US institution. This sequence of courses (if realized) in 5 years will make Stevens the top US institution for financial programming. It is easy to see then that the students completing this course will gain unique skills that will put them on top of other graduates.

After completing the course, students will be able to:

1.      Gain basic knowledge of parallel programming;

2.      Understand the memory management and data transfer methodology in CUDA;

      3.      Program simple financial models using CUDA platform.

Sanders, Jason, and Edward Kandrot. CUDA by example: an introduction to general-purpose GPU programming. Addison-Wesley Professional, 2010. https://developer.nvidia.com/cuda-example

HW   40%   Class work 20%    Projects  40% 

  Topic(s) Reading(s) Class Exercises (Optional) HW
Week 1 Introduction to massively parallel programming and CUDA
  • CUDA environment configuration
  • GPU Computing Overview
  • Why is parallel computing important?
  • What is CUDA?
  • Host vs Device
  • Compiling on Linux
  • Sample example using CUDA 
Week 2 Vector Addition
  • Thread, block, grid
  • Choosing Size



Week 3 Classes and Structs on Device
  • Classes and Structs
  • Julia and Mandelbrot Examples
Class Exercise  
Week 4 Events and Timing
  • Measuring Performance 
Week 5 Shared Memory and Atomic Operations
  • Shared Memory
  • Dot Product 
  • Atomic Operations



Week 6 Stencils and PDE intro
  • Heat equation implementation 


Week 7 Numerical Methods - Partial Differential Equations
  • how to parallel the computing strategy
  • Texture Memory
  • Explicit Method - Heat Equation
  • Explicit Method - Wave Equation
Week 8 Black-Scholes Model
  • GPU Simulation
  • Use PDE to solve BS equation



Week 9 cuRAND
  • Generating and Using Pseudo-random Numbers
  • https://developer.nvidia.com/curand 
Week 10 Option Pricing Models - Monte Carlo Methods
  • European Option Pricing with Monte Carlo simulation


Class Exercise  
Week 11 Generating Histograms from Real Data    



Week 12 cuBLAS (1)
  • Matrix Multiplication
  • Matrix Addition
  • https://developer.nvidia.com/cublas

Week 13

cuBLAS (2)
  • Vector Operations
  • https://developer.nvidia.com/cublas



Week 14

Final Project
  • Final Project