You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AVX1无AVX2环境下m256向量水平最大值计算及归一化实现

AVX1环境下__m256向量最大值计算实现(无AVX2支持)

我自己摸索出了针对AVX1(无AVX2)环境下计算8浮点数__m256向量最大值的方案,没找到同类公开答案,特意分享给有需要的开发者。

以下是具体实现,最终_max会被填充为输入向量x的最大值,可直接用于归一化等场景:

__m256 _inv2_max;

// 计算向量x的最大值并广播到整个向量
__m256 _inv = _mm256_permute_ps(x, 0b00011011);
__m256 _max = _mm256_max_ps(x, _inv);

_inv2_max = _mm256_permute_ps(_max, 0b000000010);
_max = _mm256_max_ps(_inv2_max, _max);

__m128 vlow  = _mm256_castps256_ps128(_max);
__m128 vhigh = _mm256_extractf128_ps(_max, 1);
__m128 a[1] = {_mm_permute_ps(_mm_max_ps(vlow, vhigh), 0b00000000)};

_max = _mm256_broadcast_ps(a);

注:_mm_max_ps(vlow, vhigh)计算后,最大值已位于结果向量的索引0位置,本实现将该最大值广播至_max的所有元素位置。

内容的提问来源于stack exchange,提问作者Vadim Kashtanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:51:01