13得票4回答
使用Core 2 CPU(SSSE3)计算大缓冲区的比特流行计数

我正在寻找在512字节或更多字节的大缓冲区上进行popcount的最快方法。我可以保证任何所需的对齐方式,并且缓冲区大小始终是2的幂。缓冲区对应于块分配,因此通常位要么全部设置,要么不设置,或者大部分设置偏向于缓冲区的“左侧”,偶尔有空洞。 我考虑过的一些解决方案是: - GCC的__bu...

12得票3回答
__builtin_popcountll和_mm_popcnt_u64有什么区别?

我试图统计512MB内存中有多少个1,并发现了两种可能的方法,_mm_popcnt_u64() 和 __builtin_popcountll(),它们在gcc内置函数中。 _mm_popcnt_u64() 被称为使用 CPU 简介 SSE4.2,速度似乎是最快的,而 __builtin_po...

12得票4回答
快速计算 __m128i 寄存器中设置位数的方法

我应该计算一个__m128i寄存器内设置为1的位数。 特别地,我应编写两个函数,能够使用以下方式计数寄存器中的位数: 寄存器中设置为1的位的总数。 每个字节中设置为1的位的数量。 是否有内置函数可以完全或部分地执行上述操作?

11得票1回答
如何从C#调用CPU指令?

我的处理器(Intel i7)支持“POPCNT指令”,我想从我的C#应用程序中调用它。这是可能的吗? 我相信我在某个地方读到过这不可能,但如果JIT发现它可用,它将调用它,但我需要调用哪个函数来替换此指令? Popcount 在循环中被调用数百万次,因此如果可能的话,我希望能够进行CPU优化。

9得票8回答
一个用C语言编写的程序,用于计算无符号字符中'1'位的数量。

我需要一段 C 代码来返回一个无符号字符中1的数量。如果不明显,我需要解释为什么它起作用。我已经找到了很多32位数字的代码,但是对于无符号字符的代码并不多。

9得票2回答
Fast popcount on Intel Xeon Phi

我正在Intel Xeon® Phi®上实现超快的popcount,因为它是各种生物信息学软件的性能热点。 我已经实现了五个代码片段。 #if defined(__MIC__) #include <zmmintrin.h> __attribute__((align(64))) ...

7得票2回答
什么是计算具有相同汉明权重的二进制数的所有排列的最快算法?

我需要一个算法来计算给定汉明重量的固定大小二进制数的所有排列。例如,如果汉明重量为2且二进制大小为4,则有以下输出: 0011 0110 0101 1100 1010 1001 在本例中,这种组合的数量被计算为C(n,r),例如C(4,2),其结果为6。 请注意,您可以通过将数字从0增...