A memory tester for the modern age. Manganese utilizes modern CPU features to run significantly faster than traditional memory tests, letting you run more passes in less time.
- Supports as many CPU cores as OpenMP does, and automatically uses all of them.
- Supports pure AVX2 and AVX-512 codepaths with runtime feature detection
- Uses non-temporal stores to bypass the CPU cache without additional performance penalties
- Prints per-error warnings, total error counts, and average bandwidth used after each loop
All benchmarks conducted on an i5-12600k and dual-channel PC-43200 DRAM
ISA | Threading | Avg. Bandwidth |
---|---|---|
AVX2 | 1c/1T | 5640MB/s |
AVX2 | 1C/1T | 8600MB/s |
AVX-512 | 1C/1T | 9400MB/s |
AVX2 | 6C+4c/16T | 53000MB/s |
AVX-512 | 6C/12T | 62000MB/s |
- Linux 5.x or newer
- C11 Compiler w/ GNU extensions
- AVX2 (slower) or AVX-512F and AVX-512BW (faster)
- OpenMP
Clone, initialize the submodules, and run `make`. You can then run `./manganese 10%` to test 10% of your total RAM.
Tested at 80mV below the threshold of stability
Do not mount important filesystems with a potentially unstable computer. Only use this program and other stability tests from a Live CD or a separate operating system on which all connected devices and mounted filesystems are disposable.
Tests in this program may not detect certain memory faults. This program cannot test memory reserved by the Linux kernel and other running programs. If this program gives you the all-clear and then your million-dollar Bitcoin wallet becomes corrupt, that’s on you. If this program convinces you to throw away a perfectly good memory module, that’s also on you. See the LICENSE file, as well as the LICENSE file within the SIMDxorshift directory for more information.
Thanks to Daniel Lemire for his AVX2 and AVX-512 random number generator