y-cruncher——一种多线程Pi-Program

从一个高中项目来看。。。

作者:Alexander J.Yee

(上次更新时间:2024年4月3日)

 

快捷方式:

 

第一个用于多核系统的可扩展多线程Pi-benchmark。。。

 

你的计算机计算Pi的速度有多快?

 

y-cruncher是一个可以计算Pi和其他数万亿位数的常数的程序。

它是第一个多线程并可扩展到多核系统的同类产品。自2009年推出以来,它已成为超频器和硬件爱好者常用的基准测试和压力测试应用程序。

 

y-cruncher已被用来创造数项Pi数字最多的世界纪录。

 

当前版本:

窗户:版本0.8.4建造9538(发布日期:2024年2月22日)

Linux:版本0.8.4建造9538(发布日期:2024年2月22日)

 

官方Mersenneforum分论坛.

官方HWBOT论坛线程.

 

新闻:

 

通过优化对抗编译器回归:(2024年4月3日)-永久链接

 

这类话题很难写,因为它并不都是正面的。但让我们从一张桌子开始,因为每个人都讨厌文字墙:

处理器 建筑 时钟速度 二元的 ISA公司 10亿位数Pi(秒)
0.8.4版 v0.8.5(国际商会) v0.8.5(ICX) v0.8.4->v0.8.5 国际商会->国际商会 总体
酷睿i7 920 英特尔Nehalem 3.5 GHz+3 x 1333 MT/s 08毫米 x64不锈钢4.1 535.818 492.971 482.982 +8.00% +2.03% +9.86%
核心i7 3630QM 英特尔常春藤大桥 库存+2 x 1600 MT/s 11-瑞士国家银行 x64 AVX 339.96 318.037 305.360 +6.45% +3.99% +10.18%
FX-8350型 AMD Piledriver公司 库存+2 x 1600 MT/s 12月2日 x64 FMA3型 225.749 218.338 216.159 +3.28% +1.00% +4.25%
核心i7 5960X 处理器 4.0 GHz+4 x 2400 MT/s 13-HSW(高速钢) x64 AVX2 49.441 48.568 50.205 +1.77% -3.37% -1.55%
核心i7 6820HK 英特尔天湖 库存+2 x 2133 MT/s 14个BDW x64 AVX2+ADX 102.144 100.887 103.570 +1.23% -2.66% -1.40%
Ryzen 7 1800X型 AMD禅宗1 库存+2 x 2866 MT/s 17-ZN1型 x64 AVX2+ADX 77.505 75.965 76.800 +1.99% -1.10% +0.91%
芯i9 7940X 英特尔天湖X 3.6 GHz(AVX512)+4 x 3466 MT/s 17平方英尺 x64 AVX512-DQ 20.686 19.912 20.428 +3.74% -2.59% +1.25%
瑞岑9 3950X AMD禅宗2 库存+2 x 2666 MT/s 19-ZN2型 x64 AVX2+ADX 34.814 33.292 33.161 +4.37% +0.39% +4.75%
芯i7 11800H 英特尔老虎湖 库存+2 x 3200 MT/s 18-CNL公司 x64 AVX512-VBMI 35.739 34.438 35.052 +3.64% -1.78% +1.92%
瑞森9 7950X AMD禅宗4 库存+2 x 5000 MT/s 22-ZN4型 x64 AVX512-GFNI 18.978 18.848 18.937 +0.69% -0.47% +0.22%

ICC是英特尔的老式经典C++编译器(ICC)。ICX是英特尔新推出的LLVM编译器(ICX)。所以我们可以看到:

  1. y-cruncher v0.8.5将进行新的软件优化,以提高所有处理器的性能。
  2. 英特尔的新编译器(ICX)在几乎所有现代处理器上都比旧编译器(ICC)差。

简而言之,英特尔的新编译器正在导致y-cruncher的性能下降。为了防止下一个版本的y-cruncher变得越来越慢,我试图用新的性能优化来抵消这些倒退——到目前为止只取得了部分成功。

 

 

但我们是怎么到这里的?

 

英特尔经典的C++编译器历来是代码性能最好的编译器。然而,大约从2020年开始,英特尔开始迁移到一个新的基于LLVM的编译器(ICX),去年他们停止了旧编译器(ICC)的使用。问题是,至少对y-cruncher来说,ICX实际上并不比ICC好。

