首页 > 解决方案 > 在最小时钟周期内执行 AVX2 VPXOR 和 popcount 的优化方式

问题描述

我们必须对两个数组执行按位异或运算,每个数组包含 5 个 uint64_t(unsigned long long)元素,然后执行 1 的计数(pop count)。通过使用 AVX2 256 位宽 YMM 寄存器、AVX2 VPXOR 和 popcount 以在最小时钟周期内实现这一目标的优化方式是什么?

现在我们通过以下代码片段来做到这一点

for (j = 0; j < 5; j++){
 xorResult = cylinderArrayVectorA[j] ^ cylinderArrayVectorB[j];
 noOfOnes = _mm_popcnt_u64(xorResult);
 sumOfOnes += noOfOnes;

我们在数组 A 和数组 B 中有 260 位。在最小时钟周期内执行 AVX2 VPXOR 和 popcount 的优化方法是什么。

标签: c++x86simdavx2hammingweight

解决方案


推荐阅读