OpenCl 및 도구. 리뷰 및 인상. - 페이지 5

 
Mathemat :

좋습니다. MQL과 C/C++를 비교하기 위한 기초가 있을 것입니다. 나는 단지 사실을 제공했습니다 . 그리고 일반적으로 내가 왜 도마를 믿어야 합니까?

신경망에서는 그 차이가 조금 더 클 수 있습니다. 저는 논쟁하지 않습니다.

그리고, 그건 그렇고, 나는 당신의 "그냥 사실"을 보고 싶습니다.

내 "정확한 사실"이 거의 준비되었습니다. "거의" - 오래된 테스트의 소스를 파헤쳤기 때문입니다. 이제 약간 업데이트하고 테스트 결과와 함께 여기에 소스 코드를 표 형식으로 게시하겠습니다.

 
joo : 그리고, 그건 그렇고, 나는 당신의 "정확한 사실"을보고 싶습니다.

바로 여기 . 페이지에서 내 두 번째 게시물을 참조하십시오.

그건 그렇고, 당신은 이미 링크로 내 게시물에 답변했습니다. 조금 더 높은 C 코드는 MQL4용으로 매우 쉽게 리메이크됩니다. 첨부 파일을 참조.

파일:
pi.mq4  1 kb
 
Mathemat :

바로 여기 . 페이지에서 내 두 번째 게시물을 참조하십시오.

그건 그렇고, 당신은 이미 링크로 내 게시물에 답변했습니다. 조금 더 높은 C 코드는 MQL4용으로 매우 쉽게 리메이크됩니다. 첨부 파일을 참조.

테스트 결과를 표 형식으로 정리하여 이 스레드를 읽는 사람이 링크를 건너뛰는 일이 없도록 여기에 게시하십시오.
 
AlexEro :

직업 학교의 디지털 ******니즘에 연루되지 않도록 개인 메시지로 이 괴물의 사진에 대한 링크를 보냈습니다.

자, 당신의 사진으로 나를 믿으십시오. 여기에서 백분율로도 숫자를 변경하지 않을 것입니다. 퍼뜨려라.

하지만 오래 갈까요? 좋은 방법으로, 그림에서와 같이 수냉식이라고 하는 그러한 장비에는 우수한 냉각 장치를 장착해야 합니다.

 
joo :
테스트 결과를 표 형식으로 정리하여 이 스레드를 읽는 사람이 링크를 건너뛰는 일이 없도록 여기에 게시하십시오.

거기 테이블은 무엇입니까? 사진 몇 장.

1. 다른 컴파일 설정으로 parallelpi_x.cpp 프로그램 테스트. MQL4와 비교할 때 첫 번째 결과만 중요합니다. 6.723초, 거기에는 가속기(SSE*, IPP, OML)가 없습니다.

그러나 누군가 가 가속기를 켰을 때 결과가 어떻게 바뀌는지 보고 싶다면 첨부 파일 아래에 컴파일된 실행 파일과 필요한 병렬 라이브러리가 있는 아카이브가 있습니다. 모든 것을 하나의 디렉토리에 넣고 명령줄에서 실행하는 것으로 충분합니다.

물론 이러한 결과는 비디오 카드 어레이에서 괴물과의 경쟁을 나타내지 않습니다.

2. MQL4로 재작성된 동일한 프로그램:


결과: 22.98초, 즉 3.4배 더 많습니다. 그러나 거기에는 어레이에 대한 작업이 없으며 우리에게는 이것이 필수적일 수 있습니다. 첨부된 것은 스크립트 코드입니다.

파일:
release.zip  278 kb
pi_1.mq4  1 kb
 
joo :

MQL5는 MQL4보다 20배 빠릅니다.

C++는 MQL5보다 6배 빠름(자동 실행 병렬화를 위한 라이브러리 사용 시)

총계: 20*6=120회.

GPU에 계산을 적용하면 훨씬 빨라집니다.

총계: 10/120=0.083c

그런 곳.

그래서 팡파르! 컴파일 방법을 알기 위해 링에 4개의 다른 컴파일러가 있습니다.

