问题标签 [sse4]

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 回答
623 浏览

assembly - PTEST 可以用来测试两个寄存器是否都为零或其他条件吗?

除了测试单个寄存器是否全零之外,您还能用SSE4.1做什么?ptest

你能结合使用 SF 和 CF 来测试关于两个未知输入寄存器的有用信息吗?

PTEST 有什么用?您会认为检查打包比较的结果(如 PCMPEQD 或 CMPPS)会很好,但至少在英特尔 CPU 上,使用 PTEST + JCC 进行比较和分支的成本比使用 PMOVMSK(B /PS/PD) + 宏融合 CMP+JCC。

另请参阅检查两个 SSE 寄存器是否不都为零而不破坏它们

0 投票
1 回答
1802 浏览

python - 在 Windows 10 上从 Sources 安装 TensorFlow

我已经安装了 tensorflow-gpu,它工作正常。

鉴于我的系统配置如下,我现在想从源代码安装 tensorflow-gpu 以利用 AVX 和 SSE4.2-1.0 指令集;

  1. CPU : Dual Intel Xeon E5 2670, Sandy Bridge-EP/EX,Revision C2,Instructions MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, Intel 64, NX, VMX, AES, AVX
  2. 显卡:EVGA SC NVIDIA GeForce GTX 1060 3GB
  3. 主板:泰安S7066WGM3NR,版本R1.0
  4. 内存:32 GB 八通道 DDR3 666 MHz
  5. 操作系统:Windows 10 Pro 64 位

tensorflow 网站(https://www.tensorflow.org/install/install_sources)、youtube上的视频和 stackoverflow 上的其他问题更面向 linux,即便如此,对于像我这样的新手来说也不是直截了当的。

谁能指导我在 Windows 10 上从源代码安装 tensorflow-gpu 的过程?

请随时询问其他系统信息或类似信息。

谢谢你。

0 投票
1 回答
453 浏览

c - 内置 pcmpistri 在 gcc 中不起作用

我正在尝试编写一个利用 GCC 内在函数的 SSE4.2 新指令的strcmp版本。

这是我到目前为止的代码:

它应该打印第一个不同字节的索引,但它总是打印 0。

我已经尝试调试它几个小时,直到我在生成的程序集中看到它:

根据Wikibooks,如果输出索引的指令(就像pcmpistri我尝试使用的那样),结果将保存在ECX寄存器中,但是,如果我没记错的话,紧随其后的指令pcmpistri会用EAX!

我认为这可能是让我发疯的错误,但我没有组装经验,我可能错了。

有人遇到这个问题吗?有谁知道如何解决这个问题?

我已经尝试在 Ubuntu 16.04(实际上是 Windows 上的 bash)下使用 GCC 5.4 和 6.2-O0-O1-O2显然-msse4.2)。

让我觉得这是一个 GCC 错误的原因是,从 Visual Studio 2017 编译的类似代码 undex MSVC 可以正常工作:

0 投票
2 回答
3202 浏览

gcc - 为多个 SIMD 架构生成代码

我编写了一个库,在其中使用 CMake 来验证 MMX、SSE、SSE2、SSE4、AVX、AVX2 和 AVX-512 的标头是否存在。除此之外,我检查指令是否存在,如果存在,我添加必要的编译器标志,-msse2 -mavx -mfma 等。

这一切都很好,但我想部署一个二进制文件,它适用于多代处理器。

问题:是否可以告诉编译器 (GCC),每当它使用 SIMD 优化函数时,它必须为体系结构列表生成代码?当然还要引入高层分支

我的想法类似于编译器如何为函数生成代码,其中输入指针是 4 或 8 字节对齐的。为了防止这种情况,我使用__builtin_assume_aligned宏。

什么是最佳实践?多个二进制文件?命名?

0 投票
1 回答
2881 浏览

assembly - 对于 memcmp,SSE4.2 字符串指令比 SSE2 快多少?

这是我的代码的汇编程序

你能把它嵌入c ++并检查SSE4吗?在速度

我很想看看如何步入SSE4的发展。还是根本不担心他?让我们检查一下(SSSE3以上我没有支持)

示例 32 位 https://vk.com/doc297044195_451679410

0 投票
1 回答
2352 浏览

docker - 制作一个 Dockerfile 来编译 Tensorflow 二进制文件以使用:SSE4.1、SSE4.2 和 AVX 指令

