评估CPU内核的优化 - 页 6

 
下面是一个消息来源 提供的关于指示性质的一些信息

E5-2670没有的说明
BMI(位操纵指令)是英特尔和AMD处理器中用来加速位操纵操作的指令集。BMI不是SIMD指令,只对处理器的通用寄存器起作用。
位操纵操作最常被设计用于低级设备控制、错误检测和纠正、优化、压缩和加密的应用程序使用。程序使用BMI大大加快了这些操作的速度(有时是几倍);但是,程序员的程序代码变得更加难以编写。
英特尔和AMD处理器中的BMI指令集差别很大。
英特尔处理器使用BMI1和BMI2(除BMI1外)。
AMD处理器使用ABM(高级位操纵)指令,这是SSE4a软件包的一部分(这些指令也被英特尔使用,但作为SSE4.2和BMI1的一部分实现)。此外,AMD处理器使用TBM(尾随位操纵)指令集,这是BMI1的扩展。

F16C是x86处理器上的一个指令集,用于加速半精度二进制数(16位)和标准单精度浮点二进制数(32位)之间的转换。
F16C被用于AMD和英特尔的处理器中,极大地扩展了它们处理多媒体数据以及其他类型数据的能力。
F16C(16位浮点转换)--是x86处理器上的一个指令集,用于加速半精度二进制数(16位)和标准单精度浮点二进制数(32位)之间的转换。它本质上是基本的128位SSE指令的扩展。
在计算机工程中使用不同精度的数字是在精度和所代表的数值范围之间的妥协,这是实现高速性能和广泛的任务执行所必需的。
F16C于2009年首次用于AMD处理器,尽管它开发得更早,被称为CVT16。CVT16最初计划作为从未发布的SSE5软件包的一部分,其中包括XOP和BMI4指令。
现在,F16C指令集被用于AMD和英特尔的处理器中,大大扩展了它们在处理多媒体数据以及其他类型数据方面的能力。

FMA
一组加速浮点乘法和加法运算的处理器指令。FMA是Fused Multiply-Add的缩写。
乘加运算非常普遍,在计算机技术中发挥着重要作用。特别是当涉及到模拟信号的数字处理时(二进制视频和音频编码及其他类似操作)。正因为如此,对FMA指令的支持不仅内置于CPU,而且还内置于当今许多显卡的GPU。

除了i7-8700之外,其他所有的都没有的指示
TSX(Transactional Synchronization eXtensions)是英特尔开发的一套多核处理器指令,它提高了各核在共享相同数据时相互通信的效率,最终提高了计算机的整体性能。

MPX(内存保护扩展) - 一种利用缓冲区溢出机制对病毒和其他威胁提供强化保护的技术。
处理器可以在访问内存之前检查堆和堆栈缓冲区限制,以确保访问内存的应用程序只访问分配给它们的内存区域。这使得黑客或恶意软件程序更难通过内存将其代码 "替换 "给CPU。

SGX(软件防护扩展)--由英特尔开发的一套指令,从Skylake架构开始在其处理器中使用。
SGX允许受保护的代码和数据部分(称为 "飞地")为运行中的程序提供高水平的保护,以抵御恶意应用程序和黑客攻击。


BMI2(对BMI1的补充)。

由于MPX和SGX是关于保护的,我大胆猜测,编译器积极使用BMI2指令/技术,并且有TSX的影响,这不太可能。

 
Alexey,在我看来,学习如何为OpenCL写代码并为此购买一块好卡会更有效率。
一张卡上的OpenCL先验地比多个处理器的效率高得多。
并且忘记比较处理器的这种麻烦。
但是,是的,你必须弄清楚如何为OpenCL写代码。
我真的不能说它的信息量有多大--我一直在努力自己去读它。
 
Roman:
Alexey,我认为学习如何编写OpenCL代码并为此获得一块好卡会更有效率。 而忘记比较处理器的这种麻烦。但是,是的,你必须弄清楚如何为OpenCL写代码。我真的不能说它的信息量有多大--我一直在努力自己去读它。



用OpenCL写不是那么容易的,我研究了一下理论,用OpenCL技术做一个代理比较容易,不像现在,在消费者方面比较容易。

然后,OpenCL并不总是有效的,所以我在软件上比较从Yandex(CatBoost)卡1060和FX-8350处理器 - 事实证明,处理器是两倍快,如果这种趋势是经济上更有利可图,购买一个强大的处理器比五个1080i,从这肯定会有一个效果,但昂贵...一般来说,这不是明确的,也不是每个人的解决方案。

然后,我认为在编译器中,你可以简单地禁用对最新技术的支持,对于老手来说,一切都会工作得更快,选项是禁用的。
 
Aleksey Vyazmikin:

用OpenCL写不是那么容易的,我研究了一下理论,用OpenCL技术做一个代理比较容易,不像现在,在消费者方面比较容易。