물론 농담입니다. 하지만 진지하게, 6개의 테스트가 작성되었습니다. 결과는 아래 표에 나와 있습니다. 그리고 댓글은 더 적습니다. :)

#종피
설명
실행 파일 이름
테스트 결과,
하나
Ex5 스크립트 및 ex5 라이브러리
1 MLP MQL 컴파일러.ex5
97.2
2
Ex5 스크립트 및 C++ dll 라이브러리, MS 컴파일러, 모든 최적화 비활성화
2 MLP MS 컴파일러 nonOpt.ex5
42.6

Ex5 스크립트 및 C++ dll 라이브러리, MS 컴파일러, 모든 최적화 포함
3 MLP MS 컴파일러 Opt.ex5
27.1
4
Ex5 스크립트 및 C++ dll 라이브러리, 인텔 컴파일러, 모든 최적화 활성화
4 MLP 인텔 컴파일러.ex5
12.5
5
Ex4 스크립트 및 ex4 라이브러리
5 MLP MQL4 컴파일러.ex4
669.6
6
Ex4 스크립트 및 C++ dll 라이브러리, 인텔 컴파일러, 모든 최적화 활성화
6 MLP MQL4 인텔 컴파일러.ex4
10.7




테스트 무거운 계산으로, 플러그인 라이브러리 ex4, ex5 및 dll의 형태로 설계된 신경망 4계층 네트워크 MLP 80-100-100-10이 사용됩니다.

우리는 다음을 봅니다.

- 연결된 ex5 libs와 ex4 libs의 결과가 6.8배 차이(테스트 1, 5)

- 인텔 컴파일러의 연결된 ex5 libs와 dll libs의 결과가 7.8배 차이가 납니다(테스트 1과 4).

- Intel 컴파일러의 연결된 ex4 libs와 dll libs의 결과가 62.5배 차이가 납니다(테스트 5와 6).

결과:

물론 MQL4와 MQL5의 20배 차이 정도에 대해서는 조금 거절했다. 이러한 차이는 2차원 배열을 집중적으로 사용하면 그 자체로 나타납니다(이 수치가 어디에서 왔는지 기억했습니다). 그러나 이 기능에 대한 테스트를 특별히 선명하게 하기에는 너무 게으르며(일반적인 경우에는 해당하지 않습니다) "무거운" 계산 - 일반적인 경우가 테스트에 표시됨), 내 말을 받아들이거나 테스트를 직접 작성할 수 있습니다. 따라서 MQL4와 MQL5의 속도 차이는 6.8배, MQL4와 C++의 속도 차이는 62.5배라고 말할 수 있습니다.

그리고, 그런 사실에 나는 낙담했다, 아크퉁! - dll을 호출하는 MQL4 스크립트는 동일한 dll을 사용하는 MQL5 스크립트보다 빠르게 작동합니다 ... 그게 무슨 뜻인가요? - 확인, 여러 번 실행, 오류 없음. 개발자는 MT5에서 dll 호출이 MT4에 비해 최적화되어 있다고 말한 것 같습니다. 이것이 빌드의 기능(MT5 574 및 MT4 409)이고 테스트가 완전히 정확하지 않거나 ... 간단히 말해서 모르겠습니다.


필요한 사람은 그리드(4 또는 6개의 테스트로 컴파일된 dll - 매우 스마트한 그리드)를 사용할 수 있으며 소스 코드가 첨부되어 있습니다. 각 레이어의 뉴런 수는 구성 가능합니다. 사실, 최적화 프로그램(4와 5 모두)은 64개 이상의 매개변수를 지원하지 않으며, 게다가 단계를 크게 설정해야 하므로 이러한 괴물(테스트에서와 같이 80-100-100-10, 19210 최적화 매개변수! ) 일반 수단으로 훈련하는 데 작동하지 않으므로 사용자 정의 최적화 알고리즘을 사용해야 합니다. 이 경우(이 경우 뿐만 아니라), 그건 그렇고, 유료( 상점 에 있을 것입니다), 일반 최적화 프로그램(4번째 및 5번째 모두)이 무제한 0이 있는 경우에도 모든 단계의 매개변수 수

