Table of Contents
Fetching ...

Black-Scholes Option Pricing on Intel CPUs and GPUs: Implementation on SYCL and Optimization Techniques

Elena Panova, Valentin Volokitin, Anton Gorshkov, Iosif Meyerov

TL;DR

The paper addresses whether performance-portable high-performance code for Black-Scholes option pricing can be achieved across Intel CPUs and GPUs using SYCL/DPC++ within the oneAPI framework. It starts from a CPU-optimized OpenMP baseline, then ports to DPC++/SYCL and applies a sequence of device-aware optimizations for CPUs and GPUs, including vectorization, precision tuning, NUMA-awareness, and memory-management strategies (Buffers&Accessors vs USM). The results show the DPC++ CPU version runs within about 10% of the optimized C++ baseline, while GPU performance is constrained by memory bandwidth, highlighting the importance of data-transfer strategies and memory layouts. The work provides concrete, actionable guidance for migrating high-performance C++ HPC codes to SYCL/oneAPI, demonstrating portable performance with device-specific optimizations and underscoring memory bandwidth as a key bottleneck. Overall, the study validates the potential of SYCL/DPC++ for portable, high-performance finance workloads and offers practical optimization patterns for future heterogeneous architectures.

Abstract

The Black-Scholes option pricing problem is one of the widely used financial benchmarks. We explore the possibility of developing a high-performance portable code using the SYCL (Data Parallel C++) programming language. We start from a C++ code parallelized with OpenMP and show optimization techniques that are beneficial on modern Intel Xeon CPUs. Then, we port the code to SYCL and consider important optimization aspects on CPUs and GPUs (device-friendly memory access patterns, relevant data management, employing vector data types). We show that the developed SYCL code is only 10% inferior to the optimized C++ code when running on CPUs while achieving reasonable performance on Intel GPUs. We hope that our experience of developing and optimizing the code on SYCL can be useful to other researchers who plan to port their high-performance C++ codes to SYCL to get all the benefits of single-source programming.

Black-Scholes Option Pricing on Intel CPUs and GPUs: Implementation on SYCL and Optimization Techniques

TL;DR

The paper addresses whether performance-portable high-performance code for Black-Scholes option pricing can be achieved across Intel CPUs and GPUs using SYCL/DPC++ within the oneAPI framework. It starts from a CPU-optimized OpenMP baseline, then ports to DPC++/SYCL and applies a sequence of device-aware optimizations for CPUs and GPUs, including vectorization, precision tuning, NUMA-awareness, and memory-management strategies (Buffers&Accessors vs USM). The results show the DPC++ CPU version runs within about 10% of the optimized C++ baseline, while GPU performance is constrained by memory bandwidth, highlighting the importance of data-transfer strategies and memory layouts. The work provides concrete, actionable guidance for migrating high-performance C++ HPC codes to SYCL/oneAPI, demonstrating portable performance with device-specific optimizations and underscoring memory bandwidth as a key bottleneck. Overall, the study validates the potential of SYCL/DPC++ for portable, high-performance finance workloads and offers practical optimization patterns for future heterogeneous architectures.

Abstract

The Black-Scholes option pricing problem is one of the widely used financial benchmarks. We explore the possibility of developing a high-performance portable code using the SYCL (Data Parallel C++) programming language. We start from a C++ code parallelized with OpenMP and show optimization techniques that are beneficial on modern Intel Xeon CPUs. Then, we port the code to SYCL and consider important optimization aspects on CPUs and GPUs (device-friendly memory access patterns, relevant data management, employing vector data types). We show that the developed SYCL code is only 10% inferior to the optimized C++ code when running on CPUs while achieving reasonable performance on Intel GPUs. We hope that our experience of developing and optimizing the code on SYCL can be useful to other researchers who plan to port their high-performance C++ codes to SYCL to get all the benefits of single-source programming.
Paper Structure (15 sections, 2 equations, 2 figures, 3 tables)

This paper contains 15 sections, 2 equations, 2 figures, 3 tables.

Figures (2)

  • Figure 1: The Roofline model of the optimized Black-Scholes C++ code on the CPU. The diagram is plotted by Intel Advisor from OneAPI Toolkit 2022.1. The red point denotes the main Black-Scholes computational loop.
  • Figure 2: The Roofline model of the Black-Scholes DPC++ code on the GPU. The diagram is plotted by Intel Advisor from OneAPI Toolkit 2022.1. The red point denotes the main computational kernel.