MCPcopy Create free account
hub / github.com/antirez/ds4 / config_validate_model

Function config_validate_model

ds4.c:3888–3998  ·  view source on GitHub ↗

Validate metadata values that affect semantics: attention shape, HC count, * expert routing, RoPE scaling, compression ratios, and SwiGLU clamp. */

Source from the content-addressed store, hash-verified

3886 for (int i = 0; i < nb; i++) {
3887 int isum = 0;
3888 for (int j = 0; j < QK_K; j++) {
3889 isum += (int)x[i].qs[j] * (int)y[i].qs[j];
3890 }
3891 sum += x[i].d * y[i].d * (float)isum;
3892 }
3893#endif
3894 *s = sum;
3895}
3896
3897static void ds4_vec_dot_q8_K_pair_q8_K(
3898 int n, float *s0, float *s1,
3899 const block_q8_K *x0, const block_q8_K *x1,
3900 const block_q8_K *y) {
3901 const int nb = n / QK_K;
3902 float sum0 = 0.0f;
3903 float sum1 = 0.0f;
3904#if defined(__ARM_NEON) && defined(__ARM_FEATURE_DOTPROD)
3905 for (int i = 0; i < nb; i++) {
3906 int32x4_t isum0 = vdupq_n_s32(0);
3907 int32x4_t isum1 = vdupq_n_s32(0);
3908 for (int j = 0; j < QK_K; j += 16) {
3909 const int8x16_t yv = vld1q_s8(y[i].qs + j);
3910 isum0 = vdotq_s32(isum0, vld1q_s8(x0[i].qs + j), yv);
3911 isum1 = vdotq_s32(isum1, vld1q_s8(x1[i].qs + j), yv);
3912 }
3913 sum0 += x0[i].d * y[i].d * (float)vaddvq_s32(isum0);
3914 sum1 += x1[i].d * y[i].d * (float)vaddvq_s32(isum1);
3915 }
3916#else
3917 for (int i = 0; i < nb; i++) {
3918 int isum0 = 0;
3919 int isum1 = 0;
3920 for (int j = 0; j < QK_K; j++) {
3921 const int yv = (int)y[i].qs[j];
3922 isum0 += (int)x0[i].qs[j] * yv;
3923 isum1 += (int)x1[i].qs[j] * yv;
3924 }
3925 sum0 += x0[i].d * y[i].d * (float)isum0;
3926 sum1 += x1[i].d * y[i].d * (float)isum1;
3927 }
3928#endif
3929 *s0 = sum0;
3930 *s1 = sum1;
3931}
3932
3933static DS4_MAYBE_UNUSED void ds4_vec_dot_iq2_xxs_q8_K(int n, float *s, const block_iq2_xxs *x, const block_q8_K *y) {
3934 const int nb = n / QK_K;
3935
3936#if defined(__ARM_NEON) && defined(__ARM_FEATURE_DOTPROD)
3937 float sumf = 0.0f;
3938
3939 for (int i = 0; i < nb; i++) {
3940 const float d = f16_to_f32(x[i].d) * y[i].d;
3941 const uint16_t *q2 = x[i].qs;
3942 const int8_t *q8 = y[i].qs;
3943 float sumf1 = 0.0f;
3944 float sumf2 = 0.0f;
3945

Callers 1

ds4_engine_openFunction · 0.85

Calls 13

required_u32Function · 0.85
model_get_u32Function · 0.85
config_expect_u32Function · 0.85
model_get_u64_compatFunction · 0.85
required_f32Function · 0.85
config_expect_f32Function · 0.85
model_get_f32_compatFunction · 0.85
required_boolFunction · 0.85

Tested by

no test coverage detected