gpuZipWith (Function)

Signature: gpuZipWith(a: GpuBuffer<int8> | GpuBuffer<int16> | GpuBuffer<int32> | GpuBuffer<int> | GpuBuffer<uint8> | GpuBuffer<uint16> | GpuBuffer<uint32> | GpuBuffer<float16> | GpuBuffer<float32> | GpuBuffer<float> | GpuBuffer<bool>, b: GpuBuffer<t1>, kernel: (t0, t1) -> t2) -> Result<GpuBuffer<t2>, Error>

Description: Combines two buffers elementwise with a pure binary kernel. The result takes the shorter operand's length. Allocation, dispatch or synchronization failure returns Error with its reason.

Parameters

  • a (GpuBuffer<int8> | GpuBuffer<int16> | GpuBuffer<int32> | GpuBuffer<int> | GpuBuffer<uint8> | GpuBuffer<uint16> | GpuBuffer<uint32> | GpuBuffer<float16> | GpuBuffer<float32> | GpuBuffer<float> | GpuBuffer<bool>): The left buffer
  • b (GpuBuffer<t1>): The right buffer
  • kernel ((t0, t1) -> t2): The pure (a, b) element function

Returns: Result<GpuBuffer<t2>, Error>

Example

match toGpu([2, 3]) {
    Success { value } => { let a = value
    match toGpu([4, 5]) {
        Success { value } => { let b = value
        match gpuZipWith(a, b, wrapMul) {
            Success { value } => match gpuGet(value, 1) {
                Success { value } => print(value)
                Error { message } => print(message)
            }
            Error { message } => print(message)
        }
        }
        Error { message } => print(message)
    }
    }
    Error { message } => print(message)
}