处理器 建筑 时钟速度 二元的 ISA公司 BBP-Pi的第100亿个十六进制数字(秒)
MSVC 17.7.1标准 国际商会19.2 ICX 2024年 国际商会->国际商会
核心i7 920 英特尔Nehalem 3.5千兆赫 08毫米 x64不锈钢4.1 568.384 574.745 725.910 -26.30%
核心i7 3630QM 英特尔常春藤大桥 股票 11-瑞士国家银行 x64 AVX 525.811 436.337 464.628 -6.48%
FX-8350型 AMD Piledriver公司 股票 12-BD2型 x64固件A3 251.695 231.205 235.828 -2.00%
核心i7 5960X 处理器 4.0千兆赫 13小时 x64 AVX2 55.249 50.640 53.422 -5.49%
核心i7 6820HK 英特尔天湖 股票 14个BDW x64 AVX2 107.977 105.307 108.959 -3.47%
Ryzen 7 1800X型 AMD禅宗1 股票 17-ZN1型 x64 AVX2 97.809 97.915 95.269 +2.70%
芯i9 7940X 英特尔天湖X 3.6 GHz(AVX512) 17平方英尺 x64 AVX512-DQ 13.518 13.561 15.340 -13.12%
瑞森9 3950X AMD禅宗2 股票 19-ZN2型 x64 AVX2 22.506 21.043 20.982 +0.29%
芯i7 11800H 英特尔老虎湖 股票 18-CNL公司 x64 AVX512-DQ 50.002 50.798 51.654 -1.69%
瑞森9 7950X AMD禅宗4 股票 22-ZN4型 x64 AVX512-DQ 11.521 11.424 12.232 -7.07%

换言之,英特尔摆脱了旧编译器,而新编译器的性能尚未与之匹配。而且由于需要保持对C++功能和CPU指令集的最新了解,我不能永远使用旧编译器。因此,即使会影响性能,“升级”也是不可避免的。

 

其他编译器呢?如果英特尔的新编译器不好,那么其他替代品呢?好。。。

因此,即使英特尔让他们的编译器变得更糟糕,它仍然比竞争对手更好。

 

 

那么,为什么英特尔的新编译器比旧编译器差呢?

 

与经典编译器相比,Intel的LLVM编译器中没有一个回归负责整个回归。这是许多回归(和改进)的组合,这些回归加起来最终以百分之几的优势获胜。有趣的是,小的回归往往涉及较差的指令选择和排序,而较大的回归往往属于以下类别:

最后一类特别令人讨厌。复杂的循环优化,如环内切换,回路聚变/裂变,循环物化,攻击性循环展开,等等……对于大多数编译器来说,由于存在回火的高风险,只能在最大优化级别(O3)下启用。然而,我观察到,对于ICX,其中大多数已经在O1和O2下启用,并且很难或不可能禁用。当这种优化适得其反时,它可能会以3倍或更多的倍数轻易地破坏循环的性能。

 

下面是一些伪代码示例,说明了我观察到的ICX循环优化适得其反的主要方式。经历这种行为的实际代码通常要大得多,而且大小也更复杂。我们已经向英特尔工程师提供了一些自带的示例,希望他们能够改进编译器。

 

 

示例1: 环路融合失败

 

   双重的*A=。。。;

   对于(尺寸_tc=0;c<长度;c++){

       双重的tmp=A[c];

 

       //长依赖链。

 

A[c]=tmp;

}

   对于(尺寸_tc=0;c<长度;c++){

       双重的tmp=A[c];

 

       //长依赖链。

 

A[c]=tmp;

    }

在本例中,每个循环的迭代都是独立的,可以并行运行。但在每个迭代中都有一个长的依赖链。为了在CPU重新排序窗口中保持迭代,工作被有意分割成多个循环(这里显示的不仅仅是2个循环)。这允许CPU重新排序跨迭代-因此允许指令级并行。

 

然而,ICX并不总是允许这种情况发生。相反,它有时决定通过将循环融合到一起来撤消我的手动优化:

 

   对于(尺寸_tc=0;c<长度;c(c)++){

       双重的 临时管理计划=A[c];

 

       // 超级的长依赖链。

 

       A【c】=临时管理计划;

   }

虽然这样可以通过只遍历数组一次而不是两次来改善内存局部性。它增加了依赖链,使得CPU不再能够在迭代之间进行足够的重新排序。因此,它会破坏指令级并行(ILP)并影响性能。编译器可能错误地假设数据集不适合缓存,而实际上它适合缓存。

 

同样的情况也可能发生在环入交换中,ICX将交换循环以改善内存局部性,但代价是创建消除指令级并行性的依赖链。

 

 

例2:所有东西都爆炸了

 

这个例子是一个病理学上很糟糕的案例,其中循环不变代码运动(LICM)循环展开结合使用可以创建一个完美的风暴,同时破坏指令缓存、数据缓存和性能。虽然它看起来相当具体,但它在y-cruncher中却是一种常见的模式。

 

这里的代码是迭代使用1000个标量权重的AVX512向量数组。每次使用标量权重时,都会将其广播到全矢量以在阵列a上操作。在AVX512中,标量广播的成本与全矢量加载的成本相同。因此,在内部循环中重做广播不会增加成本。

 

   常数 双重的*重量=。。。;

   __512d米*A=。。。;

   对于(尺寸_tc=0;c<长度;c(c)++){

       __512d米 临时管理计划=A[c];

 

       对于(尺寸_tw=0;w<1000;w++){

           __512d米重量=_mm512_设置1_局部放电(重量[w]); // 标量广播。与常规负载相同的成本。

           // 与“临时管理计划和“重量”。

       }

 

       A【c】= 临时管理计划;

   }

 

