Closed MBkkt closed 5 months ago
Order looks incorrect, SKYLAKE probably should checked before haswell
#if SIMSIMD_TARGET_HASWELL if (viable & simsimd_cap_haswell_k) switch (kind) { case simsimd_metric_dot_k: *m = (m_t)&simsimd_dot_f32c_haswell, *c = simsimd_cap_haswell_k; return; case simsimd_metric_vdot_k: *m = (m_t)&simsimd_vdot_f32c_haswell, *c = simsimd_cap_haswell_k; return; default: break; } #endif #if SIMSIMD_TARGET_SKYLAKE if (viable & simsimd_cap_skylake_k) switch (kind) { case simsimd_metric_dot_k: *m = (m_t)&simsimd_dot_f32c_skylake, *c = simsimd_cap_skylake_k; return; case simsimd_metric_vdot_k: *m = (m_t)&simsimd_vdot_f32c_skylake, *c = simsimd_cap_skylake_k; return; default: break; } #endif
#if SIMSIMD_TARGET_HASWELL if (viable & simsimd_cap_haswell_k) switch (kind) { case simsimd_metric_dot_k: *m = (m_t)&simsimd_dot_f16c_haswell, *c = simsimd_cap_haswell_k; return; case simsimd_metric_vdot_k: *m = (m_t)&simsimd_vdot_f16c_haswell, *c = simsimd_cap_haswell_k; return; default: break; } #endif #if SIMSIMD_TARGET_SAPPHIRE if (viable & simsimd_cap_sapphire_k) switch (kind) { case simsimd_metric_dot_k: *m = (m_t)&simsimd_dot_f16c_sapphire, *c = simsimd_cap_sapphire_k; return; case simsimd_metric_vdot_k: *m = (m_t)&simsimd_vdot_f16c_sapphire, *c = simsimd_cap_sapphire_k; return; default: break; } #endif
You are right! Can you please submit a patch for the main-dev branch?
main-dev
Ok. https://github.com/ashvardanian/SimSIMD/pull/137
Order looks incorrect, SKYLAKE probably should checked before haswell