gpuFilter (Function)

Signature: gpuFilter(buffer: GpuBuffer<int8> | GpuBuffer<int16> | GpuBuffer<int32> | GpuBuffer<int> | GpuBuffer<uint8> | GpuBuffer<uint16> | GpuBuffer<uint32> | GpuBuffer<float16> | GpuBuffer<float32> | GpuBuffer<float> | GpuBuffer<bool>, predicate: (t0) -> bool) -> Result<GpuBuffer<t0>, Error>

Description: Stream compaction: keeps the elements a pure predicate accepts, preserving order. Allocation, dispatch or synchronization failure returns Error with its reason.

Parameters

  • buffer (GpuBuffer<int8> | GpuBuffer<int16> | GpuBuffer<int32> | GpuBuffer<int> | GpuBuffer<uint8> | GpuBuffer<uint16> | GpuBuffer<uint32> | GpuBuffer<float16> | GpuBuffer<float32> | GpuBuffer<float> | GpuBuffer<bool>): The source buffer
  • predicate ((t0) -> bool): The pure element predicate

Returns: Result<GpuBuffer<t0>, Error>

Example

match toGpu([1, 2, 3, 4]) {
    Success { value } => { let buffer = value
    match gpuFilter(buffer, fn(x) => x % 2 == 0) {
        Success { value } => match fromGpu(value) {
            Success { value } => forEachList(value, print)
            Error { message } => print(message)
        }
        Error { message } => print(message)
    }
    }
    Error { message } => print(message)
}