相反,ICX倾向于将其转变为以下内容:

 

   常数 双重的*重量=。。。;

   __512d米*A=。。。;

 

   __512d米 展开_重量0=_mm512_set1_pd(重量[0]); // 每个都是64字节!

   __512d米 展开_重量1=_mm512_set1_pd(重量[1]);

   __512d米 展开_重量2=_mm512_set1_pd(重量[2]);

   ...

   __512d米 展开_重量999=_mm512_set1_pd(重量[999]);

 

   对于(尺寸_tc=0;c<长度;c(c)++){

       __512d米 临时管理计划=A[c];

 

       // 带有“临时管理计划“和”展开的权重0".

       // 与“临时管理计划“和”展开的权重1".

       // 与“临时管理计划“和”展开的权重2英寸。

       // ...

       // 与“临时管理计划“和”展开的权重999".

 

       A【c】= 临时管理计划;

   }

本来应该是一堆(免费)标量广播的内容,现在已经变成了64KB的堆栈使用量和两个完全展开的1000-iteration循环,其中一个循环完全无用。在这个例子中,这种转换从来都没有好处,因为广播负载已经可以自由开始了。因此,用堆栈溢出和丢弃数据和指令缓存来替换它们只会使情况变得更糟。对于较小的值长度,由于初始设置,此转换会对性能造成破坏。

 

那么发生了什么?

  1. 编译器首先会看到内部循环具有编译时行程计数。所以它决定可以完全展开它。我从未见过编译器完全展开这么大的循环,但ICX显然是用几个y-cruncher内核来完成的。
  2. 编译器推断出重量不别名为A类因此,可以看出负载和标量广播是循环不变的。所以它把他们从循环中拉了出来。是的,总共1000个。
  3. 这1000个值需要去某个地方,对吗?因此,它会将它们溢出到堆栈中(并且还会因堆栈未对齐而招致任何惩罚)。

简单地说,其他编译器不做这种事情。或者至少他们有限制来防止这种情况发生。ICX似乎完全不受约束。

 

ICX错误优化中的一个常见主题是,循环不变量代码运动(LICM)和公共子表达式消除(CSE)将创建额外的活动值,这些值最终会溢出到堆栈中,因此调用的惩罚通常大于初始节省。上面的例子是一个樱桃点缀的例子,ICX将这个概念发挥到了极致,导致了二次回归的雪崩,例如错位惩罚和缓存污染。

 

 

结论:

 

英特尔的LLVM编译器无疑是一个非常强大的编译器。我学得越多,对它的能力印象就越深刻。然而,权力伴随责任,不幸的是,我不能说ICX很好地运用了这一权力。我还没有调查这些问题是在LLVM本身还是在英特尔对其进行的修改中。但不管怎样,到今天为止,英特尔的LLVM编译器最能被描述为一个带剪刀的孩子——年轻而鲁莽地使用危险的工具。

 

ICX需要多长时间才能达到ICC的代码生成质量?我不知道。在等待了一年多之后,我决定这可能在很长一段时间内不会发生。对于ICX搞砸的每一件事,它可能会让其他5件事都做对。但对于已经进行过手动优化的代码,正确地使用它是中性的,而错误地使用它会带来很大的伤害。下拉到汇编不是一个选项,因为有“数千”个不同的内核,它们大部分是通过模板元编程生成的。

 

y-cruncher是唯一受此影响的应用程序吗?可能不会。

 

 

 

旧新闻

 

y-cruncher设置的记录:

y-cruncher已经被用于设置许多世界纪录大小的计算。

 

蓝色:当前世界纪录

绿色:前世界纪录

红色:未经验证的计算。只有使用替代配方进行验证,才有资格成为世界纪录。

发布日期 完成日期: 资料来源: 谁: 常量: 十进制数字: 时间: 计算机:
2024年3月14日 2024年2月27日 来源

乔丹·拉努斯

凯文·奥布莱恩

布莱恩·比勒

(StorageReview)

圆周率 105,000,000,000,000

计算:75天

验证:4天

验证文件

2 x AMD Epyc 9754
1.5 TB
960 TB存储

2024年2月13日 2024年2月12日   乔丹·拉努斯 日志(2) 3,000,000,000,000

计算:42.7小时
验证:58.3小时

2 x Intel Xeon铂金8460H
512 GB
2024年1月17日 2023年1月10日   马杜·巴拉卡特 泽塔(5) 250亿

计算:6.02天

未验证

Intel Xeon Gold 5412U

125 GB

2024年1月17日 2023年12月12日   乔丹·拉努斯 伽玛(1/4) 1,000,000,000,000

计算:22.6小时

验证:22.8小时

2 x Intel Xeon铂金8450H
512 GB
2023年12月26日 2023年12月24日   乔丹·拉努斯 e(电子) 35,000,000,000,000

计算:94.5小时

验证:92.5小时

2 x Intel Xeon铂金8460H
512 GB