然后,OpenCL并不总是有效的,所以我在软件上比较从Yandex(CatBoost)卡1060和FX-8350处理器 - 事实证明,处理器是两倍快,如果这种趋势是经济上更有利可图,购买一个强大的处理器比五个1080i,从这肯定会有一个效果,但昂贵...一般来说,这不是明确的,也不是每个人的解决方案。

对于数学计算,绿色的不是特别适合。
红色的更适合做数学题,它们甚至有一个数学模式作为标准,可以通过官方应用程序进行设置。
我有一个老的Radeon 7970参考,它仍然支持采矿。这并不是说我在一张卡上挖矿,不,这是不赚钱的,而是说它拉开了计算的序幕。
对于卡上的数学计算,你需要看着色器的数量,越多越好,其余的fps等并不重要,最重要的是着色器块。


 
Roman:

对于数学计算,绿色的不是特别适合。
对于数学来说,红色的更好。 他们甚至有一个数学模式作为标准,可以通过官方应用程序进行设置。
我有一个老的Radeon 7970参考,它仍然支持采矿。这并不是说我在一张卡上挖矿,不,这并不赚钱,而是说它拉开了计算的序幕。
对于卡上的数学计算,你需要看着色器的数量,越多越好,其余的fps等并不重要,最重要的是着色器块。


据我所知,红色的人只是知道如何与双倍的人合作,绿色的人不知道--我知道。但是,在机器学习(CatBoost)中,有一个关于比较操作的锐化,按照想法,它应该像红色和绿色那样快速工作。而且红色不被CatBoost支持,唉。

在任何情况下,我不能自己做,而找到它的艺术家也不是那么容易的,要有足够的价格和理解。

 

有人向我建议,可以通过使用开关枚举来加快代码的速度。

以前是这样的。

         if(Type_Poisk_Tree==Tree_Buy_Filter || Type_Poisk_Tree==Tree_Sell_Filter || Type_Poisk_Tree==Tree_Buy || Type_Poisk_Tree==Tree_Sell)
           {
            if(Test_P>=1000 && Test_P<5000)
              {
               if(Test_P<2500)
                 {
                  if(Test_P==1000)if(DonProc<5.5 && Levl_Down_DC<-7.5) CalcTest=CalcTest+1; //(0.4810127 0.3037975 0.2151899)
                  if(Test_P==1001)if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5) CalcTest=CalcTest+1; //(0.4400657 0.4072250 0.1527094)
                  if(Test_P==1002)if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N>=2.5) CalcTest=CalcTest+1; //(0.3739837 0.5121951 0.1138211)
                  if(Test_P==1003)if(DonProc<5.5 && Levl_Down_DC>=-7.5 && TimeH<21.5 && TimeH>=16.5 && TimeH>=19.5) CalcTest=CalcTest+1; //(0.3390706 0.4647160 0.1962134)
                //Ещё 70к сравнений
                }

而现在是这样的。

         if(Type_Poisk_Tree==Tree_Buy_Filter || Type_Poisk_Tree==Tree_Sell_Filter || Type_Poisk_Tree==Tree_Buy || Type_Poisk_Tree==Tree_Sell)
           {
                  switch(Test_P)
                    {
                     case 1000: if(DonProc<5.5 && Levl_Down_DC<-7.5) CalcTest=CalcTest+1; break; //(0.4810127 0.3037975 0.2151899)
                     case 1001: if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5) CalcTest=CalcTest+1; break; //(0.4400657 0.4072250 0.1527094)
                     case 1002: if(DonProc< 5.5 && Levl_Down_DC>=-7.5 && TimeH< 21.5 && TimeH>=16.5 && TimeH< 19.5 && Levl_Close_H1s1N>=2.5) CalcTest=CalcTest+1; break; //(0.3739837 0.5121951 0.1138211)
                     case 1003: if(DonProc<5.5 && Levl_Down_DC>=-7.5 && TimeH<21.5 && TimeH>=16.5 && TimeH>=19.5) CalcTest=CalcTest+1; break; //(0.3390706 0.4647160 0.1962134)
                     //ещё 70к сравнений
                   }

根据最初的估计,FX-8350的速度要快30%,但Phenom II处理器的速度要快3倍左右!我将在以后机器没有优化的时候进行比较测试。

我附上新版本的Tree_Brut_TestPL专家顾问,我在它的名字中加入了"_Fast"。 请也测试一下,因为知道在什么架构上会有收益是非常有趣的。人们希望这些研究将有助于改进ME编译器。

附加的文件:
 

我从论坛成员Fast528(目前无法在论坛上发帖) 那里得到了额外的数据

Ryzen 2700未超频,内存3333

Tree_Brut_TestPL 8核16线程

