Table of Contents
Fetching ...

CUROCKET: Optimizing ROCKET for GPU

Ole Stüven, Keno Moenck, Thorsten Schüppstuhl

TL;DR

This work addresses the CPU-bound nature of ROCKET, a time series feature extractor, by introducing CUROCKET, a CUDA-based GPU implementation that efficiently handles ROCKET's inhomogeneous random kernels. The approach leverages a careful mapping of kernel and instance computations to CUDA's grid and block structure and extends to multivariate and multi-GPU scenarios, achieving up to $11\times$ higher efficiency per watt and substantial runtime speedups. The results demonstrate scalable performance across varying dataset sizes and kernel counts, highlighting CUROCKET's suitability for large-scale TSC workloads. While PPV rounding on GPUs can induce small differences for large datasets, CUROCKET significantly expands ROCKET's practicality for real-world applications.

Abstract

ROCKET (RandOm Convolutional KErnel Transform) is a feature extraction algorithm created for Time Series Classification (TSC), published in 2019. It applies convolution with randomly generated kernels on a time series, producing features that can be used to train a linear classifier or regressor like Ridge. At the time of publication, ROCKET was on par with the best state-of-the-art algorithms for TSC in terms of accuracy while being significantly less computationally expensive, making ROCKET a compelling algorithm for TSC. This also led to several subsequent versions, further improving accuracy and computational efficiency. The currently available ROCKET implementations are mostly bound to execution on CPU. However, convolution is a task that can be highly parallelized and is therefore suited to be executed on GPU, which speeds up the computation significantly. A key difficulty arises from the inhomogeneous kernels ROCKET uses, making standard methods for applying convolution on GPU inefficient. In this work, we propose an algorithm that is able to efficiently perform ROCKET on GPU and achieves up to 11 times higher computational efficiency per watt than ROCKET on CPU. The code for CUROCKET is available in this repository https://github.com/oleeven/CUROCKET on github.

CUROCKET: Optimizing ROCKET for GPU

TL;DR

This work addresses the CPU-bound nature of ROCKET, a time series feature extractor, by introducing CUROCKET, a CUDA-based GPU implementation that efficiently handles ROCKET's inhomogeneous random kernels. The approach leverages a careful mapping of kernel and instance computations to CUDA's grid and block structure and extends to multivariate and multi-GPU scenarios, achieving up to higher efficiency per watt and substantial runtime speedups. The results demonstrate scalable performance across varying dataset sizes and kernel counts, highlighting CUROCKET's suitability for large-scale TSC workloads. While PPV rounding on GPUs can induce small differences for large datasets, CUROCKET significantly expands ROCKET's practicality for real-world applications.

Abstract

ROCKET (RandOm Convolutional KErnel Transform) is a feature extraction algorithm created for Time Series Classification (TSC), published in 2019. It applies convolution with randomly generated kernels on a time series, producing features that can be used to train a linear classifier or regressor like Ridge. At the time of publication, ROCKET was on par with the best state-of-the-art algorithms for TSC in terms of accuracy while being significantly less computationally expensive, making ROCKET a compelling algorithm for TSC. This also led to several subsequent versions, further improving accuracy and computational efficiency. The currently available ROCKET implementations are mostly bound to execution on CPU. However, convolution is a task that can be highly parallelized and is therefore suited to be executed on GPU, which speeds up the computation significantly. A key difficulty arises from the inhomogeneous kernels ROCKET uses, making standard methods for applying convolution on GPU inefficient. In this work, we propose an algorithm that is able to efficiently perform ROCKET on GPU and achieves up to 11 times higher computational efficiency per watt than ROCKET on CPU. The code for CUROCKET is available in this repository https://github.com/oleeven/CUROCKET on github.
Paper Structure (12 sections, 1 equation, 6 figures)

This paper contains 12 sections, 1 equation, 6 figures.

Figures (6)

  • Figure 1: Working principle of the ROCKET algorithm.
  • Figure 2: Working principle of CUDA.
  • Figure 3: Working principle of CUROCKET.
  • Figure 4: Principle of multivariate ROCKET.
  • Figure 5: Comparison of calculating time between CUROCKET and ROCKET, varying the number of instances, series length, and number of kernels from left to right.
  • ...and 1 more figures