2023年12月26日 2023年12月25日   乔丹·拉努斯 2的平方根 20,000,000,000,000

计算:29.2小时

验证:21.6小时

Intel Xeon铂金8450H
512 GB
Intel Xeon铂金8460H
512 GB
2023年12月26日 2023年12月22日  

安德鲁·孙

泽塔(3)-阿佩里常数 2,020,569,031,595 计算:5.61天

验证:5.93天

英特尔至强白金8347C
505 GB
Intel Xeon白金8347C
507 GB
2023年12月18日 2023年12月15日   乔丹·拉努斯 伽马(1/3) 1,000,000,000,000

计算:17.5小时

验证:23.3小时

2 x Intel Xeon铂金8450H

512 GB

2023年12月18日 2023年12月11日   乔丹·拉努斯 泽塔(5) 201,000,001,300

计算:29.9小时

验证:23.5小时

2 x AMD EPYC 9754

1.5 TB

2023年12月2日 2023年11月27日   乔丹·拉努斯 黄金比例 20,000,000,000,000

计算:76.1小时

验证:30.0小时

AMD Epyc 9654-1.5 TB

Intel Xeon铂金8450H

2023年9月9日 2023年9月7日  

安德鲁·孙

Euler-Mascheroni常数 1,337,000,000,000

计算:28.5天

验证:41.3天

Intel Xeon白金83470C

400 GB

2022年7月17日 2022年7月15日   Seungmin Kim先生 柠檬酸盐 1,200,000,000,100

计算:32.2天

验证:46.5天

2 x Intel Xeon Gold 6140
377 GB

2022年6月8日 2022年3月21日   艾玛·哈鲁卡·伊沃(Emma Haruka Iwao) 圆周率 100,000,000,000,000

计算:158天

验证:12.6小时

验证文件

128 vCPU Intel Ice Lake(GCP)
864 GB
663 TB存储

2022年3月14日 2022年3月9日   Seungmin Kim先生 加泰罗尼亚常数 1,200,000,000,100 计算:48.6天

验证:47.3天

2 x Intel Xeon Gold 6140
2 x Intel XeonE5-2680版本3

2021年8月17日 2021年8月14日 来源 UAS格里森 圆周率 62831853071796 计算:108天
验证:34.4小时
AMD Epyc 7542公司
1 TB
34+4个硬盘
2020年9月13日 2020年9月6日   Seungmin Kim先生 日志(10) 1,200,000,000,100

计算:14.5天

验证:22.5天

2 x Intel Xeon E5-2699 v3
756 GB
2个Intel Xeon Gold 5220
754 GB
2020年1月29日 2020年1月29日 博客 蒂莫西·穆利肯 圆周率 50,000,000,000,000

计算:303天

验证:17.2小时

验证文件

4 x Intel Xeon E7-4880 v2

315 GB

48个硬盘驱动器

2019年3月14日 2019年1月21日

博客

1+2

艾玛·哈鲁卡·伊沃(Emma Haruka Iwao) 圆周率 31,415,926,535,897 计算:121天

验证:20.0小时

验证文件

2 x未公开的Intel Xeon
>1.40 TB DDR4
>240 TB固态硬盘
2016年11月15日 2016年11月11日 博客
赞助商
彼得·特鲁布 圆周率 22,459,157,718,361 计算:105天

验证:28小时

验证文件

4 x Xeon E7-8890 v3
1.25结核病DDR4
20 x 6 TB 7200 RPM希捷
2014年10月8日 2014年10月7日  

桑登·范·内斯

(houkounchi)

圆周率 13300000000000美元

计算:208天

验证:182小时

验证文件

2台Xeon E5-4650L
192 GB DDR3@1333 MHz
24 x 4 TB+30 x 3 TB
2013年12月28日 2013年12月28日 来源 近藤茂 圆周率 12,100,000,000,050

计算:94天

验证:46小时

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

请参阅完整列表包括其他显著的大型计算。如果你想自己设置一个记录,规则就在这个链接中。

 

 

特征:

 

y-cruncher的主要计算特征是:

 

下载:

示例截图:1万亿位圆周率

核心i7 5960X@4.0 GHz-64 DDR4@2400 MHz-16个HD

 

最新版本:(2024年2月22日)

下载任何这些文件都构成对许可协议.

操作系统 下载链接 大小

窗户

y-cruncher版本0.8.4.9538a.zip

35.0 MB

Linux(静态)

y-cruncher v0.8.4.9538-static.tar.xz型

26.7 MB

Linux(动态)

y-cruncher v0.8.4.9538-dynamic.tar.xz型

19.0 MB

 

 

 

 

 

 

 

 

也可以找到下载在GitHub上。如果您喜欢HTTPS,请使用此选项。

 

Linux版本有静态链接版本和动态链接版本。静态版本应该适用于大多数Linux发行版,但缺少TBB和NUMA绑定。动态版本支持所有功能,但由于DLL依赖项地狱.

 

HWBOT公司提交随此版本返回。所以我希望很快能改写排行榜。

 

