y-cruncher - A Multi-Threaded Pi-Program

From a high-school project that went a little too far...

By Alexander J. Yee

(Last updated: September 19, 2016)

 

Shortcuts:

 

The first scalable multi-threaded Pi-benchmark for multi-core systems...

 

How fast can your computer compute Pi?

 

y-cruncher is a program that can compute Pi and other constants to trillions of digits.

It is the first of its kind that is multi-threaded and scalable to multi-core systems. Ever since its launch in 2009, it has become a common benchmarking and stress-testing application for overclockers and hardware enthusiasts.

 

y-cruncher has been used to set several world records for the most digits of Pi ever computed.

 

Current Release:

Windows: Version 0.7.1 Build 9466 (Released: September 16, 2016)

Linux      : Version 0.7.1 Build 9466 (Released: September 16, 2016)

 

Official HWBOT thread.

Official XtremeSystems Forums thread.

 

News:

 

y-cruncher v0.7.1: (May 16, 2016)

 

This is an semi-unplanned released to address a number of critical issues with the HWBOT integration. (Most notably the reference clock skew issue.)

 

Other than that, there are few other user-visible features. Most of the changes since v0.6.9 are internal refactorings. Some of these were large (and dangerous) enough that it probably would've been better to wait a few more months before releasing v0.7.1. So if anything breaks, let me know.

 

While this version wasn't intended to have many new features, all that refactoring did lend itself to a some opportunistic stuff such as large pages and Unicode support.

 

Full list of changes here.

 

 

GUI Benchmark Wrapper and HWBOT Integration: (April 3, 2016)

 

I get asked these two questions a lot:

  1. Why don't you add a GUI for y-cruncher?
  2. Why isn't y-cruncher on HWBOT?

#1 never happened because I suck at UI programming and I didn't want that mixed in with performance critical code.

#2 never happened because the HWBOT benchmark API wasn't ready.

 

Well, both finally happening... More details here: http://forum.hwbot.org/showthread.php?t=155079

 

 

Older News

 

Records Set by y-cruncher:

y-cruncher has been used to set a number world record size computations.

 

Blue: Current World Record

Green: Former World Record

Red: Unverified computation. Does not qualify as a world record until verified using an alternate formula.

Date Announced Date Completed: Source: Who: Constant: Decimal Digits: Time: Computer:
September 3, 2016 August 29, 2016   Ron Watkins e 5,000,000,000,000

Compute:  48.6 days

Verify:  48.7 days

2 x Xeon X5690 @ 3.47 GHz
141 GB
August 14, 2016 June 26, 2016   Ron Watkins Euler-Mascheroni Constant 477,511,832,674

Compute:  34.4 days

Not Verified

4 x Xeon E5-4660 v3 @ 2.1 GHz
1 TB
July 11, 2016 July 5, 2016   "yoyo" Golden Ratio 10,000,000,000,000

Compute:  6.2 days

Not Verified

2 x Intel Xeon E5-2696 v4 @ 2.2 GHz
768 GB
June 28, 2016 June 19, 2016   Ron Watkins Square Root of 2 10,000,000,000,000

Compute:  18.8 days

Verify:  25.2 days

2 x Xeon X5690 @ 3.47 GHz
141 GB
June 4, 2016 May 29, 2016   Ron Watkins Lemniscate 250,000,000,000

Compute:  91.7 hours

Verify:  270 hours

4 x Xeon E5-4660 v3 @ 2.1 GHz - 1TB
4 x Xeon X6550 @ 2 GHz - 512 GB
June 4, 2016 June 2, 2016   "yoyo" Golden Ratio 5,000,000,000,000

Compute:  67.9 hours

Not Verified

2 x Intel Xeon E5-2696 v4 @ 2.2 GHz
768 GB
May 25, 2016 May 18, 2016   Ron Watkins Euler-Mascheroni Constant 250,000,000,000

Compute:  35.9 days

Verify:  30.65 days

2 x Xeon E5-4660 v3 @ 2.1 GHz - 1 TB
4 x Xeon X6550 @ 2.0 GHz - 512 GB
April 24, 2016 April 18, 2016   Ron Watkins Log(2) 500,000,000,000

Compute:  12.8 days

Verify:  14.4 days

4 x Xeon X5690 @ 3.47 GHz - 141 GB
April 17, 2016 April 12, 2016   Ron Watkins Catalan's Constant 250,000,000,000

Compute:  204 hours

Verify:  207 hours

4 x Xeon E5-4660 v3 @ 2.1 GHz
1 TB
April 9, 2016 April 3, 2016   Ron Watkins Log(10) 500,000,000,000

