1
我正在对每个像素执行32次比较的图像进行普查转换。我可以高效地生成一个0x0100010100010100的256位向量......其中每个8位对应0x00或0x01。该向量在下面标识为“比较”。我需要折叠这个256位向量来生成一个32位汉明串。数组'人口普查'是我存储8位比较的地方。请注意,在这一点上,我不在乎汉明距离,我只是尽可能快地生成字符串。我有AVX2提供给我。我当前的代码:从32位8位比较中形成32位汉明字符串
uint8_t* census = (uint8_t*) _mm_malloc(sizeof(int)*8,32);
...
_mm256_storeu_si256((__m256i*) census, comparisons);
uint32_t hammingString = (uint32_t) (census[0] +
(census[1] << 1) +
(census[2] << 2) +
...
(census[31] << 31));
我很快就发布了这篇文章,我走了一小步,想到自己, “为什么不是已经是内在的?果然,它是。 –