SMHasher

SMHasher is a hash function tester supporting various algorithms and able to make use of AVX and other modern CPU instruction set extensions.

To run this test with the Phoronix Test Suite, the basic command is: phoronix-test-suite benchmark smhasher.

Project Site

github.com

Source Repository

github.com

Test Created

29 February 2020

Last Updated

1 October 2022

Test Maintainer

Michael Larabel 

Test Type

Processor

Average Install Time

18 Seconds

Average Run Time

35 Minutes, 11 Seconds

Test Dependencies

C/C++ Compiler Toolchain + CMake

Accolades

40k+ Downloads

Supported Platforms


Public Result Uploads *Reported Installs **Reported Test Completions **Test Profile Page Views ***OpenBenchmarking.orgEventsSMHasher Popularity Statisticspts/smhasher2020.022020.042020.062020.082020.102020.122021.022021.042021.062021.082021.102021.122022.022022.042022.062022.082022.102022.122023.022023.042023.062023.082023.102023.122024.022024.042024.062024.082024.1013002600390052006500
* Uploading of benchmark result data to OpenBenchmarking.org is always optional (opt-in) via the Phoronix Test Suite for users wishing to share their results publicly.
** Data based on those opting to upload their test results to OpenBenchmarking.org and users enabling the opt-in anonymous statistics reporting while running benchmarks from an Internet-connected platform.
*** Test profile page view reporting began March 2021.
Data updated weekly as of 5 October 2024.
MeowHash x86_64 AES-NI11.1%wyhash10.8%FarmHash12810.9%t1ha2_atonce10.7%SHA3-25610.8%fasthash3210.8%FarmHash32 x86_64 AVX12.5%t1ha0_aes_avx2 x86_6412.2%Spooky3210.2%Hash Option PopularityOpenBenchmarking.org

Revision History

pts/smhasher-1.1.0   [View Source]   Sat, 01 Oct 2022 14:49:46 GMT
Update against upstream. Fixes: https://github.com/phoronix-test-suite/phoronix-test-suite/issues/670

pts/smhasher-1.0.0   [View Source]   Sat, 29 Feb 2020 07:23:30 GMT
Add SMHasher hashing benchmark.

Suites Using This Test

Cryptography

C/C++ Compiler Tests


Performance Metrics

Analyze Test Configuration:

SMHasher 2022-08-22

Hash: FarmHash32 x86_64 AVX

OpenBenchmarking.org metrics for this test profile configuration based on 194 public results since 1 October 2022 with the latest data as of 24 August 2024.

Below is an overview of the generalized performance for components where there is sufficient statistically significant data based upon user-uploaded results. It is important to keep in mind particularly in the Linux/open-source space there can be vastly different OS configurations, with this overview intended to offer just general guidance as to the performance expectations.

Component
Percentile Rank
# Compatible Public Results
cycles/hash (Average)
95th
3
20.9 +/- 0.1
83rd
3
25.9 +/- 2.2
Mid-Tier
75th
> 26.4
74th
11
26.5 +/- 0.1
64th
4
28.8 +/- 2.0
Median
50th
31.9
46th
8
32.6 +/- 0.5
46th
3
32.8 +/- 0.1
42nd
5
33.0 +/- 0.1
27th
3
35.1 +/- 0.9
Low-Tier
25th
> 35.5
23rd
3
35.8 +/- 0.5
23rd
7
36.1 +/- 1.6
9th
4
43.2 +/- 1.0
OpenBenchmarking.orgDistribution Of Public Results - Hash: FarmHash32 x86_64 AVX194 Results Range From 16 To 73 cycles/hash162126313641465156616671761326395265

Based on OpenBenchmarking.org data, the selected test / test configuration (SMHasher 2022-08-22 - Hash: FarmHash32 x86_64 AVX) has an average run-time of 2 minutes. By default this test profile is set to run at least 3 times but may increase if the standard deviation exceeds pre-defined defaults or other calculations deem additional runs necessary for greater statistical accuracy of the result.

OpenBenchmarking.orgMinutesTime Required To Complete BenchmarkHash: FarmHash32 x86_64 AVXRun-Time246810Min: 1 / Avg: 1.05 / Max: 2

Based on public OpenBenchmarking.org results, the selected test / test configuration has an average standard deviation of 0.2%.

OpenBenchmarking.orgPercent, Fewer Is BetterAverage Deviation Between RunsHash: FarmHash32 x86_64 AVXDeviation246810Min: 0 / Avg: 0.24 / Max: 4

Notable Instruction Set Usage

Notable instruction set extensions supported by this test, based on an automatic analysis by the Phoronix Test Suite / OpenBenchmarking.org analytics engine.