Compute:  14.4 days

Verify:  15.2 days

2 x Xeon X5690 @ 3.47 GHz
141 GB
February 8, 2016 February 6, 2016   Mike A Catalan's Constant 500,000,000,000

Compute:  26.1 days

Not Verified

2 x Intel Xeon E5-2697 v3 @ 2.6 GHz
128 GB
December 21, 2015 December 21, 2015   Dipanjan Nag Zeta(3) - Apery's Constant 400,000,000,000

Compute:  22 days

Verify:  24 days

Xeon E5-2698B @ 2.0 GHz - 224 GB
July 24, 2015 July 22, 2015
July 23, 2015
Source Ron Watkins
Dustin Kirkland
Golden Ratio 2,000,000,000,000

Compute:  77.3 hours

Verify:  76.33 hours

Compute:  79.3 hours

Verify:  80.8 hours

4 x Xeon X6550 @ 2 GHz - 512 GB
Xeon E5-2676 v3 @ 2.4 GHz - 64 GB
October 8, 2014 October 7, 2014   "houkouonchi" Pi 13,300,000,000,000

Compute:  208 days

Verify:  182 hours

 

Validation File

2 x Xeon E5-4650L @ 2.6 GHz
192 GB DDR3 @ 1333 MHz
24 x 4 TB + 30 x 3 TB
December 28, 2013 December 28, 2013 Source Shigeru Kondo Pi 12,100,000,000,050

Compute: 94 days

Verify: 46 hours

2 x Xeon E5-2690 @ 2.9 GHz
128 GB DDR3 @ 1600 MHz
24 x 3 TB

See the complete list including other notably large computations.

 

If you wish to set a record, you must run two computations using different formulas (one to compute, the other to verify). Then send me the validation files, but do not make any attempt to modify them. The validation files are protected with a checksum to prevent tampering/cheating. Yes, people have tried to cheat before.

 

An exception to the "two computations rule" can be made for Pi since it can be verified using BBP formulas.

 

Note that for anyone attempting to set a Pi world record: Should the attempt succeed, I kindly ask that you make yourself sufficiently available for external requests to access or download the digits in its entirety (at least until it is broken again by someone else). Pi is popular enough that people do actually want to see the digits.

 

Features:

Aside from computing Pi and other constants, y-cruncher is great for stress testing 64-bit systems with lots of ram.

 

 

Download:

Sample Screenshot: 100 billion digits of Pi

Core i7 4770K @ 4.0 GHz - 32GB DDR3 @ 2133 MHz - 16 HDs

 

Latest Releases: (September 16, 2016)

OS Programs Download Link Size

Windows

y-cruncher + HWBOT Submitter

y-cruncher v0.7.1.9466.zip

16.8 MB

Linux (Static)

y-cruncher Only

y-cruncher v0.7.1.9466-static.tar.gz

14.2 MB

Linux (Dynamic)

y-cruncher Only

y-cruncher v0.7.1.9466-dynamic.tar.gz

9.90 MB

Windows

HWBOT Submitter Only

HWBOT Submitter v0.9.5.103.jar

2.53 MB

 

 

 

 

 

 

 

 

 

The Linux version comes in both statically and dynamically linked versions. The static version should work on most Linux distributions, but lacks Cilk Plus. The dynamic version supports Cilk Plus, but is less portable due to the DLL dependency hell.

 

The HWBOT submitter allows y-cruncher benchmarks to be submitted to HWBOT - which is a competitive overclocking site. It is currently only available for Windows.

 

System Requirements:

Windows:

Linux:

All Systems:

Very old systems that don't meet these requirements may be able to run older versions of y-cruncher. Support goes all the way back to even before Windows XP.

 

Version History:

 

Other Downloads (for C++ programmers):

 

Advanced Documentation:

 

 

 

 

 

Known Issues:

 

Functionality Issues:

 

Performance Issues:

So while it may be difficult to believe, Windows is currently the more suitable OS for running y-cruncher.

 

Benchmarks:

Comparison Chart: (Last updated: May 14, 2016)

 

Computations of Pi to various sizes. All times in seconds. All computations done entirely in ram.

The timings include the time needed to convert the digits to decimal representation, but not the time needed to write out the digits to disk.

 

 

Laptops:

Processor(s): Core i7 3630QM Core i7 6820HK
Generation: Intel Ivy Bridge Intel Skylake
Cores/Threads: 4/8 4/8
Processor Speed: 3.2 GHz 3.2 GHz
Memory: 8 GB - 1600 MHz 48 GB - 2133 MHz
Version: v0.7.1 - AVX v0.7.1 - ADX
25,000,000 3.823 1.830
50,000,000 8.602 3.979
100,000,000 19.153 8.794
250,000,000 56.130 24.877
500,000,000 131.078 54.869
1,000,000,000 313.130 121.586
2,500,000,000   346.573
5,000,000,000   765.084
10,000,000,000   1,665.325

 

