최적화를 위한 CPU 코어 평가 - 페이지 6

 
여기에서 지침의 본질에 대한 정보를 출처 에서 수집했습니다.

E5-2670에 없는 지침:
BMI(비트 조작 명령)는 비트 조작 작업의 속도를 높이기 위해 Intel 및 AMD 프로세서에서 사용되는 명령 세트입니다. BMI는 SIMD 명령어가 아니며 범용 프로세서 레지스터에서만 작동합니다.
비트 조작 작업은 저수준 장치 제어, 오류 감지 및 수정, 데이터 최적화, 압축 및 암호화를 위해 설계된 응용 프로그램에서 가장 일반적으로 사용됩니다. 프로그램에서 BMI를 사용하면 이러한 작업의 속도가 상당히 빨라지지만(때로는 몇 배), 프로그래머가 프로그램 코드를 작성하기가 더 어려워집니다.
Intel 및 AMD 프로세서의 BMI 명령 집합은 크게 다릅니다.
인텔 프로세서는 BMI1 및 BMI2 패키지(BMI1 추가)를 사용합니다.
BMI1 외에도 AMD 프로세서는 SSE4a 패키지의 일부인 ABM(Advanced Bit Manipulation) 명령을 사용합니다(Intel에서는 이러한 명령도 존재하지만 SSE4.2 및 BMI1의 일부로 구현됨). 또한 AMD 프로세서는 BMI1에 추가된 TBM(Trailing Bit Manipulation) 명령어 세트를 사용합니다.

F16C는 x86 아키텍처 프로세서에서 반정밀도 이진 숫자(16비트)와 표준 단정밀도 이진 부동 소수점 숫자(32비트) 간의 변환 속도를 높이는 데 사용되는 명령어 세트입니다.
F16C는 AMD 및 Intel 프로세서 모두에서 사용되어 멀티미디어 데이터 및 기타 유형의 데이터 작업 측면에서 기능을 크게 확장합니다.
F16C(16비트 부동 소수점 변환)는 x86 아키텍처 프로세서에서 반정밀도 이진 숫자(16비트)와 표준 단정밀도 이진 부동 소수점 숫자(32비트) 간의 변환 속도를 높이는 데 사용되는 명령어 세트입니다. 사실, 이것은 기본 128비트 SSE 명령어의 확장입니다.
컴퓨터 기술에서 서로 다른 정확도의 숫자를 사용하는 것은 정확도와 표현된 값의 범위 사이의 절충안이며, 이는 해결해야 할 작업의 고속과 넓은 범위를 보장하는 데 필요합니다.
F16C는 훨씬 이전에 개발되었으며 CVT16으로 알려졌지만 2009년 AMD 프로세서에 처음 사용되었습니다. 처음에 CVT16은 출시되지 않은 SSE5 패키지의 일부로 계획되었으며 여기에는 XOP 및 BMI4 명령이 포함되어야 했습니다.
오늘날 F16C 명령 세트는 AMD와 Intel 프로세서 모두에서 사용되어 멀티미디어 데이터 및 기타 유형의 데이터 작업 측면에서 기능을 크게 확장합니다.

FMA
부동 소수점 곱셈 및 덧셈 연산의 속도를 높이는 일련의 프로세서 명령입니다. 약어 FMA는 영어에서 파생되었습니다. 단일 반올림으로 곱셈-덧셈으로 해석되는 융합된 곱셈-덧셈.
곱셈-덧셈 연산은 매우 일반적이며 컴퓨터 기술의 작동에서 중요한 역할을 합니다. 특히 아날로그 신호의 디지털 처리(비디오, 사운드 및 기타 유사한 작업의 이진 코딩)와 관련하여. 이와 관련하여 FMA 명령에 대한 지원은 중앙 프로세서뿐만 아니라 많은 최신 비디오 카드의 그래픽 프로세서에서도 구현되었습니다.

i7-8700을 제외한 모든 제품에 없는 지침:
TSX(Transactional Synchronization eXtensions)는 Intel에서 개발한 멀티 코어 프로세서 명령어 세트로, 동일한 데이터를 공유할 때 코어 간의 상호 작용 효율성을 향상시키고 궁극적으로 컴퓨터의 전체 성능을 향상시킵니다.

MPX(메모리 보호 확장)는 버퍼 오버플로 메커니즘을 사용하는 바이러스 및 기타 위협에 대해 향상된 컴퓨터 보호를 제공하는 기술입니다.
프로세서는 메모리에 액세스하기 전에 스택 버퍼와 힙 버퍼의 경계를 추가로 확인하여 메모리에 액세스하는 응용 프로그램이 할당된 영역에만 액세스할 수 있도록 합니다. 결과적으로 해커나 악성 프로그램이 메모리를 통해 프로세서에 대한 코드를 "대체"하는 것이 훨씬 더 어려워집니다.