2019.08.13 10:24:14.813 Tester optimization finished, total passes 11
2019.08.13 10:24:14.824 Statistics optimization done in 1 minutes 56 seconds
2019.08.13 10:24:14.824 Statistics shortest pass 0:01:13.337, longest pass 0:01:20.403, average pass 0:01:15.853
2019.08.13 10:24:14.824 Statistics 8731 frames (3.43 Mb total, 412 bytes per frame) received
2019.08.13 10:24:14.824 Statistics local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.13 10:24:14.864 Tester 11 new records saved to cache file 'tester\cache\Tree_Brut_TestPL.30.E415F787BBBCE67C438526613B41CB4F.opt'

Tree_Brut_TestPL_F8核 16线程

2019.08.13 10:24:14.824 Statistics 8731 frames (3.43 Mb total, 412 bytes per frame) received
2019.08.13 10:31:30.562 Tester optimization finished, total passes 11
2019.08.13 10:31:30.573 Statistics optimization done in 2 minutes 32 seconds
2019.08.13 10:31:30.573 Statistics shortest pass 0:02:12.689, longest pass 0:02:31.529, average pass 0:02:21.243
2019.08.13 10:31:30.573 Statistics 11000 frames (4.32 Mb total, 412 bytes per frame) received
2019.08.13 10:31:30.573 Statistics local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.13 10:31:30.626 Tester 11 new records saved to cache file 'tester\cache\Tree_Brut_TestPL_F.30.E415F787BBBCE67C438526613B41CB4F.opt'

这个测试是不完整的,因为我们需要一个具有8个核心和8个线程的变体,由于激活了8个代理,还应该在 "优化 "选项卡中指定16个通道--根据线程的数量(开始0,步骤1,停止15)。

当再次运行测试时,不要忘记清除缓存,它位于./Tester/cache中。

我将暂时把中间结果添加到表中,作为8个核心/8个代理。

 

不幸的是,我不能再编辑第一篇文章,所以我在这里发布评分。

 

下面是fx8320e频率4GHz,内存1866 2通道,等级2的结果。

树_Brut_TestPL_F_Fast

4个代理8个通过

DF      0       13:27:26.728    Core 4  pass 6 returned result 1001000.00 in 0:00:28.342
HL      0       13:27:26.732    Core 1  pass 2 returned result 1001000.00 in 0:00:28.414
PE      0       13:27:26.844    Core 3  pass 4 returned result 1001000.00 in 0:00:28.476
PJ      0       13:27:26.936    Core 2  pass 0 returned result 1001000.00 in 0:00:28.619
QP      0       13:27:53.132    Core 4  pass 7 returned result 1001000.00 in 0:00:26.406
KI      0       13:27:53.219    Core 1  pass 3 returned result 1001000.00 in 0:00:26.489
MN      0       13:27:53.337    Core 3  pass 5 returned result 1001000.00 in 0:00:26.495
ND      0       13:27:53.571    Core 2  pass 1 returned result 1001000.00 in 0:00:26.637
OR      0       13:27:53.571    Tester  optimization finished, total passes 8
OF      0       13:27:53.582    Statistics      optimization done in 0 minutes 57 seconds
PI      0       13:27:53.582    Statistics      shortest pass 0:00:26.406, longest pass 0:00:28.619, average pass 0:00:27.484
NM      0       13:27:53.582    Statistics      8000 frames (3.14 Mb total, 412 bytes per frame) received
HL      0       13:27:53.582    Statistics      local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

8家代理公司8次通过

DI      0       13:30:59.789    Core 2  pass 1 returned result 1001000.00 in 0:00:33.072
KN      0       13:30:59.887    Core 1  pass 0 returned result 1001000.00 in 0:00:33.177
PD      0       13:31:00.132    Core 3  pass 2 returned result 1001000.00 in 0:00:33.422
PM      0       13:31:00.245    Core 4  pass 3 returned result 1001000.00 in 0:00:33.531
RR      0       13:31:00.590    Core 8  pass 7 returned result 1001000.00 in 0:00:32.922
IH      0       13:31:00.615    Core 5  pass 4 returned result 1001000.00 in 0:00:33.197
CQ      0       13:31:00.981    Core 6  pass 5 returned result 1001000.00 in 0:00:33.506
GF      0       13:31:01.111    Core 7  pass 6 returned result 1001000.00 in 0:00:33.614
CS      0       13:31:01.111    Tester  optimization finished, total passes 8
KG      0       13:31:01.122    Statistics      optimization done in 0 minutes 35 seconds
RN      0       13:31:01.122    Statistics      shortest pass 0:00:32.922, longest pass 0:00:33.614, average pass 0:00:33.305
NO      0       13:31:01.122    Statistics      8000 frames (3.14 Mb total, 412 bytes per frame) received
HJ      0       13:31:01.122    Statistics      local 8 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

8个代理几乎快了2倍

 
Maxim Romanov:

下面是fx8320e频率4GHz,内存1866 2通道,等级2的结果。

树_Brut_TestPL_F_Fast

4个代理8个通过

8家代理公司8次通过

8个代理几乎快了2倍

谢谢,但要加上Tree_Brut_TestPL_F和Tree_Brut_TestPL的评估结果 !