Skip to content

1.0.0

Compare
Choose a tag to compare
@hoffmang9 hoffmang9 released this 30 Mar 04:38
· 173 commits to main since this release

Added

  • We now attempt to autodetect and use popcnt instructions, if available, on all platforms. Improves CPU performance of phase 2 by 10% when using bitfield. Check availability of popcnt instruction at runtime with cpuid on x86. Refuse to plot with bitfield if it's not available. Assume presence of optimized popcnt on other architectures (e.g. CNT on aarch64). With this and other changes below, bitfield is now close to the same speed as no bitfield on most machines.
  • Initial changes to support a progress percentage display if enabled on the command line.
  • There is now a docker install version. Thanks @zmeyc.

Changed

  • Increase size of bitfield index by 8x. Indexing every 1024 bits instead of every 8192 bits increases CPU performance of phase 2 about 1.5x.
  • Use all allocated memory for sorting in phase 3 and 4. Previously we were using only a half of allocated memory for sorting in phases 3 and 4 due to a wrong assumption that another sort is taking place at the same time.
  • Changed primary branch from master to main.
  • uint128_t has replaced Bits in phase 2. Improves phase 3 CPU performance by 3%.
  • Use uint64_t instead of Bits when rewriting left entries in phase 1. Improves phase 1 CPU performance by 5%.This should improve phase 1 CPU performance by 5%.
  • The Hellman attacks example now correctly throws. Thanks @xdustinface!
  • The unused pybind11 submodule was removed.
  • cxxopts are now fetched by CMake instead of statically in lib/.
  • gulrak/filesystem was updated to the current release and is now fetched by CMake.

Fixed

  • There was an edge case where harvester could wander off into garbage on certain proof of space challenges causing a crash.
  • CI build was not correctly creating and testing bitfield test plots.