Eis o que você pode fazer com OpenCL diretamente no MetaTrader 5 sem DLLs

 

Esta é uma demonstração não só dos cálculos da GPU no código MQL5, mas também das capacidades gráficas do terminal:

O código-fonte completo como um roteiro está anexado. O erro no OpenCL 1.2 foi corrigido.

Arquivos anexados:
Seascape.mq5  39 kb
 
Renat Fatkhullin:

Esta é uma demonstração não só dos cálculos da GPU no código MQL5, mas também das capacidades gráficas do terminal:

O código-fonte completo como um roteiro está anexado.

Aaaaaaaaahhhhhhhhh ... Impede-me de sair!
 

Estamos preparando uma biblioteca do OpenCL para matemática e renderização, que levará algumas semanas. Vai ser incrivelmente rápido e bonito.

Enquanto isso, dê uma olhada na biblioteca gráfica atualizada para a renderização de gráficos científicos.

 

О! Em breve chegará aos jogos ))))

Para que em uma plataforma comercial? Bem, os cálculos são compreensíveis, e todo tipo de coisas bonitas só seduzem.

 
Vitalie Postolache:

О! Em breve chegará aos jogos ))))

Para que em uma plataforma comercial? Bem, os cálculos são claros, e todo tipo de coisas bonitas só seduzem.

Com OpenCL você pode usar milhares de núcleos de GPU para acelerar os cálculos matemáticos uma centena (várias centenas) de vezes.

Isto é exatamente o que é necessário na negociação e o que permitirá passar para o uso de técnicas que requerem ordens de magnitude mais recursos de cálculo.

Na MQL4 você escava com uma pá, enquanto na MQL5 com OpenCL você obtém um trator em termos de desempenho. Para levar os cálculos da GPU às massas, estamos preparando novas bibliotecas de matemática além das já existentes.

 

Não consegui passar, passei por ela

 
Renat Fatkhullin:

Esta é uma demonstração não só dos cálculos da GPU no código MQL5, mas também das capacidades gráficas do terminal:

O código-fonte completo como um roteiro está anexado.

Compilou-o, executou-o.

Não funciona.

MT5 construir 1491.

W7 prof SP1 eng 64-bit


 
prostotrader:

Compilou-o, executou-o.

Veja os logs do terminal e a janela do especialista.

O roteiro é complexo, apenas escrito e ainda não foi depurado. Não funciona em todos os lugares sem GPU.

 
Renat Fatkhullin:

Veja os logs do terminal e a janela do especialista.

O roteiro é complexo, apenas escrito e ainda não foi depurado. Não funciona em todos os lugares sem 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)
 

OK, vamos resolver isso. O código era como um teste de uma caneta.

Cada dispositivo de GPU tem seu próprio compilador e ele decide o que pular. Os compiladores OpenCL da Intel, AMD e Nvidia são diferentes.

Estamos testando sob OpenCL 2.0, que tem uma funcionalidade muito maior. Vamos verificar e corrigir este teste no OpenCL 1.2.

 
Razão: