ferrotensor_backend/engine/
quant.rs1use super::{groups64, ComputeEngine};
4use crate::{UnifiedTensor, WgpuContext};
5
6impl ComputeEngine {
7 pub fn dequantize(&self, ctx: &WgpuContext, input: &UnifiedTensor, out: &UnifiedTensor) {
10 let words = input.shape.iter().product::<usize>().div_ceil(4);
11 self.run(
12 ctx,
13 &self.dequant,
14 &[(0, input.buffer()), (1, out.buffer())],
15 groups64(words),
16 );
17 }
18
19 pub fn affine_dequantize(
22 &self,
23 ctx: &WgpuContext,
24 weight: &wgpu::Buffer,
25 scales: &wgpu::Buffer,
26 biases: &wgpu::Buffer,
27 out: &UnifiedTensor,
28 ) {
29 self.run(
30 ctx,
31 &self.affine_dequant,
32 &[(0, weight), (1, scales), (2, biases), (3, out.buffer())],
33 groups64(out.shape.iter().product()),
34 );
35 }
36}