tiny.simd.dotBFloat16Assume
Defined in dot.
Source
Source: lib/simd/src/dot.zig:46
zig
pub fn computeBFloatAssume( comptime D: type, a: []const bfloat.BFloat16, b: []const bfloat.BFloat16, count: usize, comptime assumptions: Assumptions,) f32 { requireBFloatTag(D); validateInputs(D.lane_count, a.len, b.len, count, assumptions); if (D.lane_count < 2) return computeBFloatScalar(a, b, count); const DF = D.repartition(f32); var sum0: DF.Vector = @splat(0); var sum1: DF.Vector = @splat(0); var sum2: DF.Vector = @splat(0); var sum3: DF.Vector = @splat(0); var index: usize = 0; while (index + 2 * D.lane_count <= count) : (index += 2 * D.lane_count) { const a0 = bfloat.load(D, a[index..]); const b0 = bfloat.load(D, b[index..]); sum0 = bfloat.reorderWidenMulAccumulate(DF, a0, b0, sum0, &sum1); const a1 = bfloat.load(D, a[index + D.lane_count ..]); const b1 = bfloat.load(D, b[index + D.lane_count ..]); sum2 = bfloat.reorderWidenMulAccumulate(DF, a1, b1, sum2, &sum3); } if (index + D.lane_count <= count) { const av = bfloat.load(D, a[index..]); const bv = bfloat.load(D, b[index..]); sum0 = bfloat.reorderWidenMulAccumulate(DF, av, bv, sum0, &sum1); index += D.lane_count; } if (!assumptions.multiple_of_vector and index != count) { const remaining = count - index; const av = loadBFloatTail(D, a[index..], remaining, assumptions.padded_to_vector); const bv = loadBFloatTail(D, b[index..], remaining, assumptions.padded_to_vector); sum2 = bfloat.reorderWidenMulAccumulate(DF, av, bv, sum2, &sum3); } return reduce.sum(DF, (sum0 + sum1) + (sum2 + sum3));}Source: lib/simd/src/root.zig:493
zig
pub const dotBFloat16Assume = dot.computeBFloatAssume;Complete call list
7 direct calls.
tiny.simd.bfloat.load[function] atlib/simd/src/bfloat.zig:64tiny.simd.bfloat.reorderWidenMulAccumulate[function] atlib/simd/src/bfloat.zig:170lib.simd.src.dot.computeBFloatScalar[function] — private source atlib/simd/src/dot.zig:247in nearest public ownertiny.simd.dotlib.simd.src.dot.loadBFloatTail[function] — private source atlib/simd/src/dot.zig:224in nearest public ownertiny.simd.dotlib.simd.src.dot.requireBFloatTag[function] — private source atlib/simd/src/dot.zig:281in nearest public ownertiny.simd.dotlib.simd.src.dot.validateInputs[function] — private source atlib/simd/src/dot.zig:257in nearest public ownertiny.simd.dottiny.simd.reduce.sum[function] atlib/simd/src/reduce.zig:3
Audit
| Definitions | 1 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |