问题标签 [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.
sse - SSE/AVX:根据每个元素的最小和最大绝对值从两个 __m256 浮点向量中进行选择
我正在寻找高效的 AVX (AVX512) 实现
即,我需要按元素选择a
fromu
和v
based on mask
,以及 into b
based on !mask
, where mask = (fabs(u) >= fabs(v))
element-wise 。
optimization - 测量简单矢量化数组操作的性能
我正在优化简单的数组操作,例如
其中 cnt 通常为 32 到 1024,这是我的应用程序中的典型情况。我正在比较 Intel IPP、MSVC 2017 本机矢量化器,并且我还在 MSVC 中利用 AVX 和 AVX512 的内在函数。我将线程优先级设置为关键,线程关联掩码设置为“1”。然后我使用 QueryPerformanceCounter 计算“操作”开始和结束的时间,其中包括运行循环数百万次。在具有 10 个内核的新 i9 上运行。
问题是结果各不相同,很多。有时 op takse 3 秒,有时 4。这使得结果基本上无法使用。有什么想法可能是错的吗?正在处理的数组中的值始终相同,数组对齐到 32 字节边界。
performance - 简单阵列处理循环的 AVX 512 与 AVX2 性能对比
我目前正在进行一些优化并比较 DSP 应用程序的矢量化可能性,这似乎是 AVX512 的理想选择,因为这些只是简单的不相关数组处理循环。但是在新的 i9 上,与 AVX2 相比,使用 AVX512 时我没有测量到任何合理的改进。任何指针?有什么好的结果吗?(顺便说一句。我试过 MSVC/CLANG/ICL,没有明显区别,很多时候 AVX512 代码实际上似乎更慢)
c++ - VS2008中的AVX-512指令库
我有一个在 Visual Studio 2017 中构建的 C++ 库,它使用 AVX-512 内在函数。我需要将库链接到 VS2008 C++ 代码。该库用于从图像中提取线条。所有内在指令都封装在库中。VS2008 代码传入char* data
, LineSpec
(具有 4 个浮点数的结构)和char* result
,其中填充了提取的行。
由于错误 C1083,我无法链接库:无法打开包含文件:immintrin.h
。出于同样的原因,我也无法使用 VS2008 工具集在 VS2017 中构建库。
目标是使用 AVX-512 指令提高提取速度,同时使用 VS2008 编译其余代码。我是内在函数和混合平台的新手。您对如何在 VS2008 中使用该库有什么建议吗?
sse - AVX-512 中的 1 对 4 广播和 4 对 1 缩减
我需要做以下两个操作:
什么是高效的 AVX-512 实施?
macos - OSX 32 位上的 Clang 是否支持 AVX512 内在函数?
在 OSX 下使用 AVX512 内部函数时出现数百万个错误,但只有在构建 32 位应用程序时,64 位才可以。是否支持?我通过 x86intrin.h 和 immintrin.h 包含它。zmmintrin.h 显然根本不存在...
vectorization - 掩码 FP 乘法是否可以提高 AVX512 的性能?
AVX512 有几个/大多数浮点指令以屏蔽形式提供,您可以在其中选择哪些结果将被更改/归零。CPU 是否真的使用这个表示应该执行乘法的信息调度,或者这是否只是设置了哪些结果被覆盖并且非屏蔽的结果无论如何都会被计算然后丢弃?
在实践中,这对于处理例如有用:
27 不能被 8 整除,所以会有一些剩余项。可以一一创建单独的循环处理。或者如果至少有 4 个,则使用 AVX,然后将剩余的一个一个处理。很多可能性。
这个特定的循环将一个好的编译器自动向量化,但这只是更复杂情况的一个例子,我想手动向量化,但仍然有未使用的项目,或者例如我知道一些乘法结果没有用。
编辑:经过实验检查,似乎屏蔽操作实际上更慢。
vectorization - 使用内在函数将双 SSE2/AVX/AVX512 存储为浮点数的最佳方法
出于准确性原因,我经常需要使用双精度,但我想将结果存储为浮点数。什么是最佳方式?我目前正在使用:
上交所2:_mm_store_sd((double*)dst, _mm_castps_pd(_mm_cvtpd_ps(xmm)));
AVX:_mm_storeu_ps(dst, _mm256_cvtpd_ps(ymm));
AVX512:_mm256_storeu_ps(dst, _mm512_cvtpd_ps(zmm));
有什么改进的想法吗?
x86 - 将 8 个字节的数组转换为 8 个整数
我正在与 Xeon Phi Knights Landing 合作。我需要从一个双打数组中进行收集操作。索引列表来自一个字符数组。收集操作是_mm512_i32gather_pd
或_mm512_i64gather_pd
。据我了解,我要么需要将 8 个字符转换为 8 个 32 位整数,要么将 8 个字符转换为 64 位整数。我已经选择了_mm512_i32gather_pd
.
我创建了两个函数get_index
并将get_index2
八个字符转换为__m256i
. 的组装get_index
比get_index2
查看https://godbolt.org/z/lhg9fX更简单。但是,在我的代码get_index2
中要快得多。为什么是这样?我正在使用 ICC 18。也许有比这两个功能更好的解决方案?
tensorflow - 为英特尔至强黄金 6148 构建张量流
我有一台运行两个 Intel xeon gold 6148 和 tensorflow 的服务器。当我使用 pip 安装 tf 时,我收到一条消息,指出我的安装未使用 AVX2 和 AVX512。因此,为了获得最佳性能,我尝试使用 docker 从源代码构建 tf。我是按照https://www.tensorflow.org/install/source这样做的,但是对于我使用的 bazel build 命令:
按照https://software.intel.com/en-us/articles/intel-optimization-for-tensorflow-installation-guide。
但是这个安装比标准的 pip 安装性能差很多。
所以,总结一下:安装 tensorflow 和至强金架构的最佳方式是什么?