GPUDevice from init()
number of elements (must be a positive integer)
Float32Array input vector
stride for x (must be a positive integer)
0-based index of max |x[i]|
Returns the 0-based index of the element with the largest absolute value: $$\text{index} = \arg\max_{i} |x_i|$$ Ties are broken in favour of the lower index, matching CBLAS behaviour.
NaN handling. The search compares with >, which is false for NaN, so
NaN elements are skipped rather than selected: a vector of all NaN returns
0. This matches CBLAS except when x[0] itself is NaN — CBLAS seeds its
running maximum from x[0], and since no comparison against NaN succeeds it
returns 0 however large the later elements are, whereas this returns the
index of the largest non-NaN element. +-Infinity compares normally and is
selected as the maximum.
import { init, cleanup } from "wgblas";
import { isamax } from "wgblas/isamax";
import { sscal } from "wgblas/sscal";
import { GpuVector } from "wgblas/classes/GpuVector";
const device = await init();
const n = 5;
const scale = 2.0;
const x = new Float32Array([3, -7, 2, 5, -1]);
const xGpu = GpuVector.from(x);
console.log("x: ", x);
await sscal(device, n, scale, xGpu, 1);
const { index } = await isamax(device, n, xGpu, 1);
console.log("index (of 2x): ", index);
xGpu.destroy();
if (typeof process !== "undefined") cleanup();
GPUDevice from init()
number of elements (must be a positive integer)
GpuVector input vector
stride for x (must be a positive integer)
0-based index of max |x[i]|
Returns the 0-based index of the element with the largest absolute value: $$\text{index} = \arg\max_{i} |x_i|$$ Ties are broken in favour of the lower index, matching CBLAS behaviour.
NaN handling. The search compares with
>, which is false for NaN, so NaN elements are skipped rather than selected: a vector of all NaN returns0. This matches CBLAS except whenx[0]itself is NaN — CBLAS seeds its running maximum fromx[0], and since no comparison against NaN succeeds it returns0however large the later elements are, whereas this returns the index of the largest non-NaN element.+-Infinitycompares normally and is selected as the maximum.Browser (standalone HTML):