问题标签 [sse3]
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.
mingw - MinGW 错误类型“__m128i”无法在 Eclipse 中解决
在使用 MinGW 的 Eclipse 中,我试图编译具有一些英特尔内在指令 (sse2 sse3) 的 c 代码。我已经给出了编译器选项 -march=native -msse2 -msse3 -mssse3 -msse4.1但我收到了一个错误
无法解析类型“__m128i”。
我仍然能够构建应用程序,但它在执行英特尔内在指令时在运行时崩溃。所以我浏览了英特尔内部指令的头文件,它显示“未启用 SSE3 指令集”。
请帮助我摆脱困境。
c++ - (Vec4 x Mat4x4) 产品使用 SIMD 和改进
我正在编写一个复杂的模拟程序,并且发现最耗时的例程是将四向量(float4)与 4x4 矩阵相乘的例程。我需要在几台或多或少旧的计算机上运行这个程序。这就是为什么我尝试在以下代码中检查此类操作的 SIMD 功能:
我对此类问题的改进有一些麻烦。运行代码时,我得到以下结果(Intel Core i5 4670K、3.4GHz、Haswell、Codeblock+MinGW 编译器使用 -O2 -march=corei7-avx):
我的问题如下:
这是否可以提高性能/加速?对于 SSE,它应该是 x4(最大值),对于 AVX,它应该是 x8。
为什么 AVX 不比 SSE3 快?
对于那些说:“停止使用你的东西,使用英特尔数学核心库”的人,我回答:“我不会,因为我想要一个小的可执行文件,而且我只需要在这种特定情况下使用 SIMD,而不是其他地方”; -)
assembly - 如何在汇编代码 x86 和 SSE 中使用向量
我不知道如何在 x86 中访问 stl 向量。我试图这样做,但我有一些错误。
我想用 SSE 语言做同样的事情。
先感谢您!
c++ - OpenCV 中的处理器优化标志
我正在构建一个使用 OpenCV 的应用程序,它将在各种 Windows 计算机(使用 Win7、Win8、Win10)上运行。
现在我发现我的应用程序在某些计算机上随机崩溃。经过大量谷歌搜索后,我意识到在 OpenCV 中启用 SSE3 会导致不支持 SSE3 的处理器上的非法指令崩溃。
https://bugs.launchpad.net/linuxmint/+bug/1258259
所以这是我的问题:你们中有人知道哪些处理器标志是“安全的”。我了解他们的工作,但我不知道处理器支持例如 SSE42 有多普遍。
换句话说:您认为在编译 OpenCV 时应该禁用哪些标志?
x86 - 在这种情况下,_mm_movehdup_ps 和 _mm_shuffle_ps 有什么区别?
如果我的理解是正确的,
_mm_movehdup_ps(a)
给出相同的结果
_mm_shuffle_ps(a, a, _MM_SHUFFLE(1, 1, 3, 3))
?
两者有性能差异吗?
c - 使用 SSE3 水平添加
我正在尝试使用 SSE 和 SSE3 编写一个简单的代码来计算数组所有元素的总和。不同之处在于,在其中一个代码中,我使用 PADDD“垂直”求和,而在另一个代码中,我使用 HADPPS 水平求和。由于我感兴趣的唯一值是总和,所以我计算总和的方式应该无关紧要。但是,水平加法会输出错误的结果。知道为什么吗?
这是常规添加的代码:
这是水平添加的代码:
我认为只有添加指令应该改变,还是不改变?
assembly - 在 x86-SSE 中将四个压缩单精度浮点转换为无符号双字
有没有办法在带有 SSE 扩展的 x86 中将四个打包的单精度浮点值转换为四个双字?最接近的指令是CVTPS2PI,但它不能在两个 xmm 寄存器上执行,而是应该作为CVTPS2PI MM, XMM/M64
. 如果我想要类似的东西<conversion_mnemonic> XMM, XMM/M128
怎么办?
谢谢。伊曼。
c - 二维数组的 SSE
我想使用 SSE3 指令更改以下代码:
u 和 v 是浮点类型的二维数组。到目前为止我所拥有的是这个,但程序运行不正确。
我怀疑这是因为_mm_loadu_ps存储 u[i][1]、u[i][2]、u[i][3] 和 u[i][4] 的值,但我想存储 u[ i][1]、u[i+1][1]、u[i+2][1]、u[i+3][1] 和 u[i+4][1]。我怎样才能做到这一点?Loopfactor 的值为 4。非常感谢任何帮助。