gpt4 book ai didi

c++ AVX512 内部相当于 _mm256_broadcast_ss()?

转载 作者:行者123 更新时间:2023-12-02 02:26:49 27 4
gpt4 key购买 nike

我正在将代码从 AVX2 重写为 AVX512。

我可以使用什么等效方法将单个 float 广播到 _mm512 vector ?在 AVX2 中它是 _mm256_broadcast_ss() 但我找不到类似 _mm512_broadcast_ss() 的东西。

最佳答案

AVX512 不需要内存源版本1的特殊内在函数。您只需使用 _mm512_set1_ps (它采用 float,而不是 float*)。如果有效的话,编译器应该使用内存源广播。 (甚至可能折叠到 ALU 指令的广播内存源中,而不是单独加载;AVX512 可以为 512 位 vector 做到这一点。)

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_set1_ps&expand=5236,4980

<小时/>

脚注 1:_mm256_broadcast_ss 甚至与 _mm256_set1_ps 分开存在的原因可能是因为 AVX1 vbroadcastss ymm, [mem] 与 AVX2 vbroadcastss ymm,xmm。某些编译器(例如 MSVC 和 ICC)允许您使用内在函数,而无需启用编译器在任何地方使用的 ISA 扩展,因此需要专门针对 AVX1 内存源版本的内在函数。

对于 AVX512,AVX512F 引入了内存和寄存器源形式,因此无需为这些编译器的用户提供微观管理允许哪些 asm 的方法。

关于c++ AVX512 内部相当于 _mm256_broadcast_ss()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59789247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com