Includes a GPU accelerated backend for all the currently available interpolation functions. The GPU implementation uses CUDA kernels created with numba. Using this backend results in a noticeable performance boost in large datasets.
A CUDA compatible graphics card (with proper drivers) is required for the GPU backend to function properly.
The backend used by interpolation functions can be changed in two ways:
The backend argument can be provided to any render/interpolation function, set this to gpu for the CUDA backend.
The backend property of a SarracenDataFrame can be set. Any interpolation/render function used with this dataset will use the defined backend.
An example of performance differences between backends:
2D Rendering - Small dataset (2.62MB)
cpu: 274ms
gpu: 748ms
2D Rendering - Large dataset (1.31GB)
cpu: 7.14s
gpu: 1.78s
Testbench:
CPU: AMD Ryzen 9 3900X
GPU: NVIDIA GeForce RTX 2080 Super
As well, the CPU backend has been modified to remove a critical race condition. CPU interpolation should now complete without noise.
Includes a GPU accelerated backend for all the currently available interpolation functions. The GPU implementation uses CUDA kernels created with numba. Using this backend results in a noticeable performance boost in large datasets.
A CUDA compatible graphics card (with proper drivers) is required for the GPU backend to function properly.
The backend used by interpolation functions can be changed in two ways:
backend
argument can be provided to any render/interpolation function, set this togpu
for the CUDA backend.backend
property of a SarracenDataFrame can be set. Any interpolation/render function used with this dataset will use the defined backend.An example of performance differences between backends: 2D Rendering - Small dataset (2.62MB)
cpu
: 274msgpu
: 748ms2D Rendering - Large dataset (1.31GB)
cpu
: 7.14sgpu
: 1.78sTestbench:
As well, the CPU backend has been modified to remove a critical race condition. CPU interpolation should now complete without noise.