问题标签 [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 投票
2 回答
417 浏览

delphi - 替代手动修复 16 字节边界上的 sse2 数据对齐

是否有以下手动修复的替代方法:

请注意,这段代码嵌入在过程或函数中。

0 投票
1 回答
708 浏览

assembly - 不同 CPU 上未对齐的 MOVSD 会发生什么?

基本上问题是什么,如果我在各种 CPU 上执行不是 8 字节(甚至 4 字节)对齐的 MOVSD,会发生什么?它是否会对性能产生影响,是否会出现段错误等?

0 投票
1 回答
409 浏览

openmp - 使用openmp并行化代码sse内在函数c

我有带有内在函数的 ac 代码sse2。我正在尝试并行化此代码。此代码具有递归类型的句子:

我不能使用子句缩减,因为我认为只能与类型运算符 +、-、* ... 一起使用而没有指针。

我应该怎么办?

非常感谢大家并向大家问好。

0 投票
1 回答
197 浏览

c - 使用 openmp 并行化此 c 代码的问题

如何使用 OpenMP 并行化此代码?我得到的结果不正确。

我尝试使用临时变量p1aux, p2aux, 和psumaux因为 Reduction 子句不能与指针或内部函数一起使用。但正如我所说,结果是不正确的。

当我说“结果不正确”时,我会说: 的计算array1 + array2存储在矩阵中sumssesumsse[50] [50] [50]直到分量或多或少,计算都是正确的,但矩阵的其他分量始终是0

你知道会发生什么吗?

如果有人可以帮助我,非常感谢。

0 投票
1 回答
2180 浏览

c - sse2浮点乘法

我尝试将 FANN Lib(用 C 编写的神经网络)中的一些代码移植到 SSE2。但是 SSE2 的性能比普通代码差。使用我的 SSE2 实现运行一次运行需要 5.50 分钟而不需要 5.20 分钟。

SSE2 怎么会比正常运行慢?_mm_set_ps会不会是因为 我使用 Apple LLVM 编译器 (XCode 4) 编译代码(所有 SSE 扩展标志都打开,优化级别为-Os)。

没有 SSE2 的代码

SSE2 代码

0 投票
1 回答
1636 浏览

delphi - 如何用 SSE2 优化这个 Delphi 函数?

我需要一个提示,如何使用 SSE2 程序集(32 位)实现这个 Delphi 函数。也欢迎其他优化。也许有人可以告诉我,可以使用什么样的指令,所以我有一个进一步阅读的起点。

实际的:

预期的:

0 投票
1 回答
1125 浏览

sum - _m128 向量的四个 32 位元素之和

我正在使用内在函数来优化我的程序。但现在我想将 __m128 向量中的四个元素相加,以便将结果与浮点值进行比较。例如,假设我有这个 128 位向量:{a, bc, d}。如何将 a+b+c+d 与 e 进行比较,其中 e 的类型为 float ?

SSE2 或 SSE3 是否提供了一种简单的方法,或者您有任何可以帮助我的代码片段吗?谢谢 !

0 投票
1 回答
1863 浏览

c - SIMD 数组添加任意数组长度

我正在通过使用矢量内在函数重写我的个人图像处理库来学习使用 SIMD 功能。一个基本功能是一个简单的“数组+=”,即

对于任意数组长度,显而易见的 SIMD 代码(假设按 16 对齐)类似于:

但是是否可以使用 SIMD 指令进行所有添加?我想试试这个:

对于额外的元素,但这会导致未定义的行为吗?mask应该保证实际上没有访问超出数组边界(我认为)。另一种方法是先做额外的元素,然后数组需要对齐n-n16,这似乎不正确。

是否有另一种更优化的模式,比如矢量化循环?

0 投票
2 回答
517 浏览

sse2 - 通过 Accelerate 框架添加两个 __m128 类型


我需要__m128使用 Accelerate 框架添加/mul/sub 两个(浮点)变量。但是,我找不到这样做的功能。所有 Accelerate 框架函数都采用int__vector__类型而不是float__vector__类型。我找到了除法的功能'vdivf',但我也需要添加/mul/sub。

谁能告诉我,如何__m128使用 Accelerate 框架添加/mul/sub 两个(浮点)变量?像这样的东西:_mm_add_ps, _mm_sub_ps_mm_mul_ps但使用 Accelerate 框架 API。

0 投票
1 回答
6925 浏览

x86 - 以下汇编指令添加 -8(%rbp), %xmm0 做什么?

我试图弄清楚汇编指令实际上做了什么

我知道这是带有 SSE2 的 x86-64 机器上的浮点加法。另外,我知道 %xmm0 是一个寄存器。但是,我不确定 -8(%rbp) 是什么意思。手册对此有点混乱。

基本上,问题是,-8(%rbp) 是否意味着它是从寄存器中获取一个值(可能是 rbp 的最后 8 个字节),还是从内存中获取一个值(从 -8 偏移的浮点值rbp 中包含的地址)。