Skip to main content

cherenkov/qwen4_exp/gpu/
params.rs

1//! Host/shader ABI: preserve field order and match the Metal declarations.
2
3#[repr(C)]
4pub(super) struct IndexParams {
5    pub(super) ihd: u32,
6    pub(super) inh: u32,
7    pub(super) qk_dim: u32,
8    pub(super) ratio: u32,
9    pub(super) rot: u32,
10    pub(super) theta: f32,
11    pub(super) eps: f32,
12    pub(super) base_pos: u32,
13    pub(super) nb: u32,
14    pub(super) b0: u32,
15    pub(super) b1: u32,
16    pub(super) k: u32,
17    pub(super) max_blocks: u32,
18    pub(super) vis_stride: u32,
19    pub(super) mask_words: u32,
20}
21
22#[repr(C)]
23#[derive(Clone, Copy)]
24pub(super) struct GroupParams {
25    pub(super) n: u32,
26    pub(super) groups: u32,
27    pub(super) eps: f32,
28    pub(super) shift: f32,
29}
30
31#[repr(C)]
32pub(super) struct NormPrepParams {
33    pub(super) n: u32,
34    pub(super) groups: u32,
35    pub(super) eps: f32,
36    pub(super) inject: u32,
37}
38
39#[repr(C)]
40pub(super) struct MoeBParams {
41    pub(super) inter: u32,
42    pub(super) hidden: u32,
43    pub(super) n_u: u32,
44    pub(super) gate_w: u32,
45    pub(super) up_w: u32,
46    pub(super) down_w: u32,
47    pub(super) gate_s: u32,
48    pub(super) gate_b: u32,
49    pub(super) up_s: u32,
50    pub(super) up_b: u32,
51    pub(super) down_s: u32,
52    pub(super) down_b: u32,
53    pub(super) layer: u32,
54    pub(super) shared: u32,
55    pub(super) nb: u32,
56    pub(super) sh_gate_w: u32,
57    pub(super) sh_gate_s: u32,
58    pub(super) sh_gate_b: u32,
59    pub(super) sh_up_w: u32,
60    pub(super) sh_up_s: u32,
61    pub(super) sh_up_b: u32,
62    pub(super) sh_down_w: u32,
63    pub(super) sh_down_s: u32,
64    pub(super) sh_down_b: u32,
65    pub(super) sh_gate_vec: u32,
66    pub(super) part: u32,
67    pub(super) low_gate_w: u32,
68    pub(super) low_up_w: u32,
69    pub(super) low_down_w: u32,
70    pub(super) low_gate_s: u32,
71    pub(super) low_gate_b: u32,
72    pub(super) low_up_s: u32,
73    pub(super) low_up_b: u32,
74    pub(super) low_down_s: u32,
75    pub(super) low_down_b: u32,
76}
77
78#[repr(C)]
79pub(super) struct QmvParams {
80    pub(super) out_dim: u32,
81    pub(super) in_dim: u32,
82}
83
84#[repr(C)]
85#[derive(Clone, Copy)]
86pub(super) struct QkRopeParams {
87    pub(super) n_heads: u32,
88    pub(super) head_dim: u32,
89    pub(super) stride: u32,
90    pub(super) rot: u32,
91    pub(super) pos: u32,
92    pub(super) theta: f32,
93    pub(super) eps: f32,
94}
95
96#[repr(C)]
97pub(super) struct ConvParams {
98    pub(super) channels: u32,
99    pub(super) ksize: u32,
100}
101
102#[repr(C)]
103pub(super) struct DeltaPrepParams {
104    pub(super) n_k: u32,
105    pub(super) n_v: u32,
106    pub(super) d_k: u32,
107    pub(super) d_v: u32,
108    pub(super) eps: f32,
109    pub(super) nb: u32,
110    pub(super) snap_after: u32,
111}
112
113#[repr(C)]
114pub(super) struct AttnPartParams {
115    pub(super) n_heads: u32,
116    pub(super) n_kv: u32,
117    pub(super) head_dim: u32,
118    pub(super) t_len: u32,
119    pub(super) q_stride: u32,
120    pub(super) q_off: u32,
121    pub(super) max_blk: u32,
122    pub(super) scale: f32,
123}
124
125#[repr(C)]
126pub(super) struct KvQParams {
127    pub(super) row: u32,
128    pub(super) t0: u32,
129    pub(super) nb: u32,
130    pub(super) scale_off: u32,
131}
132
133#[repr(C)]
134pub(super) struct PleConvParams {
135    pub(super) channels: u32,
136    pub(super) ksize: u32,
137    pub(super) dilation: u32,
138    pub(super) span: u32,
139    pub(super) filled: u32,
140    pub(super) nb: u32,
141}