gpu-sort
v1.0.3
Published
GPU accelerated asynchronous sorting
Downloads
11
Maintainers
Readme
gpu-sort
GPU accelerated asynchronous sorting
Why?
WebGL seems underutilized and sorting asynchronously is really handy.
Installation
npm install gpu-sort
Example
import * as gpu from "gpu-sort";
let numbers = new Float64Array([5, 4, 3, 2, 1, 0]);
// sort in place
gpu.sort(numbers);
// sort in place asynchronously
gpu.sortAsync(numbers).then(() => console.log("sorted!"));
NodeJS support
import * as gpu from "gpu-sort";
// For NodeJS an emulation library must be provided as it doesn't support WebGL
gpu.setWebGLContext(require("gl")(1, 1));
// sort using webgl emulated context
gpu.sort(foo);
Benchmarks
https://demskie.github.io/gpu-sort
Limitations
- Only TypedArrays are supported.
- When sorting 8bit and 16bit numbers GPU acceleration is disabled (as it seems rather pointless).
- The maximum number of elements that can be sorted is constrained by the max texture width squared. For example
4096 ^ 2 = 16,777,216 (32bit)
or4096 ^ 2 / 2 = 8,388,608 (64bit)
. This can be increased in the future by up to 8 times by multiplexing the data across multiple framebuffers.