Closed semenov-vladyslav closed 4 years ago
Also, ssize_t
causes problems on Windows, as it's not a standard type.
Changed pearl diver search logic a bit: search range is split into fixed and variable ranges. The fixed range is initialized with different n * PTRIT_SIZE
integer values, where n
is the number of threads. The variable range is initialized with "all -1s", so when ptrit_hincr
overflows that means that the variable range is completely exhausted and the search has failed.
I allowed myself to tick two items of your list because I created the following related issues:
Ptrit/pcurl implementation using SIMD (see README).
When building with
bazel
ptrit and pcurl configuration flags must be passed via--define
:PTRIT_PLATFORM:
PTRIT_CVT:
PCURL_S2_CIRCUIT:
PCURL_S2_ARGS:
PCURL_STATE:
PCURL_SBOX_UNWIND:
TODO:
_tzcnt_u64
intrinsic under MSVC.ptrits_find_zero_slice
returnSIZE_MAX
instead ofPTRIT_SIZE
?ptrit_increment
in pearl diver, carry can indicate exhaustion of the search.ptrit_increment
inrun_search_thread
wasHASH_LENGTH_TRIT
. Was it an error? It should beend
.statusLock
in pearl diver. It locks access tostatus
variable, which is only overwritten withSEARCH_FINISHED
. As a compromise atomics can be used instead of lock.ptrit_increment(state, begin + 1, end)
. With multiple threads (4+) this search space can overlap?!ssize_t
is not standard type and causes problems on Windows with msvc.