-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] SIMD count #174
[FEATURE] SIMD count #174
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #174 +/- ##
=======================================
Coverage 99.94% 99.94%
=======================================
Files 45 46 +1
Lines 1820 1835 +15
=======================================
+ Hits 1819 1834 +15
Misses 1 1 ☔ View full report in Codecov by Sentry. |
32ce769
to
4100102
Compare
4100102
to
43d9f19
Compare
43d9f19
to
8dfe5b6
Compare
8dfe5b6
to
1d66a23
Compare
1d66a23
to
517ecc6
Compare
517ecc6
to
6eeb746
Compare
e917473
to
535b1f9
Compare
535b1f9
to
1965b03
Compare
1965b03
to
096be99
Compare
096be99
to
df19470
Compare
To make review easier
df19470
to
2197a91
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hm Do you think /misc/
is a fitting location?
It's not really miscellaneous stuff but very essential?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, we should think about adding a general
directory or something afterwards.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please open an issue for this, if it isn't fixed here
result_buffer(next_multiple_of_64(ibf.bin_count())) | ||
{ | ||
result_buffer.resize(ibf.bin_count()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
result_buffer(next_multiple_of_64(ibf.bin_count())) | |
{ | |
result_buffer.resize(ibf.bin_count()); | |
result_buffer(next_multiple_of_64(ibf.bin_count())) // ensure large enough capacity | |
{ | |
result_buffer.resize(ibf.bin_count()); // resize to actual size | |
resize to smaller sizes does never shrink the capacity, correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, you would need to call shrink_to_fit
for that
|
||
template <typename derived_t, std::integral integral_t> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a short brief for the purpose of this class (same for simd_mapping
)
{ | ||
// get 64 bits starting at position `bit_pos` | ||
uint64_t bit_sequence = bitvector_raw[batch]; | ||
uint64_t current_word = bv_ptr[iteration]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bv_ptr
is not a nice variable name if you don't concentrate and read from the beginning.
seqan::hibf::interleaved_bloom_filter ibf{seqan::hibf::bin_count{128u}, | ||
seqan::hibf::interleaved_bloom_filter ibf{seqan::hibf::bin_count{127u}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why this change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To test that the counting_agent does return a counting_vector with the correct capacity.
#define HIBF_HAS_AVX512 1 | ||
|
||
#include "counting_vector_test.cpp" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are you sure that for the normal counting_vector_test.cpp
, HIBF_HAS_AVX512
is false? Otherwise, if AVX512 is available, we are testing only the avx512 case in both files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the CI, it works, because there is no AVX512 on the CI. But you are correct that AVX512=0 isn't tested on an AVX512 machine. I changed it such that the base-cpp sets HIBF_HAS_AVX512=0
, if it hasn't already been defined.
Will rebase after approval |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please open an issue for this, if it isn't fixed here
And AVX512 tests. Uses intrinsics if available, simde's simulation otherwise
1f21647
to
1cebcfc
Compare
Speed in million elements per second
On AVX512 machine