Talvez Renat consiga ver o que se pode aprender com isto. É bem possível que uma nova especificação dê um melhor desempenho também na MQL5, não é?
Quanto a C#/C+++, se necessário, também podemos despejá-lo. O principal é obter o máximo rendimento possível. ;)
Por enquanto, estou a impedir-me de reescrever o optimizador CL para Sharp na esperança de que o novo MT4 venha a fornecer pelo menos a versão 1.1. A linguagem é a mesma, o compilador é o mesmo e não existem obstáculos principais (não preciso realmente do suporte OpenCL num testador MT4, embora continue a fazê-lo se aparecer). Se não for implementado - pensarei à esquerda.
Para cada guião fornecerei um link para o post onde foi publicado para que outros o possam encontrar rapidamente, fazer os testes e comparar resultados, se necessário.
2013.11.2916:39:50 ParallelTester_00-01 x (EURUSD,H1) CLGetInfoInteger() returned 22013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) OpenCL init OK!
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) GPU time = 62 ms
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Result on Gpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CPU time = 14492 ms
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Result on Cpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CpuTime/GpuTime = 233.741935483871
Também tentei testar o indicadorqpu_EMA-Rainbowdo MetaDriver.
No CPU, o resultado é por vezes até 2x melhor. Aqui está o resultado:
2013.12.01 14:12:50 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at CPU, time = 811 ms
2013.12.01 14:12:57 qpu_Future_EMA-Rainbow (EURUSD,M1) OpenCL: GPU device 'GeForce GTX 650 Ti BOOST' selected
2013.12.01 14:12:58 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at GPU (OpenCL), time = 1295 ms
//---
Volodya(MetaDriver), mostre-me os seus resultados?
P.S. Alterei o meu tipo no código do kernel nos parâmetros da função gpuEMA de__global para__local. Um pouco mais rápido, mas ainda mais lento do que no CPU.
2013.12.01 14:29:46 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at CPU, time = 795 ms
2013.12.01 14:29:51 qpu_Future_EMA-Rainbow (EURUSD,M1) OpenCL: GPU device 'GeForce GTX 650 Ti BOOST' selected
2013.12.01 14:29:52 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at GPU (OpenCL), time = 1061 ms
Também tentei testar o indicadorqpu_EMA-Rainbowdo MetaDriver.
No CPU, o resultado é por vezes até 2x melhor. Aqui está o resultado:
Volodya(MetaDriver), mostre-me os seus resultados?
P.S. Alterado no código do núcleo nos parâmetros da função gpuEMA de__global para__local. Um pouco mais rápido, mas ainda mais lento do que no CPU.
Os meus resultados são semelhantes. Isto foi discutido durante muito tempo e é lógico - a tarefa é demasiado simples, transferir memória de e para a placa de vídeo não compensa. A vantagem da GPU aparece em tarefas mais complexas.
MetaDriver: Tenho resultados semelhantes. Isto tem sido discutido há muito tempo, e faz sentido - a tarefa é demasiado simples, transferir memória de e para a placa de vídeo não compensa. A vantagem da GPU aparece em tarefas mais complexas.
Vejo, obrigado, vou fazer experiências com tarefas mais complexas.
Traduziu o seu trabalho ao estilo do OOP para a GPU CUDA. Começou-a em 2010, depois teve uma pausa, e de 2011 até ao Verão de 2014 conseguiu chegar à versão 0.3. Conseguiu uma aceleração de 100X. 137X vezes - e isso num algoritmo AMAZING, o que é difícil.
O trabalho utilizou a biblioteca QuantLib em C++, que ele próprio admite ter de retrabalhar segundo as linhas do "OOP ->-> abordagem processual" - de modo a que tudo funcionasse na GPU CUDA.
Ele escreve:
"Implementei os preços de Monte Carlo de IRD com a LMM na GPU com mínimos quadrados para características de exercício precoce.
Pode obter o código em kooderive.sourceforge.net tanto em C++ como em CUDA. O jornal está em ......
Usei um código para CUDA completamente diferente do que tinha usado anteriormente para C++. Em essência, trato os dados como o conceito central e utilizo o código para agir sobre os dados. O estilo é muito funcional. Foi preciso muito trabalho porque as minhas implementações anteriores do C++ tinham sido orientadas para objectos".
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Talvez Renat consiga ver o que se pode aprender com isto. É bem possível que uma nova especificação dê um melhor desempenho também na MQL5, não é?
Quanto a C#/C+++, se necessário, também podemos despejá-lo. O principal é obter o máximo rendimento possível. ;)
Testámos alguns dos guiões neste tópico numa máquina deste tipo:
CPU-Z
CUDA-Z
Para cada guião fornecerei um link para o post onde foi publicado para que outros o possam encontrar rapidamente, fazer os testes e comparar resultados, se necessário.
Teste 1
Teste 2
Teste 3
escala = 1000
Teste 4
Teste 5
Teste 6
Teste7
Teste 8
Também tentei testar o indicadorqpu_EMA-Rainbow do MetaDriver.
No CPU, o resultado é por vezes até 2x melhor. Aqui está o resultado:
//---
Volodya(MetaDriver), mostre-me os seus resultados?
P.S. Alterei o meu tipo no código do kernel nos parâmetros da função gpuEMA de__global para__local. Um pouco mais rápido, mas ainda mais lento do que no CPU.
Também tentei testar o indicadorqpu_EMA-Rainbow do MetaDriver.
No CPU, o resultado é por vezes até 2x melhor. Aqui está o resultado:
Volodya(MetaDriver), mostre-me os seus resultados?
P.S. Alterado no código do núcleo nos parâmetros da função gpuEMA de__global para__local. Um pouco mais rápido, mas ainda mais lento do que no CPU.
Tenho resultados semelhantes. Isto tem sido discutido há muito tempo, e faz sentido - a tarefa é demasiado simples, transferir memória de e para a placa de vídeo não compensa. A vantagem da GPU aparece em tarefas mais complexas.
Um exemplo de utilização da aceleração da GPU para negociação (derivados).
Mark Joshi - famoso pelos seus livros sobre matemática financeira, em particular sobre derivados e comércio de opções, relatou aqui o seu trabalho:
http://ssrn.com/abstract=2388415
Traduziu o seu trabalho ao estilo do OOP para a GPU CUDA. Começou-a em 2010, depois teve uma pausa, e de 2011 até ao Verão de 2014 conseguiu chegar à versão 0.3. Conseguiu uma aceleração de 100X. 137X vezes - e isso num algoritmo AMAZING, o que é difícil.
O trabalho utilizou a biblioteca QuantLib em C++, que ele próprio admite ter de retrabalhar segundo as linhas do "OOP ->-> abordagem processual" - de modo a que tudo funcionasse na GPU CUDA.
Ele escreve:
"Implementei os preços de Monte Carlo de IRD com a LMM na GPU com mínimos quadrados para características de exercício precoce.
Pode obter o código em kooderive.sourceforge.net tanto em C++ como em CUDA. O jornal está em ......
Usei um código para CUDA completamente diferente do que tinha usado anteriormente para C++. Em essência, trato os dados como o conceito central e utilizo o código para agir sobre os dados. O estilo é muito funcional. Foi preciso muito trabalho porque as minhas implementações anteriores do C++ tinham sido orientadas para objectos".
O seu projecto em si é de fonte aberta:
http://sourceforge.net/projects/kooderive/