系统要求:

窗户:

Linux:

所有系统:

不满足这些要求的非常旧的系统可能能够运行较旧版本的y-cruncher。支持一直追溯到Windows XP之前。

 

版本历史记录:

 

其他下载(适用于C++程序员):

 

高级文档:

 

 

基准:

比较图:(上次更新时间:2023年7月11日)

 

将圆周率计算为各种大小。所有时间均以秒为单位。所有计算都完全在ram中完成。

计时包括将数字转换为十进制表示所需的时间,但不包括将数字写入磁盘所需的次数。

 

蓝色:基准是最新版本的y-cruncher。

绿色:基准测试是用一个旧版本的y-cruncher完成的,其性能与当前版本相当。

红色:由于使用的是旧版本的y-cruncher,无法与当前版本相比,因此基准测试已经过时了。

紫色:基准测试来自未发布的内部构建,其速度无法与当前版本相比。

 

 

笔记本电脑+低功耗:

处理器: 核心i7 6820HK 芯i7 11800H 芯i7 11800H
生成: 英特尔天湖 英特尔老虎湖 英特尔老虎湖
芯/螺纹: 4/8 8/16 8/16
处理器速度: 3.2 GHz(库存) ~2.5 GHz(45W PL) 约3.0 GHz(60瓦PL)
内存: 64 GB@2133 MT/s 64 GB@3200 MT/s 64 GB@3200 MT/s
版本: v0.8.1(14-BDW) v0.8.1(18-CNL) v0.8.1(18-CNL)
指令集: x64 AVX2+ADX x64 AVX512-VBMI x64 AVX512-VBMI
25,000,000 1.500 0.655 0.530
50,000,000 3.307 1.406 1.125
100,000,000 7.238 3.005 2.447
250,000,000 20.596 8.576 6.855
500000000 45.967 19.747 15.356
1,000,000,000 102.885 42.727 34.308
2,500,000,000 290.824 123.523 96.918
5,000,000,000 640.506 247.705 218.782
10,000,000,000 1,391.204 526.212 480.197
学分:      
处理器: 核心i3 8121U 芯i7 11800H
生成: 英特尔加农湖 英特尔老虎湖
芯线/螺纹: 2/4 8/16
处理器速度: ~2.5-3.2 GHz(库存) ~2.5-2.8 GHz(45W PL)
内存: 8 GB@2400 MT/s 64 GB@3200 MT/s
版本: v0.8.1(14-BDW) v0.8.1(17-SKX) v0.8.1(18-CNL) v0.8.1(14-BDW) v0.8.1(17-SKX) v0.8.1(18-CNL)
指令集: x64 AVX2+ADX x64 AVX512-DQ x64 AVX512-VBMI x64 AVX2+ADX x64 AVX512-DQ x64 AVX512-VBMI
25,000,000 2.857 2.467 1.988 0.907 0.853 0.655
50,000,000 6.446 5.501 4.392 2.075 1.862 1.406
100,000,000 14.335 12.257 9.490 4.176 3.749 3.005
250,000,000 42.566 36.204 27.137 12.014 10.705 8.576
500,000,000 99.040 85.443 64.359 28.805 24.123 19.747
1,000,000,000 228.863 198.405 151.605 63.898 55.264 42.727
2,500,000,000       187.882 148.423 123.523
5,000,000,000       375.130 327.776 247.705
10,000,000,000       794.573 709.606 526.212
学分:            

 

 

 

主流台式机:

处理器: 瑞森5 7600 核心i9 11700K 瑞森9 3950X 瑞森9 5950X Intel Core i9 13900KS 瑞森9 7950X
生成: AMD禅4 英特尔火箭湖 AMD禅宗2 AMD禅宗3 英特尔猛禽湖 AMD禅4
芯/螺纹: 6/12 8/16 16/32 16/32 24/32 16/32
处理器速度:   股票 股票 股票 5.7/4.5千兆赫 股票
内存: 32 GB 32 GB-3200 MT/s 128 GB-2666 MT/s 64 GB-3200 MT/s 96 GB-8000 MT/s 128 GB-4400 MT/s 128 GB-5200 MT/s
程序版本: v0.8.1(22-ZN4) v0.8.1(18-CNL) v0.8.1(19-ZN2) v0.8.1(19-ZN2) v0.8.1(14-BDW) v0.8.1(22-ZN4)
指令集: x64 AVX512-GFNI x64 AVX512-VBMI x64 AVX2+ADX x64 AVX2+ADX x64 AVX2+ADX x64 AVX512-GFNI
25,000,000 0.439 0.501 0.588 0.490 0.241 0.312 0.307
50,000,000   1.114 1.257 1.090 0.525 0.679 0.654
100,000,000   2.223 2.685 2.345 1.132 1.517 1.410
250,000,000   6.220 7.251 6.371 3.185 4.157 3.820
500,000,000 13.378 13.573 15.556 13.395 7.065 8.883 8.062
1,000,000,000 29.497 30.415 33.925 29.301 15.901 18.542 17.039
2,500,000,000 83.421 86.119 96.695 82.204 44.888 50.743 46.467
5,000,000,000 181.647 193.718 215.333 181.355 99.566 110.379 101.345
10,000,000,000     473.958 399.012   241.162 220.522
25,000,000,000     1,361.732     680.344 623.493
学分: 乔尔·鲁芬 奥利弗·克鲁斯

 

