Hello Tim Armstrong,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/3338
to look at the new patch set (#5).
Change subject: Use AVX2 operations to speedup Bloom filters by 10-100%.
......................................................................
Use AVX2 operations to speedup Bloom filters by 10-100%.
As a reminder, our Bloom filters use so-called "block" Bloom filters,
in which each Bloom filter is actually a set of tiny Bloom fitlers,
each the size of a cache line.
The big idea is to make the tiny Bloom filters that make up a large
Bloom filter the size of AVX2 registers (256 bits) rather than cache
lines (512 bits). This enables a number of SIMD optimizations, and the
resulting AVX2 code does not need loops or conditionals.
Impala supports machines that do not have AVX2 instructions, so the
fast path is only conditionally enabled. When AVX2 is not available,
the operations do not change - the tiny Bloom filters are still 512
bits. Checking whether AVX2 instructions are available does not seem
to hurt operation speed, perhaps because the branch becomes very easy
to predict.
Change-Id: I6fef4f6652876f8fd7e3f0e41431702380418c98
---
M be/src/benchmarks/bloom-filter-benchmark.cc
M be/src/util/bloom-filter-test.cc
M be/src/util/bloom-filter.cc
M be/src/util/bloom-filter.h
M be/src/util/cpu-info.cc
M be/src/util/cpu-info.h
6 files changed, 189 insertions(+), 64 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/Impala refs/changes/38/3338/5
--
To view, visit http://gerrit.cloudera.org:8080/3338
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6fef4f6652876f8fd7e3f0e41431702380418c98
Gerrit-PatchSet: 5
Gerrit-Project: Impala
Gerrit-Branch: cdh5-trunk
Gerrit-Owner: Jim Apple <[email protected]>
Gerrit-Reviewer: Dan Hecht <[email protected]>
Gerrit-Reviewer: Jim Apple <[email protected]>
Gerrit-Reviewer: Tim Armstrong <[email protected]>