파일:
tests_mlp.zip  71 kb
 

설득력있게, , 심지어 매우 그렇습니다. 하지만 몇 가지가 있습니다.

첫째, MS에서 컴파일할 때 최상의 결과(옵션 3)도 옵션 1보다 4배 미만입니다.

둘째, Intel의 "모든 것을 포함하는" 컴파일러가 MS보다 2배 이상 우수하다는 것을 믿을 수 없습니다. Intel에 대해 더 많은 최적화를 활성화했음을 의미합니다.

어쨌든 인상적입니다. 우리는 테이블이 끝까지 채워지기를 기다리고 있습니다.

이제 이러한 비디오 카드 어레이가 필요한 이유를 알았습니다. 틱마다 이러한 계산을 수행하기 위해서입니다!

 
Mathemat :

둘째, Intel의 "모든 것을 포함하는" 컴파일러가 MS보다 2배 이상 우수하다는 것을 믿을 수 없습니다. 이는 인텔에 대해 더 많은 최적화를 활성화했음을 의미합니다.

무엇입니까 - 모두 포함되어 있습니다. 모든 기능을 사용하지 않고 컴파일러를 사용하는 것은 의미가 없습니다. 물고기는 더 깊은 곳을 찾고 프로그래머는 최고의 컴파일러를 찾고 있습니다. 그런 의미에서 MQ의 컴파일러에는 설정이 없으므로 최적의 방식으로 구성되었다고 가정할 수 있습니다.
 

그리고, 그런 사실에 나는 낙담했다, 아크퉁! - dll을 호출하는 MQL4 스크립트는 동일한 dll을 사용하는 MQL5 스크립트보다 빠릅니다 ... 그게 무슨 뜻인가요? - 확인, 여러 번 실행, 오류 없음. 개발자들은 dll 호출이 MT4에 비해 MT5에서 최적화되었다고 말한 것 같습니다. 이것이 빌드의 기능(MT5 574 및 MT4 409)이고 테스트가 완전히 정확하지 않거나 ... 간단히 말해서 모르겠습니다.



감사합니다. 매우 명확하고 설명적입니다.

개별 백분율을 너무 많이 비교해서는 안 된다고 생각합니다. 결국, 중단된 컴퓨터의 CPU 속도(MegaHertz MHz 또는 GigaHertz, GHz로 계산하면)는 0과 같습니다.

약 10-20%의 속도 차이로 오류 처리에 대해 프로그램과 환경의 안정성에 더 많은 관심을 기울이는 것이 좋습니다. 예를 들어 MSC에서 만든 DLL을 사용하는 경우 복잡한 terminal.exe 프로세스 환경과 버전 등에 따라 다를 수 있는 MSVCRT.DLL 초기화 블록의 환경. DLL에서 정상적인 오류 처리를 위해 MetaTrader는 예외 체인을 구축(및 추적)하며, 그 자체로 전체 시스템 및 DLL 호출 속도가 느려집니다.

뉴런 속도 주제:

여기에서 한 사람이 FANN 신경망 라이브러리를 OpenCL로 이전하고 평균 GTX 285 카드에서 20배 가속을 주장합니다.

"내 현재 GPU(GeForce 9500 GT)에서 일반 버전과 OpenCL 버전 간에 거의 동일한 속도를 얻고 있습니다. 현재 GTX 285를 주문하고 있으며 최소 10배 더 빨라야 합니다. 최신 GPU를 사용하면 이러한 GTX 480은 2.26GHz Nehalem Mac Pro보다 20배 이상 빠를 것으로 예상합니다."

...

"예, 새 카드(GTX 285)는 커널을 약 20배 더 빠르게 실행합니다."

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

물론 거의 모든 사람들이 이미 방문했습니다.

mql5.com을 보지 않는 광적인 쿼드를 위해 : OpenCL: MQL5의 내부 구현 테스트

그러나 거의 완료되었습니다.

나는 이것이 다른 플랫폼에서 거래하는 자동 거래자에게 매우 매력적인 기능이 될 것이라고 생각합니다.