问题标签 [sse2]

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 投票
5 回答
74615 浏览

c++ - 适用于 GNU C++ 的 SSE SSE2 和 SSE3

是否有一个简单的教程让我在 GNU C++ 中快速掌握 SSE、SSE2 和 SSE3?如何在 SSE 中进行代码优化?

0 投票
3 回答
26116 浏览

c++ - Visual C++ (x64) 中的 SSE2 选项

我已将 x64 配置添加到我的 C++ 项目以编译我的应用程序的 64 位版本。一切看起来都很好,但是编译器给出了以下警告:

SSE2 优化真的不适用于 64 位项目吗?

0 投票
6 回答
1772 浏览

c - 使用 SSE 将 4 个浮点数乘以 4 个浮点数的最有效方法是什么?

我目前有以下代码:

我首先有几个问题:

(1) 如果我要在 16 字节边界上对齐数组,它甚至可以工作吗?由于数组是在堆栈上分配的,对齐它们几乎是不可能的吗?

请参阅此帖子的选定答案:堆栈变量是否由 GCC __attribute__((aligned(x))) 对齐?

(2) 可以重构代码以提高效率吗?如果我将两个浮点数组都放入寄存器而不是一个呢?

谢谢

0 投票
1 回答
329 浏览

c++ - 从脚本中较高的函数调用脚本中较低的函数

我试图想出一种方法让计算机为我做一些工作。我正在使用 SIMD (SSE2 & SSE3) 来计算叉积,我想知道它是否可以更快。目前我有以下内容:

如您所见,那里有四个_mm_shuffle_ps,我想知道是否可以将它们替换为 and 的组合,_mm_unpackhi_ps分别_mm_unpacklo_ps返回a2 a3 b2 b3anda0 a1 b0 b1和稍快一些。

我无法在纸上弄清楚,但我想到了一个解决方案。如果让计算机蛮力执行所需的步骤怎么办?只需递归地遍历不同的选项,看看什么给出了正确的答案。

我让它与乘法一起工作,当我希望它返回(3、12、27、0)时,它会返回这个:

非常好,如果我自己这么说的话。

然而,当我想实现分裂时,我偶然发现了一个问题。乘法不仅要调用乘法,还必须调用除法。好的,所以我们把除法放在乘法之上。但是divide不仅要调用divide,还得调用multiply,在脚本中比较低,所以还不存在。

我从 Visual C++ 中的一个空控制台应用程序开始,并将所有内容都放在 QuadTests.cpp 中。

如何确保这两个函数可以相互调用?

提前致谢。

0 投票
3 回答
190 浏览

c++ - 给类的实例一个指向结构的指针

我正在尝试在我的矢量类中获得 SSE 功能(到目前为止我已经重写了 3 次。:\)并且我正在执行以下操作:

有用!欢呼!但它比我之前的尝试慢。嘘。

我已经确定我的瓶颈是我用来获取指向结构的指针的 malloc。

在类中使用 SSE 的主要问题之一是它必须在内存中对齐才能工作,这意味着重载 new 和 delete 运算符,导致代码如下:

你不能再使用默认构造函数,你必须new像瘟疫一样避免。

我的新方法基本上是让数据在类外部,这样类就不必对齐。

我的问题是:是否有更好的方法来获取指向结构的(内存对齐)实例的指针,或者我的方法真的很愚蠢并且有更清洁的方法?

0 投票
1 回答
1085 浏览

c++ - SSE2 编译器错误

我试图闯入 SSE2 并尝试了以下示例程序

并得到以下警告和错误:

警告 C4405:“xmm0”:标识符是保留字

错误 C2400:“操作码”中的内联汇编语法错误;找到'xmm0'

我尝试寻找可能的原因,但大多数分享我的问题的人使用 Visual C++ 6.0,而我使用 Visual C++ 8.0。

有什么建议么?

0 投票
3 回答
3128 浏览

c++ - SSE2 - 16 字节对齐的动态内存分配

编辑:

这是SSE2 编译器错误的后续

这是我之前遇到的真正错误,并通过更改Michael Burr建议的_mm_malloc语句在下面复制:

SO.exe 中 0x00415116 处的未处理异常:0xC0000005:访问冲突读取位置 0xffffffff。

在线label: movdqa xmm0, xmmword ptr [t1+eax]

我正在尝试动态分配t1t2并且根据本教程,我使用过_mm_malloc

0 投票
1 回答
1149 浏览

c++ - 128位xmm寄存器的高低64位相加

我有两个压缩的四字整数xmm0,我需要将它们加在一起并将结果存储在内存位置。我可以保证每个整数的值小于2^15。现在,我正在执行以下操作:

有一个更好的方法吗?

0 投票
2 回答
1711 浏览

c++ - SSE2 - “系统无法执行指定的程序”

我最近开发了一个使用内联 SSE2 指令的 Visual C++ 控制台应用程序。它在我的计算机上运行良好,但是当我在另一台计算机上尝试时,它返回以下错误:

系统无法执行指定程序

请注意,该程序在引入 SSE2 代码之前在另一台计算机上运行。

有什么建议么?

PS:当我在另一台计算机上编译代码并运行它时它可以工作。我认为这与我从网上搜到的清单有关。

0 投票
4 回答
7865 浏览

c++ - 确定处理器对 SSE2 的支持?

在安装软件之前,我需要确定处理器对 SSE2 的支持。据我了解,我想出了这个:

这行得通吗?我不太确定如何测试,因为我的 CPU 支持它,所以我不会从函数调用中得到错误。

如何确定 SSE2 的处理器支持?