SGX(Software Guard Extensions)는 Intel에서 개발한 명령 집합으로 Skylake 아키텍처에서 시작하는 프로세서에서 사용됩니다.
SGX를 사용하면 악성 응용 프로그램 및 해커 공격으로부터 작업하는 프로그램에 대한 높은 수준의 보호를 제공하는 코드 및 데이터의 보안 섹션(소위 "엔클레이브")을 구성할 수 있습니다.


BMI2(BMI1에 추가).

MPX와 SGX는 보호에 관한 것이므로 컴파일러가 BMI2 명령어/기술을 적극적으로 사용하고 TSX의 영향이 있을 가능성이 적습니다.

 
Alexey, OpenCL에서 코드를 작성하는 방법을 배우고 이를 위한 좋은 카드를 구입하는 것이 더 효율적일 것 같습니다.
카드의 OpenCL은 다중 프로세서보다 우선적으로 훨씬 더 효율적입니다.
그리고 프로세서의 비교를 보여주는 이 쓰레기에 점수를 매기십시오.
하지만 예, OpenCL에서 코드를 작성하는 방법을 알아야 합니다.
Renat는 어딘가에 이것에 대한 기사를 썼고, 나는 그것을 읽지 않았으며, 그것이 얼마나 유익한지 말할 수 없으며, 나는 그것을 읽을 수 없습니다.
 
Roman :
Alexey, OpenCL에서 코드를 작성하는 방법을 배우고 이를 위한 좋은 카드를 구입하는 것이 더 효율적일 것 같습니다.
카드의 OpenCL은 다중 프로세서보다 우선적으로 훨씬 더 효율적입니다.
그리고 프로세서의 비교를 보여주는 이 쓰레기에 점수를 매기십시오.
하지만 예, OpenCL에서 코드를 작성하는 방법을 알아야 합니다.
Renat는 어딘가에 이것에 대한 기사를 썼습니다. 나 자신은 그것을 읽지 않았으며 그것이 얼마나 유익한지 말할 수 없으며 스스로 읽을 수 없습니다.

OpenCL로 작성하는 것이 그리 쉬운 일이 아니라 이론을 조금 공부하고 OpenCL 기술로 에이전트를 만드는 것이 더 쉽고 지금은 그렇지 않고 소비자 입장에서 더 쉽습니다.

그런 다음 OpenCL이 항상 효과적인 것은 아니므로 1060 카드와 FX-8350 프로세서를 Yandex 소프트웨어( CatBoost )와 비교했습니다. 프로세서가 두 배 빠른 것으로 나타났으며 이것이 추세라면 더 5개의 1080i보다 강력한 프로세서를 구입하는 것이 비용 효율적입니다. 물론 효과가 있지만 비용이 많이 듭니다. 일반적으로 솔루션은 모호하지 않으며 모든 사람을 위한 것은 아닙니다.

그런 다음 컴파일러에서 단순히 최신 기술에 대한 지원을 비활성화할 수 있으며 노인에게는 비활성화 옵션과 함께 모든 것이 더 빠르게 작동할 것이라고 생각합니다.
 
Aleksey Vyazmikin :

OpenCL로 작성하는 것이 그리 쉬운 일이 아니라 이론을 조금 공부하고 OpenCL 기술로 에이전트를 만드는 것이 더 쉽고 지금은 그렇지 않고 소비자 입장에서 더 쉽습니다.

그런 다음 OpenCL이 항상 효과적인 것은 아니므로 1060 카드와 FX-8350 프로세서를 Yandex 소프트웨어(CatBoost)와 비교했습니다. 프로세서가 두 배 빠른 것으로 나타났으며 이것이 추세라면 더 5개의 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 Expert Advisor의 새 버전을 첨부하고 있습니다. 제목에 "_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_F 8코어 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개의 스레드가 있는 변형이 필요하고 또한 "최적화" 탭에서 스레드 수(시작 0 , 1단계, 15번 중지).

두 번째 테스트를 수행할 때 ..\Tester\cache에 있는 캐시를 지우는 것을 잊지 마십시오.

지금은 8코어/8 에이전트로 중간 결과를 테이블에 추가하겠습니다.

 

죄송합니다. 첫 번째 게시물을 수정할 수 없어 여기에 게시합니다.

 

다음은 fx8320e 주파수 4GHz, 메모리 1866 2채널, 랭크 2의 결과입니다.

Tree_Brut_TestPL_F_빠른

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의 결과입니다.

Tree_Brut_TestPL_F_빠른

4 에이전트 8 패스

8 에이전트 8 패스

8명의 에이전트에서 거의 2배 더 빠름

감사하지만 평가를 위해 Tree_Brut_TestPL_F 및 Tree_Brut_TestPL의 결과를 추가하십시오!