问题标签 [avx512]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
967 浏览

gcc - 发行版将 GCC 升级到 5.5.0 后,AVX512 内在函数标头会产生许多错误

我的 Linux 发行版将我的 GCC 版本升级到了 5.5.0(如果我知道为什么,那该死的)。现在,当我尝试构建包含 的代码时avx512fintrin.h,会出现大量编译器错误:

等等。为什么会发生这种情况,有没有办法(希望不是太特定于发行版)来解决或规避这个问题?

PS - 如果重要,我使用 GNU/Linux Mint 18.3。

0 投票
1 回答
546 浏览

avx512 - AVX512 缺少内在的 _mm512_round_ps

我缺少_mm512_round_psAVX512 的内在特性(它仅适用于 KNC)。知道为什么这不可用吗?

什么是一个好的解决方法?

  • 适用_mm256_round_ps于上半部和下半部并融合结果?

  • 使用_mm512_add_round_ps一个参数为零?

谢谢!

0 投票
1 回答
779 浏览

c++ - 通过 avx 指令矢量化间接访问

我最近被介绍给向量指令(理论上),我对如何使用它们来加速我的应用程序感到兴奋。

我想改进的一个领域是一个非常热的循环:

但当然,所有 3 个主要编译器(msvc、gcc、clang)都拒绝对此进行向量化。我可以理解为什么,但我想得到确认。

如果我必须手动对其进行矢量化,它将是:

(1) VectorLoad "arr",这带来了 16 个 4 字节的整数,比如说到 zmm0

(2) 16个内存从zmm0[0..3]指向的地址加载到zmm1[0..3],从zmm0[4..7]指向的地址加载到zmm1[4..7]所以等等

(3)比较zmm0和zmm1

(4) 向量 popcnt 到输出中找出最高有效位并将其除以 8 得到匹配的索引

首先,向量指令可以做这些事情吗?就像他们可以做这个“收集”操作一样,即从指向zmm0的地址加载?

这是 clang 生成的:

0 投票
1 回答
914 浏览

assembly - AVX-512 中的压缩和扩展指令有什么区别?

我正在研究Intel intrinsics guide中的扩展和压缩操作。我对这两个概念感到困惑:

为了__m128d _mm_mask_expand_pd (__m128d src, __mmask8 k, __m128d a) == vexpandpd

从 a 加载连续的活动双精度(64 位)浮点元素(它们各自的位在掩码 k 中设置),并使用 writemask k 将结果存储在 dst 中(当相应的掩码位为没有设置)。

为了__m128d _mm_mask_compress_pd (__m128d src, __mmask8 k, __m128d a) == vcompresspd

将 a 中的活动双精度(64 位)浮点元素(在 writemask k 中设置了相应位的元素)连续存储到 dst,并从 src 传递其余元素。

有没有更清晰的描述或谁能解释更多?

0 投票
0 回答
340 浏览

gcc - 为什么 gcc 不提供浮点绝对值的 AVX512F 内在函数?

简短的问题:英特尔内部指南https://software.intel.com/sites/landingpage/IntrinsicsGuide说这_mm512_abs_ps适用于 AVX512F。但是,gcc 5.4 似乎没有提供这种内在特性。为什么是这样?它是否出现在以后的 gcc 版本中?

0 投票
2 回答
5367 浏览

assembly - 如何在不支持硬件的情况下测试 AVX-512 指令?

我正在尝试学习 x86-64 的新 AVX-512 指令,但我的两台计算机都不支持它们。我尝试使用各种反汇编程序(从 Visual Studio 到在线反汇编程序:12)来查看特定操作码编码的说明,但我得到的结果有些矛盾。另外,运行一些指令并查看它们的实际输出会很好。

所以我想知道是否有在线服务允许编译小型(x86-64)汇编代码并在特定处理器上运行或逐步执行它?(比如说,英特尔的 Sandy Bridge、Cannon Lake 等)

0 投票
1 回答
1062 浏览

c++ - AVX512非法指令

在我之前的帖子中,我解释说我从 AVX 开始以加速我的代码(请注意,虽然有一些共同点,但这篇帖子指的是 AVX512,而上一篇指的是 AVX2,据我所知,它们略有不同并且需要不同的编译标志)。在尝试了 AVX2 之后,我决定尝试使用 AVX512 并更改了我的 AVX2 功能:

因为我认为应该是它的等价物:

在非 AVX 形式中是:

编译代码后,我收到以下错误:

令我惊讶的是,这个错误发生在函数中的调用sqrtgetData。如果我删除sqrt呼叫,则错误会进一步出现在__m512d divisor = _mm512_set_pd((d..... 关于正在发生的事情有什么想法吗?

是完整的示例。

非常感谢。

我正在使用c++(7.3.0) 进行编译,并带有以下选项-std=c++17 -Wall -Wextra -O3 -fno-tree-vectorize -mavx512f。我已经按照此处的说明进行了检查,并且我的 CPU(Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz)支持 AVX2。该列表是否应该有 AVX-512 来表明对此的支持?

0 投票
1 回答
312 浏览

simd - GCC 不断抱怨 AVX512 函数 _mm512_cvt_roundpd_epi64 的“错误:不正确的舍入操作数”

我正在使用 _mm512_cvt_roundpd_epi64 并不断收到编译器错误:

/dump/1/alicpp2/built/gcc-7.3.0-7u2/gcc-7.3.0/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/avx512dqintrin.h:1574:14:错误: 不正确的舍入操作数 __R);

这是我的代码:

还有我的 CMakeFileLists.txt:

有人熟悉 AVX512 库并帮助回答我的问题吗?

0 投票
1 回答
1624 浏览

linux - 动态确定恶意 AVX-512 指令的执行位置

我有一个在支持 AVX-512 的 Intel 机器上运行的进程,但该进程不直接使用任何 AVX-512 指令(asm 或内在函数)并且编译时使用,-mno-avx512f因此编译器不会插入任何 AVX-512 指令.

然而,它在降低的 AVX 涡轮频率下无限期地运行。毫无疑问,有一条 AVX-512 指令通过库、(非常不可能的)系统调用或类似的东西潜入某处。

与其尝试“二分查找” AVX-512 指令的来源,有什么方法可以立即找到它,例如,捕获这样的指令?

操作系统是 Ubuntu 16.04。

0 投票
2 回答
3675 浏览

x86 - 对齐与未对齐 x86 SIMD 指令之间的选择

SIMD指令一般有两种类型:

A. 使用对齐的内存地址的那些,如果地址未在操作数大小边界上对齐,则会引发通用保护 (#GP) 异常:

B. 那些使用未对齐的内存地址的,不会引发这样的异常:

但我只是好奇,我为什么要在脚上开枪并使用第一组的对齐内存指令呢?