gpuMap (Function)
Signature: gpuMap(buffer: GpuBuffer<int8> | GpuBuffer<int16> | GpuBuffer<int32> | GpuBuffer<int> | GpuBuffer<uint8> | GpuBuffer<uint16> | GpuBuffer<uint32> | GpuBuffer<float16> | GpuBuffer<float32> | GpuBuffer<float> | GpuBuffer<bool>, kernel: (t0) -> t1) -> Result<GpuBuffer<t1>, Error>
Description: Applies a pure kernel to every buffer element independently, one thread per element when OSPREY_GPU selects Metal or OpenCL. The compiler rejects a kernel that performs any effect a handler must discharge at runtime; an effect a static handler has already erased is gone before the check. 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 - kernel (
(t0) -> t1): The pure per-element function
Returns: Result<GpuBuffer<t1>, Error>
Example
match toGpu([1, 2, 3]) {
Success { value } => { let buffer = value
match gpuMap(buffer, fn(x) => wrapMul(x, x)) {
Success { value } => match gpuGet(value, 2) {
Success { value } => print(value)
Error { message } => print(message)
}
Error { message } => print(message)
}
}
Error { message } => print(message)
}