首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本征_mm512_round_ps缺失于AVX512

本征_mm512_round_ps缺失于AVX512
EN

Stack Overflow用户
提问于 2018-06-14 10:10:53
回答 1查看 681关注 0票数 2

我缺少了AVX512的内部AVX512(它只适用于KNC)。知道为什么没有这个吗?

什么是好的解决办法?

  • _mm256_round_ps应用于上、下半部分,并将结果融合?
  • 使用有一个参数为零的_mm512_add_round_ps

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 14:53:30

TL:DR: AVX512F

__m512 nearest_integer = _mm512_roundscale_ps(input_vec, _MM_FROUND_TO_NEAREST_INT|_MM_FROUND_NO_EXC);

相关: AVX512DQ _mm512_reduce_pd_ps将减去整数部分(以及指定数量的前导分数位),范围--将您的输入减少到小数部分。vreducepd的细节最多。

EVEX前缀允许重写FP指令的默认舍入方向{sae}。(这就是..._round_ps()版本的本质。)但是它没有“循环到整数”选项;为此您仍然需要一个单独的asm指令。

vroundps xy, xy/mem, imm8没有升级到AVX512。实际上是这样的:相同的操作码为EVEX版本提供了一个新的助记符,使用SSE和VEX编码中保留的高4位的即时代码。

vrndscaleps,xyz /mem/m32cast,imm8有ss/sd/ps/pd的口味。-- imm8的高4位指定要循环到的分数位数。在这些术语中,舍入到最近的整数等于0位的舍入。舍入到最近的0.5将舍入到1小数位。这与缩放2^M,舍入到最近的整数,然后再向下缩放(没有溢出)是一样的。

我认为字段是无符号的,所以你不能用M=-1对偶数进行平方。ISA参考手册没有提到签名,所以我倾向于不签名是最有可能的。

字段的低4位指定舍入模式,如roundps。和往常一样,指令有图表有图表版本(因为它是字母第一的)。

上面的4位= 0,它的行为与roundps**:相同--它们对低4位使用相同的编码。**这些指令具有相同的操作码,只是不同的前缀,这不是巧合。

(我很好奇SSE或VEX roundpd在AVX512 CPU上是否真的会根据上面的4位进行缩放;它说它们是“保留的”,而不是“忽略的”。但可能不是。)

__m512 _mm512_roundscale_ps( __m512 a, int imm); 是不起眼的本质。见 英特尔的内部查找器

合并掩蔽+SAE覆盖版本是__m512 _mm512_mask_roundscale_round_ps(__m512 s, __mmask16 k, __m512 a, int imm, int sae);。但是,对于sae操作数,roundscale已经不能用它的imm8做任何事情,所以这是没有意义的。

_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC 您可以使用等常量 _mm256_round_pd,将其向上、向下或截断到零,或者通常最接近偶数的地方,这是IEEE的默认舍入模式。或者_MM_FROUND_CUR_DIRECTION来使用任何当前模式。_MM_FROUND_NO_EXC取消在MXCSR中设置不精确的异常位。

您可能想知道,当您只需要使用EVEX前缀来用vrndscaleps vrndscaleps zmm0 {k1}, zmm1, {rz-sae}覆盖四舍五入方向时,为什么需要任何直接位来指定舍入方向(或者不管语法是什么;似乎不接受我找到的任何示例)。

答案是,显式舍入仅适用于512位向量或标量,并且仅适用于寄存器操作数。(它重新使用3个EVEX位来设置向量长度(如果支持AVX512VL ),并区分广播内存操作数和向量。基于上下文重载EVEX位,以便将更多功能打包到有限的空间中。)

因此,在imm8中使用舍入控件可以执行vrndscaleps zmm0{k1}, [rdi]{m32bcst}, imm8从内存中广播浮点、包围它并根据掩码寄存器k1将其合并到现有寄存器中。假设与vroundps相同,所有指令都是在SKX上解码到3 uop的单一指令中。(http://agner.org/optimize/)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50854991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档