Single-Processor Desktops:

Processor(s): Core 2 Quad Q6600 Core i7 920 FX-8350 Core i7 4770K Core i7 5960X Core i7 5775C* Core i7 6700K**
Generation: Intel Core Intel Nehalem AMD Piledriver Intel Haswell Intel Haswell Intel Broadwell Intel Skylake
Cores/Threads: 4/4 4/8 8/8 4/8 8/16 4/8 4/8
Processor Speed: 2.4 GHz 3.5 GHz (OC) 4.0 GHz 4.0 GHz (OC) 4.0 GHz (OC) 3.8 GHz (OC) 4.6 GHz (OC)
Memory: 6 GB - 800 MHz 12 GB - 1333 MHz 32 GB - 1333 MHz 32 GB - 2400 MHz 64 GB - 2400 MHz 16 GB - 2400 MHz 64 GB - 2800 MHz
Version: v0.7.1 - SSE3 v0.7.1 - SSE4.1 v0.7.1 - XOP v0.7.1 - AVX2 v0.7.1 - AVX2 v0.7.1 - ADX v0.6.9 - AVX2
25,000,000 10.880 5.597 3.867 1.740 1.036 1.730 1.360
50,000,000 23.984 12.223 8.619 3.867 2.247 3.940 3.117
100,000,000 53.505 27.254 19.278 8.579 4.749 8.739 6.756
250,000,000 156.763 80.000 54.761 24.227 12.826 25.073 19.857
500,000,000 354.178 178.933 121.721 53.865 28.588 56.343 45.579
1,000,000,000 803.675 406.073 266.824 119.836 62.652 125.967 98.891
2,500,000,000     765.289 338.446 177.613 369.738 284.260
5,000,000,000     1,701.848 751.700 390.902   609.001
10,000,000,000         850.720   1,328.204

*Credit to André Bachmann.

**Credit to Oliver Kruse.

 

 

Multi-Processor Workstation/Servers:

Processor(s): 2 x Xeon X5482 2 x Xeon E5-26901 2 x Xeon E5-2683 v31 2 x Xeon E5-2696 v42 4 x Xeon E7-8880 v33
Generation: Intel Penryn Intel Sandy Bridge Intel Haswell Intel Broadwell Intel Haswell
Cores/Threads: 8/8 16/32 28/56 44/88 64/128
Processor Speed: 3.2 GHz 3.5 GHz 2.03 GHz 2.2 GHz 2.3 GHz
Memory: 64 GB - 800 MHz 256 GB - ??? 128 GB - ??? 768 GB - ??? 2 TB - ???
Version: v0.6.9 - SSE4.1 v0.6.2/3 - AVX v0.6.9 - AVX2 v0.7.1 - ADX v0.7.1 - AVX2
25,000,000 6.578 2.283 0.907 0.715 1.176
50,000,000 12.965 4.295 1.745 1.344 2.321
100,000,000 26.194 8.167 3.317 2.673 4.217
250,000,000 71.395 20.765 8.339 6.853 8.781
500,000,000 157.234 42.394 17.708 14.538 15.879
1,000,000,000 347.962 89.920 37.311 31.260 32.078
2,500,000,000 979.043 239.154 102.131 84.271 78.251
5,000,000,000 2,170.838 520.977 218.917 192.889 164.157
10,000,000,000 4,768.905 1,131.809 471.802 417.322 346.307
25,000,000,000   3,341.281 1,511.852 1,186.881 957.966
50,000,000,000   7,355.076   2,601.476 2,096.169
100,000,000,000       6,037.704 4,442.742
250,000,000,000         17,428.450

1Credit to Shigeru Kondo.

2Credit to "yoyo".

3Credit to Jacob Coleman

 

 

Fastest Times:

The full chart of rankings for each size can be found here:

These fastest times may include unreleased betas.


Got a faster time? Let me know: a-yee@u.northwestern.edu

Note that I usually don't respond to these emails. I simply put them into the charts which I update periodically.


Algorithms and Developments:

 

FAQ:

 

Pi and other Constants:

 

Hardware and Overclocking:

 

Academia:

 

Programming:

 

Program Usage:

 

Other:

 

Links:

Here's some interesting sites dedicated to the computation of Pi and other constants:

 

Questions or Comments

Contact me via e-mail. I'm pretty good with responding unless it gets caught in my school's junk mail filter.