那么,docker 的优势之一就是可以轻松地部署一个环境来测试软件,对吧?谁能告诉我如何编译一个 Tensorflow 二进制文件以使用:SSE4.1、SSE4.2 on a docker 文件?任何人都可以指出我这样做的 docker 文件吗?如果有可能吗?

总结一下,有两个问题:

  • 是否有可能有一个 docker 文件来编译 Tensorflow 二进制文件以使用:SSE4.1、SSE4.2(和 GPU,我只找到了其中一个)
  • 你能告诉我在哪里可以找到一个可以做到这一点的 docker 文件或一个好的教程吗?

“这个问题的目的是避免以下情况:主机设置工作但 docker 设置不起作用,因为 Tensorflow 没有以特定方式编译。” 就像下图一样。在此处输入图像描述

0 投票
2 回答
2764 浏览

x86 - 支持 SSE4 的处理器是否支持 SSSE3 指令?

我正在开发一个需要 SSSE3 指令集的硬件平台。在查看诸如 Intel Atom® x5-Z8350 之类的处理器时,数据表显示它支持 SSE4.1 和 SSE4.2。这会允许为 SSSE3 指令编写的软件运行吗?

我相信这个问题与这个问题略有不同,因为它从未明确表示 SSE4 是 SSSE3 的超集。它只说 AVX 是一个超集。

0 投票
0 回答
2263 浏览

x86 - 如何更改 VirtualBox 为来宾操作系统模拟的 CPU 指令集,例如禁用 SSE4.2 指令集?

我想要实现的是禁用 VirtualBox 为我的 Linux 客户操作系统模拟的 CPU 的 SSE4.2 指令集以进行调试,即使真正的 CPU 支持 VirtualBox 所基于的 SSE4.2 指令集。我参考了 VirtualBox 手册页,有几个命令可能与这个问题有关:

上面的命令不起作用。

上面的命令可以用来dumps the CPUID parameters for the host CPUs. This can be used for a more fine grained analyis of the host's virtualization capabilities.输出为:

我知道输出可能与CPUID X86 指令密切相关,但我仍然无法弄清楚这些Leaf no. EAX EBX ECX EDX行的含义。这些行与CPUID指令的输出有什么关系?我认为只有知道这些行与CPUID指令输出的关系,才能正确使用以下命令:

上面的命令是我所知道的唯一可能实现我的目标的方法,那么, 的输出VBoxManage list hostcpuids、内容后面的内容Leaf no. EAX EBX ECX EDXCPUID指令的输出之间的关系是什么?即使真正的 CPU 支持 VirtualBox 所基于的 SSE4.2 指令集,如何禁用 VirtualBox 为我的 Linux 客户操作系统模拟的 CPU 的 SSE4.2 指令集?会VBoxManage modifyvm --cpuid <leaf> <eax> <ebx> <ecx> <edx>实现我的目标吗?如果您有任何其他方法可以实现这一目标,请告诉我。

0 投票
1 回答
233 浏览

x86-64 - _mm_cmpgt_epi64 内在函数是如何工作的

我正在使用_mm_cmpgt_epi64内在函数来实现 128 位加法,然后是 256 位加法。看着这个内在的东西的结果让我感到困惑。

我不明白为什么计算的掩码是这样的。

这是我的调试器中的输出:

对于第一个 64 位通道 ( 63:0) 我没问题。但是为什么第二条车道 ( 127:64) 也没有满呢?

在我看来0x8000000000000000> 0x7fffffffffffffff

0 投票
1 回答
70 浏览

c++ - 如何让 gcc 使用 SSE4.1 pminuq/pminud/etc 操作码对代码进行矢量化?

我一直在使用优秀的 godbolt.org 来确定 gcc 做什么和不矢量化:但我无法找到任何方法让它将 min(X,Y) 函数矢量化为 PMINUQ 等。

查看 gcc 源代码中的 sse.md 机器描述语言文件,我可以在第 12355 行之前看到一个提到 p<maxmin_int><ssemodesuffix> 的块,在我看来它应该输出 PMINUQ 等。所以我可以'看不出为什么用 -msse4 -msse4.1 为这种模式编译不应该只是工作的任何理由。

然而,这部分 md 里面也有一个“&&”行,这似乎 (?) 暗示这个操作码只适用于 AVX 风格的宽目标。

所以,我无法判断这是否是硬件限制、编译器/md 错误、-msse4.1 的 godbolt.org 问题,或者完全是其他原因。谁能帮我缩小一下范围?

godbolt.org 告诉我我得到...

...当我希望...