问题标签 [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.
c++ - 适用于 GNU C++ 的 SSE SSE2 和 SSE3
是否有一个简单的教程让我在 GNU C++ 中快速掌握 SSE、SSE2 和 SSE3?如何在 SSE 中进行代码优化?
c++ - Visual C++ (x64) 中的 SSE2 选项
我已将 x64 配置添加到我的 C++ 项目以编译我的应用程序的 64 位版本。一切看起来都很好,但是编译器给出了以下警告:
SSE2 优化真的不适用于 64 位项目吗?
c - 使用 SSE 将 4 个浮点数乘以 4 个浮点数的最有效方法是什么?
我目前有以下代码:
我首先有几个问题:
(1) 如果我要在 16 字节边界上对齐数组,它甚至可以工作吗?由于数组是在堆栈上分配的,对齐它们几乎是不可能的吗?
请参阅此帖子的选定答案:堆栈变量是否由 GCC __attribute__((aligned(x))) 对齐?
(2) 可以重构代码以提高效率吗?如果我将两个浮点数组都放入寄存器而不是一个呢?
谢谢
c++ - 从脚本中较高的函数调用脚本中较低的函数
我试图想出一种方法让计算机为我做一些工作。我正在使用 SIMD (SSE2 & SSE3) 来计算叉积,我想知道它是否可以更快。目前我有以下内容:
如您所见,那里有四个_mm_shuffle_ps
,我想知道是否可以将它们替换为 and 的组合,_mm_unpackhi_ps
分别_mm_unpacklo_ps
返回a2 a3 b2 b3
anda0 a1 b0 b1
和稍快一些。
我无法在纸上弄清楚,但我想到了一个解决方案。如果让计算机蛮力执行所需的步骤怎么办?只需递归地遍历不同的选项,看看什么给出了正确的答案。
我让它与乘法一起工作,当我希望它返回(3、12、27、0)时,它会返回这个:
非常好,如果我自己这么说的话。
然而,当我想实现分裂时,我偶然发现了一个问题。乘法不仅要调用乘法,还必须调用除法。好的,所以我们把除法放在乘法之上。但是divide不仅要调用divide,还得调用multiply,在脚本中比较低,所以还不存在。
我从 Visual C++ 中的一个空控制台应用程序开始,并将所有内容都放在 QuadTests.cpp 中。
如何确保这两个函数可以相互调用?
提前致谢。
c++ - 给类的实例一个指向结构的指针
我正在尝试在我的矢量类中获得 SSE 功能(到目前为止我已经重写了 3 次。:\)并且我正在执行以下操作:
有用!欢呼!但它比我之前的尝试慢。嘘。
我已经确定我的瓶颈是我用来获取指向结构的指针的 malloc。
在类中使用 SSE 的主要问题之一是它必须在内存中对齐才能工作,这意味着重载 new 和 delete 运算符,导致代码如下:
你不能再使用默认构造函数,你必须new
像瘟疫一样避免。
我的新方法基本上是让数据在类外部,这样类就不必对齐。
我的问题是:是否有更好的方法来获取指向结构的(内存对齐)实例的指针,或者我的方法真的很愚蠢并且有更清洁的方法?
c++ - SSE2 编译器错误
我试图闯入 SSE2 并尝试了以下示例程序:
并得到以下警告和错误:
警告 C4405:“xmm0”:标识符是保留字
错误 C2400:“操作码”中的内联汇编语法错误;找到'xmm0'
我尝试寻找可能的原因,但大多数分享我的问题的人使用 Visual C++ 6.0,而我使用 Visual C++ 8.0。
有什么建议么?
c++ - SSE2 - 16 字节对齐的动态内存分配
编辑:
这是我之前遇到的真正错误,并通过更改Michael Burr建议的_mm_malloc
语句在下面复制:
SO.exe 中 0x00415116 处的未处理异常:0xC0000005:访问冲突读取位置 0xffffffff。
在线label: movdqa xmm0, xmmword ptr [t1+eax]
我正在尝试动态分配t1
,t2
并且根据本教程,我使用过_mm_malloc
:
c++ - 128位xmm寄存器的高低64位相加
我有两个压缩的四字整数xmm0
,我需要将它们加在一起并将结果存储在内存位置。我可以保证每个整数的值小于2^15。现在,我正在执行以下操作:
有一个更好的方法吗?
c++ - SSE2 - “系统无法执行指定的程序”
我最近开发了一个使用内联 SSE2 指令的 Visual C++ 控制台应用程序。它在我的计算机上运行良好,但是当我在另一台计算机上尝试时,它返回以下错误:
系统无法执行指定程序
请注意,该程序在引入 SSE2 代码之前在另一台计算机上运行。
有什么建议么?
PS:当我在另一台计算机上编译代码并运行它时它可以工作。我认为这与我从网上搜到的清单有关。
c++ - 确定处理器对 SSE2 的支持?
在安装软件之前,我需要确定处理器对 SSE2 的支持。据我了解,我想出了这个:
这行得通吗?我不太确定如何测试,因为我的 CPU 支持它,所以我不会从函数调用中得到错误。
如何确定 SSE2 的处理器支持?