Skip to content

@tevador tevador released this Jun 22, 2019 · 16 commits to master since this release

Benchmark usage:

RandomX benchmark v1.0.4
Usage: bin/randomx-benchmark [OPTIONS]
Supported options:
  --help        shows this message
  --mine        mining mode: 2080 MiB
  --verify      verification mode: 256 MiB
  --jit         x86-64 JIT compiled mode (default: interpreter)
  --largePages  use large pages
  --softAes     use software AES (default: x86 AES-NI)
  --threads T   use T threads (default: 1)
  --affinity A  thread affinity bitmask (default: 0)
  --init Q      initialize dataset with Q threads (default: 1)
  --nonces N    run N nonces (default: 1000)
  --seed S      seed for cache initialization (default: 0)

Changes:

  • Dataset prefetch in interpreted VM #52
  • Support building a shared library #53
  • Use strongly typed enums #55
  • Fix cmake standalone build #56
  • Fix Windows detection #58
  • Configuration guidelines #59
  • Fix possible overflow in static_assert #67
  • benchmark: add thread affinity mask option #68
  • Regression tests #73
  • Large page support for FreeBSD #74
  • Different round keys for columns 0,1 and 2,3 in AesGenerator4R #76
  • Decrease the frequency of FADD/FSUB in favor of FMUL #77
Assets 5

@tevador tevador released this Jun 1, 2019 · 39 commits to master since this release

RandomX benchmark
Usage: benchmark.exe [OPTIONS]
Supported options:
  --help        shows this message
  --mine        mining mode: 2080 MiB
  --verify      verification mode: 256 MiB
  --jit         x86-64 JIT compiled mode (default: interpreter)
  --largePages  use large pages
  --softAes     use software AES (default: x86 AES-NI)
  --threads T   use T threads (default: 1)
  --init Q      initialize dataset with Q threads (default: 1)
  --nonces N    run N nonces (default: 1000)
  --seed S      seed for cache initialization (default: 0)

Changes in this release:

  • the number of AES rounds for program generation increased from 1 to 4
Assets 5

@tevador tevador released this May 24, 2019 · 46 commits to master since this release

RandomX benchmark
Usage: benchmark.exe [OPTIONS]
Supported options:
  --help        shows this message
  --mine        mining mode: 2080 MiB
  --verify      verification mode: 256 MiB
  --jit         x86-64 JIT compiled mode (default: interpreter)
  --largePages  use large pages
  --softAes     use software AES (default: x86 AES-NI)
  --threads T   use T threads (default: 1)
  --init Q      initialize dataset with Q threads (default: 1)
  --nonces N    run N nonces (default: 1000)
  --seed S      seed for cache initialization (default: 0)

Minor changes in this release:

  • improved condition register selection for CBRANCH instruction
  • added support for building under MinGW
  • fixed a possible memory leak
Assets 5

@tevador tevador released this May 15, 2019 · 56 commits to master since this release

RandomX benchmark
Usage: benchmark.exe [OPTIONS]
Supported options:
  --help        shows this message
  --mine        mining mode: 2080 MiB
  --verify      verification mode: 256 MiB
  --jit         x86-64 JIT compiled mode (default: interpreter)
  --largePages  use large pages
  --softAes     use software AES (default: x86 AES-NI)
  --threads T   use T threads (default: 1)
  --init Q      initialize dataset with Q threads (default: 1)
  --nonces N    run N nonces (default: 1000)
  --seed S      seed for cache initialization (default: 0)

Changes:

  • Added support for legacy x87 floating point on 32-bit systems
  • Fixed FSCAL instruction causing group F registers to exceed their intended maximum value
Assets 5

@tevador tevador released this May 5, 2019 · 70 commits to master since this release

Benchmark to test RandomX.

RandomX benchmark
Usage: benchmark [OPTIONS]
Supported options:
  --help        shows this message
  --mine        mining mode: 2 GiB
  --verify      verification mode: 256 MiB
  --jit         x86-64 JIT compiled mode (default: interpreter)
  --largePages  use large pages
  --softAes     use software AES (default: x86 AES-NI)
  --threads T   use T threads (default: 1)
  --init Q      initialize dataset with Q threads (default: 1)
  --nonces N    run N nonces (default: 1000)
  --seed S      seed for cache initialization (default: 0)
Assets 4
Pre-release

@tevador tevador released this Mar 22, 2019 · 146 commits to master since this release

Major improvement of verification speed. Mining performance should be mostly unaffected.

Changes:

  • Dataset size decreased from 4 GiB to 2 GiB
  • Added new verification option --jit for x86 systems (2-3 times faster verification)
  • Added random branches in generated programs
Assets 4

@tevador tevador released this Feb 24, 2019 · 176 commits to master since this release

Reworked int -> float conversion for group E registers to avoid a small chance of denormal results.

Assets 4

@tevador tevador released this Feb 22, 2019 · 178 commits to master since this release

Issue #26 : Division instructions were replaced by a single multiplication by a 64-bit reciprocal. Performance is increased by 1-5% depending on the CPU.

Assets 4

@tevador tevador released this Feb 20, 2019 · 180 commits to master since this release

Precompiled binaries are available for Windows 64-bit and Ubuntu/Debian x86-64.

Verification mode

Run as:

randomx --verify --softAes
  • If you have a recent x86 CPU which supports AES-NI, you may omit the --softAes option to get a small increase in performance.
  • If your system supports large pages, you can add --largePages option to get a small increase in performance.

Mining mode

Mining mode is currently only supported on 64-bit x86 CPUs. Requires at least 4.25 GiB of RAM.
Run as:

randomx --mine --init Q --threads T --nonces N
  • Select Q (number of initialization threads) equal to the number of hardware threads of your CPU.
  • Find T (number of mining threads) which produces the highest hashrate. Starting point should be 1 thread per 2 MB of L3 cache, but some CPUs can benefit from running more threads, while some CPUs cannot run more than 1 thread per core efficiently depending on other factors such as L1/L2 cache sizes.
  • Select N (number of nonces) equal to 10000, 100000 or 1000000 depending on the performance of your system. Aim for at least a 60-second mining period for accurate results.
  • If your CPU doesn't support AES-NI, you have to add the --softAes option. Your mining performance will be about 40% lower.
  • If your system supports large pages, you can add --largePages option to get a significant increase in performance (up to 25%).
  • If you have a NUMA system, run one instance of RandomX per NUMA node.

Example of optimal configuration for Intel Core i7-8550U (4 cores, 8 threads, 8 MB of L3 cache).

randomx.exe --mine --init 8 --threads 4 --nonces 100000 --largePages
Assets 4

@tevador tevador released this Nov 14, 2018 · 284 commits to master since this release

Performance test of ALU and FPU operations for 64-bit x86 machines.

Usage:

Windows:

benchmark.exe < test1.data
benchmark.exe < test2.data

Linux:

./benchmark < test1.data
./benchmark < test2.data
./benchmark < /dev/urandom

Produces result formatted as a markdown table suitable to be pasted directly on github.

Assets 4
You can’t perform that action at this time.