OpenCL: testes internos de implementação em MQL5 - página 58
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Bem, finalmente, temos estado à sua espera. Se estiver pronto para experimentar, instale o Intel OpenCL Runtime ( instruções de ligação).
Executar o guião sem alterar nada nele e afixar o registo do separador "Especialistas" tal como os seus colegas anteriores fizeram. O guião demorará cerca de 3 minutos a correr na sua jóia, tenha paciência comigo. Ao mesmo tempo, veremos como o OpenCL funciona na pedra mais fria da ponte Sandy Bridge.
Se não tiver paciência ou se achar que está para além das suas capacidades, não há problema, não se sente ofendido.
P.S. O objectivo deste guião é ver o que uma CPU nua pode fazer sem quaisquer dragões de vídeo discretos. Suspeito que com o Intel Runtime devidamente inserido, este guião terá uma aceleração de cerca de 200 ou mesmo ligeiramente superior.
Há algumas dúvidas de que o Intel OpenCL Runtime esteja instalado correctamente.
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1347.164383561644
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==0.9316 at 10253 pass
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 4
Existem dúvidas de que o Intel OpenCL Runtime esteja instalado correctamente.
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms
Provavelmente, o argumento CLContextCreate() foi fixado em algo diferente de zero. Bem, eu pedi-lhe para não mudar nada! Já conhecemos as capacidades do seu dragão vídeo de duas cabeças. Mas parece que tem até vários deles.
De acordo com as minhas estimativas aproximadas, em CLContextCreate(0) deverá ter números sobre o tempo de CPU = 180000 ms e tempo de GPU = 900 ms (aproximadamente). O seu primeiro tempo de execução é estranhamente elevado para uma CPU deste tipo. Talvez estivesse sobrecarregado com outras tarefas?
Pode simplesmente executar o guião como eu o anexei - sem alterar nada no código, nem um único carácter?
P.S. Claro, talvez dispositivo = 0 corresponde não ao CPU mas a algo mais. Bem, então experimente (de 0 a 3). O tempo mais elevado de GPU deve em teoria corresponder ao CPU nu, ou seja, hospedeiro.
Não se fixou zero como argumento de CLContextCreate() mas algo mais. Bem, eu pedi-lhe para não mudar nada! Já conhecemos as capacidades do seu dragão vídeo de duas cabeças. Mas parece ter vários deles.
De acordo com a minha estimativa aproximada, em CLContextCreate(0) deverá ter valores na ordem de tempo de CPU = 180000 ms e tempo de GPU = 900 ms (aproximadamente). O seu primeiro tempo de execução é estranhamente elevado para uma CPU deste tipo. Talvez estivesse sobrecarregado com outras tarefas?
Pode simplesmente executar o guião tal como o anexei - sem alterar nada, nem um único personagem?
P.S. Claro, talvez dispositivo = 0 corresponde não ao CPU mas a algo mais. Bem, então experimente (de 0 a 3). O tempo mais elevado de GPU deve em teoria corresponder ao CPU nu, ou seja, hospedeiro.
Eu não mudei os parâmetros! Funcionou como está.
De acordo com o vídeo, sim é 2x590.
Tentei novamente com CLContextCreate(0)1,2,3, o resultado é o mesmo de antes.
O problema pode ser com oIntel OpenCL Runtime.
Não alterou os parâmetros! Começou como está.
Voltou a correr com CLContextCreate(0)1,2,3 o resultado é o mesmo de antes.Todos os resultados são os mesmos? Eu não acredito... Bem, este script não pode ter tempo de GPU = 219 ms numa CPU nua. No melhor dos casos, seriam cerca de 800 ms, mas não cerca de 200 ms.
Aqui está o meu resultado típico (tenho o CPU Pentium G840):
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) CpuTime/GpuTime = 88.40817091454272
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) Result on Cpu МахResult==1.05116 at 7785 pass
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:23:09 ParallelTester_00-01x (EURUSD,H1) CPU time = 235873 ms
2012.04.22 22:19:13 ParallelTester_00-01x (EURUSD,H1) Result on Gpu МахResult==1.05116 at 7785 pass
2012.04.22 22:19:13 ParallelTester_00-01x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:19:13 ParallelTester_00-01x (EURUSD,H1) GPU time = 2668 ms
2012.04.22 22:19:10 ParallelTester_00-01x (EURUSD,H1) OpenCL init OK!
2012.04.22 22:19:10 ParallelTester_00-01x (EURUSD,H1) CLGetInfoInteger() returned 1
OK, vamos continuar.
Os resultados são todos iguais? Eu não acredito... Bem, este script não pode ter tempo de GPU = 219 ms numa CPU nua. Na melhor das hipóteses serão cerca de 800 ms, mas não cerca de 200 ms.
Ok, esquece.
Acabei de tentar novamente comCLContextCreate(0)
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1265.405982905983
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==1.48772 at 2051 pass
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 296105 ms
2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==1.48772 at 2051 pass
2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 234 ms
2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!
2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 5
Está obviamente numa placa discreta, não no CPU: tais acelerações na emulação são dificilmente possíveis. E o número de dispositivos que já possui é de 5, o que é assustador.
Se não se importar de executar um código ligeiramente modificado, por favor, e afixar o resultado aqui. No código, os cálculos para os vários dispositivos OpenCL são colocados num laço (devem ser rápidos) enquanto o cálculo no x86, o mais longo, é executado apenas uma vez. Será longo, mas o guião em si é executado uma vez.
Compreendo que já estou a aborrecê-lo. Mas em qualquer caso será uma boa informação para a Equipa de Apoio.Tenho um resultado interessante )) Já percebi, não é o número total de dispositivos, é o número actual
Embora os cálculos estejam em curso, afixá-los-ei quando estiverem prontos.
A propósito, nem CLGetInfoInteger() nem CL_DEVICE_COUNT estão presentes na ajuda.
Resultado PS.
Resultado PS.
Actualize a sua ajuda, a sua está desactualizada.
2. Tem
muito provavelmente, o primeiro número, 11357 ms, refere-se ao anfitrião (CPU nua), e o segundo, 998 ms, refere-se à placa gráfica. A ordem de ganho no anfitrião, grosso modo, é bastante consistente com a aceleração alcançada no AMD OpenCL (cerca de 38 vezes num Athlon II de 4 núcleos). Embora não muito, deveria ser mais, algures perto de 50-60. É bem possível que a sua memória seja muito lenta.
O valor CpuTime/GpuTime, claro, só é calculado para o último dispositivo calculado.
1. actualizar a ajuda, a sua está claramente desactualizada.
2. O valor CpuTime/GpuTime, claro, só é calculado para o último dispositivo calculado.
1. actualizado manualmente tudo está lá, obrigado, mas a ajuda não é actualizada juntamente com o terminal e o meta-editor?
2. Sim, mas ainda assim, simpático ).
Com o seu hardware é quase claro, só tem o anfitrião sendo um dispositivo OpenCL. Por outro lado, é estranho como se obteve um resultado tão elevado mais cedo (página 51):
Por alguma razão, não consigo tirar o cursor da inserção do código. E se eu citar alguém, o mesmo disparate. É um bug do fórum?
Mais provavelmente um bug no motor do fórum, mas nem sempre assim. Normalmente clico na barra HTML e insero manualmente um par de letras após a última tag. Depois volto para o modo de edição visual do post.