奥利弗·克鲁斯 曾铮    
处理器: 核心i7 920 FX-8350型 核心i7 4770K Ryzen 7 1800X型 Ryzen 7 3800倍
生成: 英特尔Nehalem AMD Piledriver公司 处理器 AMD禅宗1 AMD禅宗2
芯/螺纹: 4/8 8/8 4/8 8/16 8/16
处理器速度: 3.5千兆赫 股票 4.0千兆赫 股票 股票
内存: 12 GB-1333 MT/s 32 GB-1600 MT/s 32 GB-2133 MT/s 64 GB-2866公吨/秒 32 GB-3600 MT/s
程序版本: v0.8.1(08-NHM) v0.8.1(11-BD1) v0.8.1(13-HSW) v0.8.1(17-ZN1) v0.8.1(19-ZN2)
指令集: x64不锈钢4.1 x64 FMA4型 x64 AVX2 x64 AVX2+ADX x64 AVX2+ADX
25,000,000 7.032 3.677 1.546 1.150 0.654
50,000,000 17.174 7.703 3.259 2.527 1.415
100,000,000 36.164 16.576 6.987 5.555 3.028
250,000,000 105.789 46.597 19.588 15.760 8.404
500,000,000 236.096 103.165 43.197 34.659 18.440
1,000,000,000 531.676 230.780 96.845 78.690 41.097
2,500,000,000   669.594 274.336 220.278 117.788
5,000,000,000   1,460.714 606.605 493.388 266.719
10,000,000,000       1,078.187  
25,000,000,000          
学分:         奥利弗·克鲁斯

 

 

 

高端台式机:

处理器: 核心i7 5960X 裂线器1950X 芯i9 7900X 芯i9 7940X 螺纹裂土器3990X 至强W7-2495X Xeon W9-3475X公司
生成: 处理器 AMD Zen 1型 英特尔天湖X 英特尔天湖X AMD禅宗2 英特尔Sapphire Rapids 英特尔Sapphire Rapids
芯/螺纹: 8/16 16/32 10/20 14/28 64/128 24/48 第36页,共72页
处理器速度: 4.0千兆赫 股票 约3.6 GHz(200瓦PL) 3.6 GHz(AVX512) 2.9千兆赫 4.1-4.9千兆赫 4.2-4.9千兆赫
内存: 64 GB-2400 MT/s 64 GB-2800 MT/s 128 GB-3000 MT/s 128 GB-3466 MT/s 约141 GB-2666 MT/s 64 GB-6400 MT/s 128 GB-6400 MT/s
程序版本: v0.8.1(13-HSW) v0.8.1(17-ZN1) v0.8.1(17-SKX) v0.8.1(17-SKX) v0.8.1(19-ZN2) v0.8.1(18-CNL) v0.8.3(18-CNL)
指令集: x64 AVX2 x64 AVX2+ADX x64 AVX512-DQ x64 AVX512-DQ x64 AVX2+ADX x64 AVX512-VBMI x64 AVX512-VBMI
2500万 0.807 0.756 0.522 0.404 0.584 0.170 0.201
50,000,000 1.743 1.579 1.028 0.721 1.181 0.340 0.321
100,000,000 3.647 3.273 2.048 1.451 2.409 0.726 0.586
250,000,000 10.088 8.990 5.752 4.056 5.724 2.068 1.413
500,000,000 22.075 19.604 12.830 9.017 10.881 4.588 2.627
1,000,000,000 49.232 43.014 28.906 20.518 21.496 10.190 5.924
2,500,000,000 139.404 121.645 82.764 60.636 58.009 28.881 16.345
5,000,000,000 311.388 271.983 186.233 137.906 126.513 64.158 36.139
10,000,000,000 669.736 613.450 401.820 302.121 274.050 124.826 78.816
25,000,000,000     1,125.775 843.498 768.212   225.482
学分:   奥利弗·克鲁斯     保罗·安德伍德 曾铮

 

 

多处理器工作站/服务器:

 

由于高岩芯数和NUMA的影响(非统一内存访问),多处理器系统上的性能对各种设置极为敏感。因此,这些基准测试可能不能完全代表硬件的能力。

处理器:

Xeon铂8375C

(AWS x2iedn.32x大)

Xeon铂金8488C

(AWS m7i.48x大)

Epyc 9R14型

(AWS m7a.48x大)

Epyc 9R14型

(AWS hpc7a.96x大)

