DLL 없이 MetaTrader 5 터미널에서 직접 OpenCL로 할 수 있는 일은 다음과 같습니다.

 

이것은 MQL5 코드의 GPU 계산뿐만 아니라 터미널의 그래픽 기능에 대한 데모입니다.

스크립트 형태의 전체 소스 코드가 첨부되어 있습니다. OpenCL 1.2의 버그가 수정되었습니다.

파일:
Seascape.mq5  39 kb
 
Renat Fatkhullin :

이것은 MQL5 코드의 GPU 계산뿐만 아니라 터미널의 그래픽 기능에 대한 데모입니다.

스크립트 형태의 전체 소스 코드가 첨부되어 있습니다.

Aaaaaaaaaa... 그만 내가 내릴게!
 

우리는 수학 및 렌더링을 위한 기본 OpenCL 라이브러리를 준비 중이며 몇 주가 소요됩니다. 놀랍도록 빠르고 아름다울 것입니다.

그동안 과학 그래프를 렌더링 하기 위해 업데이트된 그래픽 라이브러리를 살펴보세요.

 

영형! 그래서 곧 게임에 올 것입니다)))

그러나 거래 플랫폼에 있는 이유는 무엇입니까? 글쎄, 계산은 명확하지만 모든 종류의 아름다움은 유혹합니다.

 
Vitalie Postolache :

영형! 그래서 곧 게임에 올 것입니다)))

그러나 거래 플랫폼에 있는 이유는 무엇입니까? 글쎄, 계산은 이해할 수 있지만 모든 종류의 아름다움은 유혹합니다.

OpenCL 을 사용하면 수천 개의 GPU 코어를 사용하여 수학적 계산 속도를 100배(수백 배) 높일 수 있습니다.

이것은 거래에 정확히 필요한 것이며 훨씬 더 많은 계산 리소스가 필요한 방법을 사용하도록 전환할 수 있습니다.

MQL4에서는 삽으로 땅을 파는 반면, OpenCL이 있는 MQL5에서는 성능 면에서 트랙터를 얻습니다. GPU 계산을 대중에게 제공하기 위해 기존 라이브러리 외에 새로운 수학 라이브러리를 준비하고 있습니다 .

 

지나갈 수 없다, 지나치다

 
Renat Fatkhullin :

이것은 MQL5 코드의 GPU 계산뿐만 아니라 터미널의 그래픽 기능에 대한 데모입니다.

스크립트 형태의 전체 소스 코드가 첨부되어 있습니다.

컴파일, 출시되었습니다.

작동하지 않습니다.

MT5 빌드 1491

W7 prof SP1 eng 64비트


 
prostotrader :

컴파일, 출시되었습니다.

터미널 로그와 전문가 창을 보십시오.

스크립트는 복잡하고 방금 작성되었으며 아직 디버깅되지 않았습니다. GPU가 없으면 모든 곳에서 시작되지 않습니다.

 
Renat Fatkhullin :

터미널 로그와 전문가 창을 보십시오.

스크립트는 복잡하고 방금 작성되었으며 아직 디버깅되지 않았습니다. GPU가 없으면 모든 곳에서 시작되지 않습니다.

2016.12 . 10 03 : 57 : 08.180 Seascape (GOLD- 12.16 ,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)        <kernel>: 188 : 18 : error: subscripted access is not allowed for OpenCL vectors
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)           uint b=( uint )(res[ 2 ]* 255 );
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)                         ^   ~
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)        <kernel>: 189 : 18 : error: subscripted access is not allowed for OpenCL vectors
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)           uint g=( uint )(res[ 1 ]* 255 );
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)                         ^   ~
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)        <kernel>: 190 : 18 : error: subscripted access is not allowed for OpenCL vectors
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)           uint r=( uint )(res[ 0 ]* 255 );
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)                         ^   ~
2016.12 . 10 03 : 57 : 08.197 Seascape (GOLD- 12.16 ,H1)        
2016.12 . 10 03 : 57 : 08.218 Seascape (GOLD- 12.16 ,H1)        OpenCL program create failed
2016.12 . 10 03 : 57 : 36.695 Seascape (GOLD- 12.16 ,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)        <kernel>: 188 : 18 : error: subscripted access is not allowed for OpenCL vectors
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)           uint b=( uint )(res[ 2 ]* 255 );
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)                         ^   ~
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)        <kernel>: 189 : 18 : error: subscripted access is not allowed for OpenCL vectors
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)           uint g=( uint )(res[ 1 ]* 255 );
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)                         ^   ~
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)        <kernel>: 190 : 18 : error: subscripted access is not allowed for OpenCL vectors
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)           uint r=( uint )(res[ 0 ]* 255 );
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)                         ^   ~
2016.12 . 10 03 : 57 : 36.711 Seascape (GOLD- 12.16 ,H1)        
2016.12 . 10 03 : 57 : 36.730 Seascape (GOLD- 12.16 ,H1)        OpenCL program create failed

2016.12 . 10 03 : 57 : 06.729 OpenCL  Device # 0 : GPU NVIDIA Corporation GeForce GTX 970 with OpenCL 1.2 ( 13 units, 1367 MHz, 4096 Mb, version 372.90 )
 

자, 알아봅시다. 코드는 펜 테스트와 같았습니다.

각 GPU 장치에는 자체 컴파일러가 있으며 건너뛸 항목을 결정합니다. Intel, AMD 및 Nvidia의 OpenCL 컴파일러는 서로 다릅니다.

우리는 훨씬 더 많은 기능을 가진 OpenCL 2.0에서 스스로를 테스트하고 있습니다. OpenCL 1.2에서는 이 테스트를 확인하고 수정할 것입니다.

 
사유: