Eis o que você pode fazer com OpenCL diretamente no MetaTrader 5 sem DLLs - página 6

 
Alexey Volchanskiy:

Tudo ótimo, mas! Há um grande problema com OCL e em geral com todos os meios de paralelização - muito poucos algoritmos podem ser efetivamente paralelizados. Por que nos exemplos de computação paralela tão populares estão a simulação de ondas, bola caindo sobre uma pirâmide com sua destruição, ou seja, tudo que pode ser quebrado em pequenos pedaços e computado em seu próprio processador.

Para os foros/urso, é claro, estas são redes neurais, várias transformações de Fourier, wavelets, filtros, etc., todos perfeitamente paralelos. Mas existem algoritmos lineares que não podem ser paralelos de forma alguma. Como regra, é quando o resultado da próxima etapa do algoritmo é baseado no resultado da etapa anterior.

Escrevi isto para aqueles que estão pensando que eu vou comprar duas placas de vídeo legais e tudo vai funcionar bem no meu testador.

Quando comecei a trabalhar com este material, tive a sensação de que o algoritmo será baseado nos resultados da etapa anterior, então escrevi para aqueles que pensam: "Vou comprar 2 chips de vídeo legais e tudo vai voar no meu testador". Se você quer negociar com ela, precisa ter um bom relacionamento com ela.

 
Alexey Volchanskiy:

Tudo ótimo, mas! Há um grande problema com OCL e em geral com todos os meios de paralelização - muito poucos algoritmos podem ser efetivamente paralelizados. Por que nos exemplos de computação paralela tão populares estão a simulação de ondas, bola caindo sobre uma pirâmide com sua destruição, ou seja, tudo que pode ser quebrado em pequenos pedaços e computado em seu próprio processador.

Para os foros/urso, é claro, estas são redes neurais, várias transformações de Fourier, wavelets, filtros, etc., todas perfeitamente paralelas. Mas existem algoritmos lineares que não podem ser paralelos de forma alguma. Como regra, é quando o resultado da próxima etapa do algoritmo é baseado no resultado da etapa anterior.

Escrevi isto para aqueles que estão ansiosos para comprar dois cartuchos frios e tudo vai correr bem no meu testador.

Quando a lógica interna da EA não é paralela, a EA inteira pode ser paralela, um fio - uma EA. É assim que a nuvem e os agentes em geral funcionam - um fio == um EA == um histórico, dei um exemplo de tal paralelismo.

Por exemplo, esta abordagem permite não apenas alcançar uma velocidade significativa em otimizadores caseiros sem grandes problemas, mas também possibilita realizar otimização interna auto-motivada como parte da otimização geral na nuvem (por exemplo, otimização com roll-forward interno). E é claro que ninguém proíbe o uso de paralelização adicional dentro de cada fio (eu não o fiz em meu exemplo, embora seja possível). Assim, quando se trata de otimização, podemos dizer que sempre há algo que se pode paralelizar, sempre.

 
Andrey Dik:

Quando a lógica interna da EA não é paralela, você pode paralisar toda a EA, um fio - uma EA. É assim que a nuvem e os agentes trabalham em geral, um fio === uma EA == uma história executada, dei um exemplo de tal paralelismo.

Por exemplo, esta abordagem permite não apenas alcançar uma velocidade significativa em otimizadores caseiros sem grandes problemas, mas também possibilita realizar otimização interna auto-motivada como parte da otimização geral na nuvem (por exemplo, otimização com roll-forward interno). E é claro que ninguém proíbe o uso de paralelização adicional dentro de cada fio (eu não o fiz em meu exemplo, embora seja possível). Assim, quando se trata de otimização, podemos dizer que sempre há algo que se pode paralelizar, sempre.

Tudo é verdade, mas o que o destaque tem a ver com OCL? Cabe aos desenvolvedores do otimizador fornecer otimização na GPU, como na nuvem, o que, pelo que percebi, ainda não é o caso. Ou você está falando em escrever um invólucro ao redor da EA, dentro do qual eles executaram como roscas OCL? O otimizador de hoje não entenderia tal movimento.

Tudo o que você precisa fazer agora é escrever seu próprio otimizador, você pode fazer o que quiser.

Em geral, o objetivo do posto era sóbrio para não programadores ou programadores novatos em geral e privá-los de ilusões desnecessárias.

 
Alexey Volchanskiy:

Tudo é verdade, mas o que o destacado tem a ver com OCL? O trabalho dos desenvolvedores do otimizador é fornecer otimização na GPU, assim como na nuvem, o que eu percebi que ainda não é o caso. Ou você está falando em escrever um invólucro ao redor da EA, dentro do qual eles executaram como roscas OCL? O otimizador de hoje não entenderia tal movimento.

Tudo o que você precisa fazer agora é escrever seu próprio otimizador, você pode fazer o que quiser.

Na verdade, o objetivo do posto era sóbrio para os não-programadores ou novatos em geral e despojá-los de ilusões desnecessárias.

Dei um exemplo onde toda a lógica do EA junto com o histórico testado é enviado para o dispositivo OCL(um fio == um EA == um histórico executado). Esta solução é compreendida pelo testador e pelo otimizador. É claro, esta solução é para programadores.

Mas para os usuários comuns - sim, eles não receberão nenhuma velocidade das inovações em seus EAs. Isto só pode ser feito quando os desenvolvedores conseguem enviar uma EA inteira para a OCL na forma de um programa específico recompilado semelhante aos shaders, mas até agora não é este o caso.

 
Andrey Dik:

Dei um exemplo onde toda a lógica da EA é enviada para o dispositivo OCL junto com o histórico testado(um fio == um EA == um histórico executado). Esta solução é compreendida pelo testador e pelo otimizador. É claro, esta solução é para programadores.

Mas para os usuários comuns - sim, eles não receberão nenhuma velocidade das inovações em seus EAs. Isso só pode ser feito quando os desenvolvedores conseguem enviar uma EA inteira para a OCL na forma de um programa específico recompilado semelhante aos shaders, mas até agora não estamos falando sobre isso.

Ainda não posso dizer nada sobre o exemplo; tenho que ir verificar pessoalmente a OCL, mas parece que está funcionando.

Por outro lado, eu não acredito realmente nos destacados. A MQ terá de escrever algumas pontes que permitam extrair MQL API da OCL, especialmente funções comerciais, acesso a timeseries e indicadores... Isto é uma tristeza completa, o MT5 ainda tem muitas doenças infantis que ainda estão sendo corrigidas, geralmente através de uma referência ao SD.

 
Alexey Volchanskiy:

Ainda não posso julgar sobre o exemplo, tenho que sentir o OCL pessoalmente, mas parece que é um exemplo vivo.

Mas eu não acredito realmente no destacado. A MQ terá que escrever algumas pontes para poder extrair MQL API da OCL, especialmente funções comerciais, acesso a séries de tempo, indicadores... Este é um desânimo total, o MT5 ainda tem muitos efeitos colaterais infantis que ainda estão sendo corrigidos, geralmente via SD.

Tudo bem, mas o fato de o meta-editor permanecer no nível do "Bloco de Notas" de 1995 é bastante triste, e com o fato de que estamos em 2017. Eles estão fazendo algo, mas para escrever algo para isso, você tem que escrever em um antigo editor.

Cavalheiros DESENVOLVEDORES, façam pelo menos uma partida de destaque finalmente, como no Bloco de Notas!

 
Alexey Volchanskiy:

É ótimo, mas há um grande problema com OCL e todas as ferramentas de paralelização em geral - muito poucos algoritmos podem ser efetivamente paralelizados.



Tyu, é simples. Você não precisa pensar se um algoritmo é paralelo ou não. A abordagem é a seguinte: quando você olha para o algoritmo - você vê um loop -> considera que ele já pode ser paralelizado (uma boa probabilidade). Sem laços - não há motivo para preocupação.

 
Vitaly Muzichenko:

Tudo bem, mas o fato de o meta-editor permanecer no nível do Bloco de Notas de 1995 é bastante triste, apesar de ser 2017. Eles estão fazendo algo, mas para escrever algo para isso, você tem que escrever em um antigo editor.

Cavalheiros DESENVOLVEDORES, façam pelo menos uma partida de destaque finalmente, como no Bloco de Notas!

Sim, eu já escrevi dois posts aqui sobre como os carrapatos são grosseiros. Eles foram excluídos. E seu posto será excluído. Não há necessidade de administradores/moderadores nesta linha para mencionar as falhas no MQ. Festejar durante a peste...
 
Alexey Kozitsyn:
Sim, eu já escrevi 2 posts aqui sobre os carrapatos serem crus. Eliminado. E seu posto será excluído. Não há necessidade de administradores/moderadores nesta linha para mencionar as falhas do MQ. Festejar durante a peste...

De alguma forma lembra quando eles pintam um carro, colocam rodas de titânio e todo tipo de bugigangas desnecessárias sobre ele, mas o motor do carro antes disso "bateu" e encravou, tudo isso é desnecessário, porque o carro está quebrado.

E aqui, um monte de artifícios para escrever, mas onde tudo precisa ser escrito, está no nível de 1995, nele, para escrever - uma tortura, se o código consiste em mais de 200 linhas

e, ao mesmo tempo, Renat escreve:

Renat Fatkhullin:

Infelizmente, você tem que esquecer o OpenCL no Windows XP. E os sistemas operacionais de 32 bits em geral - 2017 está chegando.

Onde está então o meta-editor de 2016?

Por favor, faça pelo menos um destaque de código, e eventualmente, se possível - dobrando!

 
Vitaly Muzichenko:

De alguma forma lembra quando eles pintam um carro, colocam rodas de titânio e todo tipo de bugigangas desnecessárias sobre ele, mas o motor do carro antes disso "bateu" e encravou, tudo isso é desnecessário, porque o carro está quebrado.

E aqui, um monte de artifícios para escrever, mas onde tudo precisa ser escrito, está no nível de 1995, nele, para escrever - uma tortura, se o código consiste em mais de 200 linhas

e, ao mesmo tempo, Renat escreve:

Onde está então o meta-editor de 2016?

Por favor, faça pelo menos um destaque de código, e eventualmente se possível - dobrando!

Eu também às vezes me pergunto sobre a direção que a MT está tomando. Mas os desenvolvedores sabem o que é melhor...