Epyc 9754公司
生成: 英特尔Sapphire Rapids 英特尔Sapphire Rapids AMD热那亚 AMD贝加莫
芯/螺纹: 64/128 96/192 192/192 128/256 128/128
处理器速度: 2.9千兆赫 2.4千兆赫 2.6千兆赫 2.25-3.1千兆赫
内存: 4结核 744 GB 740 GB 768 GB-4800 MT/s
程序版本: v0.8.1(18-CNL) v0.8.1(18-CNL) v0.8.1(22-ZN4) v0.8.1(22-ZN4)
指令集: x64 AVX512-VBMI x64 AVX512-VBMI x64 AVX512-GFNI x64 AVX512-GFNI
25,000,000 0.250 0.163 0.216 0.213 0.245 0.229
50,000,000 0.454 0.289 0.285 0.279 0.350 0.433
100,000,000 0.844 0.531 0.642 0.635 0.853 0.876
250,000,000 1.976 1.288 1.776 1.716 2.224 2.133
500,000,000 3.794 2.499 3.728 3.621 4.186 3.850
1,000,000,000 7.650 5.149 6.547 6.265 7.063 6.495
2,500,000,000 20.425 13.633 13.554 12.500 15.338 14.477
5,000,000,000 45.675 29.655 25.334 22.377 29.072 28.133
10,000,000,000 101.468 64.026 51.134 44.059 58.797 59.007
25,000,000,000 297.622 182.920 140.286 120.282 156.797 164.281
50,000,000,000 678.016 410.842 321.970 275.297 350.391 368.548
100,000,000,000 1,549.991 943.182 771.266 672.558 829.957 853.717
250,000,000,000 4,488.317          
500,000,000,000 9,685.971          
学分: 格雷格·霍根 蒂姆·韦斯利

 

处理器: Xeon铂金8124M 至强黄金6148 Xeon铂金8175M Xeon铂8275CL Epyc 7742公司 Epyc 7B12型 Epyc 7742型
生成: 英特尔天湖Purley 英特尔天湖Purley 英特尔天湖Purley 英特尔级联湖 AMD罗马 AMD罗马 AMD罗马
插座/芯线/螺纹: 2/36/72 2/40/40 2/48/96 2/48/96 2/128/256 2/112/224 2/128/256
处理器速度: 3.0千兆赫 2.4千兆赫 2.5千兆赫 3.0千兆赫   2.25千兆赫 2.25千兆赫
内存: 137 GB-?? 188 GB-?? ~756 GB-?? 192 GB 约504 GB 约882 GB 2 TB
程序版本: v0.7.5(17-SKX) v0.7.6(17-SKX) v0.7.6(17-SKX) v0.7.8(17-SKX) v0.7.7(17-ZN1) 版本0.7.8(19-ZN2) v0.7.8(19-ZN2)
指令集: x64 AVX512-DQ x64 AVX512-DQ x64 AVX512-DQ x64 AVX512-DQ x64 AVX2+ADX x64 AVX2+ADX x64 AVX2+ADX
25,000,000 0.540 0.329 0.294 0.283 0.534 0.439 0.513
50,000,000 0.981 0.683 0.617 0.544 1.027 0.838 0.920
100,000,000 1.905 1.456 1.305 1.169 2.298 1.796 1.887
250,000,000 5.085 3.737 3.591 3.125 5.854 4.509 4.650
500,000,000 10.372 7.750 7.293 6.309 10.502 8.196 8.066
1,000,000,000 21.217 16.550 15.041 13.042 17.836 14.252 13.246
2,500,000,000 55.701 45.693 39.329 34.028 35.485 30.592 27.011
5,000,000,000 118.151 99.078 83.601 71.777 62.432 58.405 49.940
10,000,000,000 247.928 212.984 176.695 153.169 115.543 116.900 98.156
25,000,000,000   599.653 491.988 425.442 307.995 314.907 258.081
50,000,000,000     1081.181美元   690.662 741.633 598.716
100,000,000,000           1715.123 1,370.714
250,000,000,000             3872.397
学分: 雅各布·科尔曼 奥利弗·克鲁斯 纽亚历克斯 新余苗 卡斯滕·斯皮尔 格雷格·霍根 宋鹏飞
处理器: 至强E5-2683 v3 至强E7-8880 v3 至强E5-2687W v4 至强E5-2686 v4 至强E5-2696 v4 Epyc 7601公司 Xeon黄金6130F
生成: 处理器 处理器 英特尔Broadwell 英特尔Broadwell 英特尔Broadwell AMD那不勒斯 英特尔天湖Purley
插座/芯线/螺纹: 2/28/56 128年4月64日 2/24/48 2/36/72 2/44/88 2/64/128 64年2月32日
处理器速度: 2.03千兆赫 2.3千兆赫 3.0千兆赫 2.3千兆赫 2.2千兆赫 2.2千兆赫 2.1千兆赫
内存: 128 GB-??? 2 TB??? 64 GB 504 GB-??? 768 GB-??? 256 GB-?? 256 GB-??
程序版本: v0.6.9(13-HSW) v0.7.1(13-HSW) v0.7.6(14-BDW) v0.7.7(14-BDW) v0.7.1(14-BDW) v0.7.3(17-ZN1) v0.7.3(17-SKX)
指令集: x64 AVX2 x64 AVX2 x64 AVX2+ADX x64 AVX2+ADX x64 AVX2+ADX x64 AVX2+ADX x64 AVX512-DQ
25,000,000 0.907 1.176 0.490 0.494 0.715 2.459 1.150
50,000,000 1.745 2.321 1.072 0.982 1.344 4.347 1.883
100,000,000 3.317 4.217 2.303 2.193 2.673 6.996 3.341
250,000,000 8.339 8.781 6.196 6.044 6.853 14.258 7.731
500,000,000 17.708 15.879 13.046 12.582 14.538 24.930 15.346
1,000,000,000 37.311 32.078 27.763 26.852 31.260 47.837 31.301
2,500,000,000 102.131 78.251 76.202 73.596 84.271 111.139 82.871
5,000,000,000 218.917 164.157 165.046 160.094 192.889 228.252 179.488
10,000,000,000 471.802 346.307 356.487 346.305 417.322 482.777 387.530
25,000,000,000 1,511.852 957.966 1,006.131 980.784 1,186.881 1,184.144 1,063.850
50,000,000,000   2,096.169 2,202.558 2,156.854 2,601.476    
100,000,000,000   4,442.742     6,037.704    
250,000,000,000   17,428.450          
学分: 近藤茂 雅各布·科尔曼 卡梅隆·吉斯布雷希特 纽亚历克斯 “悠悠” 戴夫·格雷厄姆

 

 

最快时间:

每个尺码的完整排名表如下:

这些最快的时间可能包括未发布的beta。


有更快的时间吗?让我知道:a-yee@u.northwestern.edu

请注意,我通常不会回复这些电子邮件。我只是将它们放入我定期更新的图表中(通常在2周内)。

 

 

性能提示:

 

Pi的十进制数字-以秒为单位

内核i9 7940X@3.7 GHz AVX512

记忆频率: 2666公吨/秒 3466公吨/秒
25,000,000 0.839 0.758
50,000,000 1.424 1.338
100,000,000 2.701 2.425
250,000,000 6.489 5.877
500,000,000 13.307 11.917
1,000,000,000 27.913 24.915
2,500,000,000 76.837 68.322
5,000,000,000 168.058 148.737
10,000,000,000 365.047 322.115
25,000,000,000 1,037.527 916.039

众所周知,高内核数的Skylake X处理器受到内存带宽的严重限制。

内存带宽:

 

由于计算Pi和其他常量的内存密集性,y-cruncher需要大量内存带宽才能正常运行。事实上,自2012年以来,几乎所有高端台式机上都明显存在该程序的内存限制,至少自2006年以来,大多数多插槽系统上都存在该程序。

 

建议:

如果y-cruncher暴露出其他应用程序和压力测试所没有的不稳定性,不要感到惊讶。y-cruncher的与众不同之处在于它同时给CPU和整个内存子系统带来了沉重的负载。

 

 

 

并行性能:

 

y-cruncher有很多调整并行性能的设置。默认情况下,它会尽力分析硬件并选择最佳设置。但是,由于处理器拓扑结构的组合几乎是无限的,y运算器很难为所有东西最佳地选择最佳设置。因此,有时只有手动设置才能实现最佳性能。

*如果您在控制台UI中使用基准选项,则无法更改这些高级设置。要更改它们,您需要从命令行运行基准模式或使用自定义计算菜单。

 

负载不平衡是y-cruncher中常见的故障问题。通常的原因是:

  1. 逻辑内核的数量不是二次幂。
  2. 堆芯不均匀。常见原因包括:
    • 核心以不同的速度计时。
    • 由于NUMA拓扑不平衡,内核可以访问不同数量的内存带宽。
    • 核心是隐藏在虚拟机后面的不同代核心。
  3. CPU密集型后台进程正在干扰y-cruncher使用所有硬件的能力。这适用于所有形式的系统抖动。

 

 

大页面:

 

过去,大页面并不重要,但现在在后Spectre/Mealtdown世界中却很重要。缓解措施熔化漏洞y-cruncher的性能可能会显著下降(已观察到高达5%)。事实证明,打开大页面可以减轻这种减轻的代价。(意在双关语)

 

请参阅内存分配指南如何打开大页面。

 

 

交换模式:

 

这可能是y-cruncher中最复杂的功能之一。

 

 

已知问题:

 

本节中的所有内容都正在重新验证并移至:https://github.com/Mysticial/y-cruncher/issues网站

 

 

性能问题:


算法和发展:

 

常见问题:

 

Pi和其他常数:

 

程序使用:

 

硬件和超时钟:

 

学术界:

 

编程:

 

其他:

 

链接:

以下是一些专门用于计算Pi和其他常数的有趣站点:

 

问题或评论

通过与我联系电子邮件。我回复得很好,除非它被学校的垃圾邮件过滤器捕获。

你也可以在推特上找到我@神秘的.