Instruction Set
Support
Instructions Detected
SSE2 (SSE2)
Used by default on supported hardware.
 
MOVDQA MOVD PSRLDQ MOVDQU
SSE 4.2 (SSE4_2)
Used by default on supported hardware.
Found on Intel processors since at least 2010.
Found on AMD processors since Bulldozer (2011).

 
CRC32 POPCNT
Used by default on supported hardware.
Found on Intel processors since Sandy Bridge (2011).
Found on AMD processors since Bulldozer (2011).

 
VZEROUPPER VZEROALL VBROADCASTSD VPERMILPD
Used by default on supported hardware.
Found on Intel processors since Haswell (2013).
Found on AMD processors since Excavator (2016).

 
VPBROADCASTQ VEXTRACTI128 VPBROADCASTD VPBROADCASTW VPSLLVQ VPBROADCASTB VINSERTI128 VPERMQ
Used by default on supported hardware.
Found on Intel processors since at least 2010.
Found on AMD processors since Bulldozer (2011).

 
AESENC
Advanced Vector Extensions 512 (AVX512)
Used by default on supported hardware.
 
(ZMM REGISTER USE)
Vector AES (VAES)
Used by default on supported hardware.
Found on Intel processors since Ice Lake (2019).
Found on AMD processors since Zen 3 (2020).

 
VAESENC VAESDEC VAESENCLAST
FMA (FMA)
Used by default on supported hardware.
Found on Intel processors since Haswell (2013).
Found on AMD processors since Bulldozer (2011).

 
VFNMADD132SD VFMADD231SD VFMADD132SD VFNMADD213SD VFMSUB132SD VFMADD213SD
The test / benchmark does honor compiler flag changes.
Last automated analysis: 10 October 2022

This test profile binary relies on the shared libraries libm.so.6, libc.so.6.

Tested CPU Architectures

This benchmark has been successfully tested on the below mentioned architectures. The CPU architectures listed is where successful OpenBenchmarking.org result uploads occurred, namely for helping to determine if a given test is compatible with various alternative CPU architectures.

CPU Architecture
Kernel Identifier
Verified On
Intel / AMD x86 64-bit
x86_64
(Many Processors)

Recent Test Results

OpenBenchmarking.org Results Compare

1 System - 90 Benchmark Results

AMD Ryzen Threadripper 7970X 32-Cores - ASRock TRX50 WS - AMD Device 14a4

Arch rolling - 6.10.6-arch1-1 - KDE Plasma 6.1.4

1 System - 90 Benchmark Results

AMD Ryzen 7 7700X 8-Core - ASRock X670E PG Lightning - AMD Device 14d8

Arch rolling - 6.10.6-arch1-1 - KDE Plasma 6.1.4

1 System - 4 Benchmark Results

Intel Xeon E5-2697 v2 - ASUS X79-DELUXE - Intel Xeon E7 v2

FreeBSD - 14.0-RELEASE - X Server

1 System - 33 Benchmark Results

HiSilicon - Kunlun HisiPangu TU140HCR110 - 1 x 16384 MB LPDDR4-3726MT

Kylin v10 - 5.4.18-hw15-pangu - X Server

1 System - 293 Benchmark Results

1 System - 250 Benchmark Results

AMD Ryzen Threadripper PRO 7965WX 24-Cores - ASUS Pro WS WRX90E-SAGE SE - AMD Device 14a4

Arch Linux - 6.8.1-arch1-1 - GCC 13.2.1 20230801 + Clang 17.0.6

1 System - 250 Benchmark Results

AMD Ryzen Threadripper PRO 7965WX 24-Cores - ASUS Pro WS WRX90E-SAGE SE - AMD Device 14a4

Arch Linux - 6.8.1-arch1-1 - GCC 13.2.1 20230801 + Clang 17.0.6

1 System - 250 Benchmark Results

AMD Ryzen Threadripper PRO 7965WX 24-Cores - ASUS Pro WS WRX90E-SAGE SE - AMD Device 14a4

Arch Linux - 6.8.1-arch1-1 - GCC 13.2.1 20230801 + Clang 17.0.6

1 System - 250 Benchmark Results

AMD Ryzen Threadripper PRO 7965WX 24-Cores - ASUS Pro WS WRX90E-SAGE SE - AMD Device 14a4

Arch Linux - 6.8.1-arch1-1 - GCC 13.2.1 20230801 + Clang 17.0.6

1 System - 250 Benchmark Results

AMD Ryzen Threadripper PRO 7965WX 24-Cores - ASUS Pro WS WRX90E-SAGE SE - AMD Device 14a4

Arch Linux - 6.8.1-arch1-1 - GCC 13.2.1 20230801 + Clang 17.0.6

Find More Test Results