上证所 SIMD 的上限/下限
任何人都可以建议一种使用 SSE4.1 之前的 SIMD 计算 float 下限/上限的快速方法吗?我需要正确处理所有极端情况,例如,当我有一个无法用 32 位 int …
使用 SSE 将向量乘以常数
我有一些在 4D 向量上运行的代码,目前我正在尝试将其转换为使用 SSE。我在 64b linux 上同时使用 clang 和 gcc。 仅对向量进行操作就可以很好地理解…
帮助我改进更多 SSE2 代码
我正在寻求一些帮助来改进 core2 cpu 上的双线性缩放 sse2 代码, 在我的 Atom N270 和 i7 上,此代码比 mmx 代码快大约 2 倍。但在 core2 cpu 下它只…
gcc、simd 内在函数和快速数学概念
大家好:) 我正在尝试掌握一些有关浮点、SIMD/数学内在函数和 gcc 的快速数学标志的概念。更具体地说,我在 x86 cpu 上使用 MinGW 和 gcc v4.5.0。 我…
混合 SSE 整数/浮点 SIMD 指令时,性能是否会受到影响
我最近经常以内在函数的形式使用 x86 SIMD 指令 (SSE1234)。令我沮丧的是,SSE ISA 有几个简单的指令,仅适用于浮点数或整数,但理论上对两者的性能应…
C++ 中 SSE/AVX 的 x86 CPU 调度
我有一个算法,该算法受益于 SSE(2) 内在函数的手动优化。此外,该算法未来还将能够受益于256位AVX寄存器。 最佳方法是什么 我的问题是在编译时注册我…
改善医学图像重建实施中的局部性并减少缓存污染
我正在为我的大学进行一项与医疗用途图像重建算法相关的研究。 我陷入了长达 3 周的困境,我需要提高以下代码的性能: for (lor=lor0[mypid]; lor <= …
近似 log10[x^k0 + k1]
问候。我试图近似函数 Log10[x^k0 + k1],其中 .21 < k0< 21、0< k1< ~2000,x为整数<2000 2^14。 k0 & k1 是常数。出于实际目的,您可以假设 k0 =…
gcc 中的 SSE(SIMD 扩展)支持
我看到如下代码: #include "stdio.h" #define VECTOR_SIZE 4 typedef float v4sf __attribute__ ((vector_size(sizeof(float)*VECTOR_SIZE))); // ve…
如何让下面的代码更快
int u1, u2; unsigned long elm1[20], _mulpre[16][20], res1[40], res2[40]; 64 bits long res1, res2 initialized to zero. l = 60; while (l) { fo…
SSE2:双精度对数函数
我需要日志函数的开源(无许可证限制)实现,带有签名的东西 __m128d _mm_log_pd(__m128d); 可以在英特尔短向量数学库(ICC的一部分)中找到,但ICC既…
SIMD 代码与标量代码
以下循环执行数百次。 elma 和 elmc 都是无符号长(64 位)数组,res1 和 res2 也是如此。 unsigned long simdstore[2]; __m128i *p, simda, simdb, s…
64 位特定 simd 内在函数
我在 SSE2 中使用以下联合声明。 typedef unsigned long uli; typedef uli v4si __attribute__ ((vector_size(16))); typedef union { v4si v; uli da…
将 MMX/SSE 指令移植到 AltiVec
我在 ASM 方面的经验极其有限,在 SIMD 方面的经验就更少了。 但碰巧我有以下 MMX/SSE 优化代码,我想将其移植到 AltiVec 指令以在 PPC/Cell 处理器上…
从 128 位 SSE 向量加载和提取 32 位整数值的最有效方法是什么?
我正在尝试使用 SSE 内在函数来优化我的代码,但遇到了一个问题,在完成 SSE 内在函数操作以获得我想要的结果后,我不知道从向量中提取整数值的好方法…