OpenCL: testes internos de implementação em MQL5 - página 60

 
Mathemat:

Sim, MD, não está a ir tão bem numa CPU nua. A Intel está em todo o lado...

Oh, vá lá, tem uma óptima placa gráfica.

Tive medo de lhe tocar. Desinstalei-o uma vez e dei por mim na escuridão quase total - o Windows enganchou-o com algum condutor inadequado. Tive de reintroduzir o AMD APP SDK em condições de visibilidade de 1%. Foi divertido... :) Carregue em todos os botões pela centésima vez...................
 
MetaDriver: Sim, estou a coçar a cabeça. Mas talvez o condutor esteja torto. Tenho medo de lhe tocar.
É engraçado: até os condutores nativos são corruptos - tanto para a Intel como para a AMD. Esperemos que seja apenas um problema de crescimento.
 

Pessoal, poderiam aconselhar se este OpenCL num CPU puro dá essa aceleração apenas em MQL5 ou também em outras línguas?

Já fez a seguinte comparação: MQL5 + OpenCL VS C++ + Full Compiler Optimization?

Suspeito que não é o OpenCL que é tão fixe mas sim a falta de optimizações na própria MQL5.

P.S. Tenho um i7 2700K, vou tentar (quando lá chegar) testá-lo num CPU limpo.

 
Mathemat:
Engraçado: até os condutores nativos são corruptos - tanto para a Intel como para a AMD. Esperemos que seja apenas um problema de crescimento.
Bem, espero que dentro de alguns anos isto não aconteça, tudo funcione bem. Por enquanto tenho outros problemas - para aprender a programar correctamente este material... :)
 
hrenfx:

Pessoal, poderiam aconselhar se este OpenCL num CPU puro dá essa aceleração apenas em MQL5 ou também em outras línguas?

Já fez a seguinte comparação: MQL5 + OpenCL VS C++ + Full Compiler Optimization?

Suspeito que não é o OpenCL que é tão fixe mas sim a falta de optimizações na própria MQL5.

P.S. Tenho um i7 2700K e vou tentar (quando lá chegar) testá-lo num CPU limpo.

Não, não o fizemos.

Força nisso! Bom material.

Basicamente, o código é portado para C++ no máximo em dez minutos (num CPU nu que conta). Como usar o OpenCL em C++ só vi num primer e nunca o experimentei. Na verdade, quem me dera ter visto.

 
hrenfx: Tenho uma suspeita de que não é o OpenCL que é fixe, mas sim a falta de optimizações na própria MQL5.

Sim, é lógico. Tive recentemente uma discussão no fórum ixbt com um analista de CPU que partilha a mesma opinião. A discussão começou aqui (o meu apelido é tamehtaM). Por favor, não me pontapeies pela minha incompetência. Mas tenho a impressão de que Felid também está a exagerar: fala demasiadas vezes de IGP - mesmo quando este, IGP, ou está ausente ou é demasiado fraco.

O meu primeiro post neste tópico foi escrito quando ainda não sabia como instalar correctamente o tempo de execução do Intel OpenCL. De facto, ainda não tenho a certeza de que tenha sido correctamente definido. Mas já é cerca de três vezes melhor do que no AMD APP SDK.

Os números da aceleração são dolorosamente grandes, isso é certo. E devem obviamente tornar-se mais baixos quando as optimizações aparecem.

Curiosamente, mesmo sem estas optimizações, a quinta é mais rápida do que a quarta.

E a aceleração em si não é o principal. O principal são os números absolutos do tempo de execução. Definitivamente não irão piorar. Para ser mais preciso, não devem ficar pior.

 
Mathemat:

Trata-se obviamente de uma placa discreta, não de um CPU: tais velocidades são dificilmente alcançáveis em emulação. E o número de dispositivos já é de 5, o que é realmente 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.

Aqui está o resultado.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Cpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociais = 16; Barras de histórico de contagem = 144000; Passe de contagem = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo de CPU = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Gpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociais = 16; Barras de histórico de contagem = 144000; Passe de contagem = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU time = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número do dispositivo = 4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Gpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores de contagem = 16; barras de histórico de contagem = 144000; passe de contagem = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU time = 234 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número do dispositivo = 3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Gpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores de contagem = 16; barras de histórico de contagem = 144000; passe de contagem = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU time = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número do dispositivo = 2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Gpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores de contagem = 16; barras de histórico de contagem = 144000; passe de contagem = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU time = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número do dispositivo = 1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Gpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores de contagem = 16; barras de histórico de contagem = 144000; passe de contagem = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU time = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número do dispositivo = 0

 
casinonsk:

Aqui está o resultado.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Cpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociais = 16; Barras de histórico de contagem = 144000; Passe de contagem = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Tempo de CPU = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado em Gpu MachResult===1.41575 a 7544 passagem
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociais = 16; Barras de histórico de contagem = 144000; Passe de contagem = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU time = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número do dispositivo = 4

Portanto, agora está claro, dispositivo = 4 é a CPU nua. E tempo deGPU = 687 ms- bastante consistente. Funcionou bem para si.

Não compreendo porque é que o tempo de execução do tempo de CPU é tão longo. Tenho cerca de 235000 ms com uma frequência central muito mais baixa (2,8 GHz).

Ou a sua memória é baixa ou é muito lenta, ou a CPU está permanentemente sobrecarregada por alguma tarefa terrivelmente consumidora de recursos. Não é claro. O valor da relação temporal é anormalmente elevado.

 
Mathemat:

Bem, agora está claro, dispositivo = 4 é a CPU nua. E tempo deGPU = 687 ms- bastante consistente. Funcionou bem para si.

Só não percebo porque é que o tempo de execução é tão elevado. Tenho cerca de 235000 ms - a uma frequência central muito mais baixa (2,8 GHz).

Ou a sua memória é baixa ou é muito lenta, ou a CPU está permanentemente sobrecarregada por alguma tarefa terrivelmente consumidora de recursos. Não é claro. O valor da relação temporal é anormalmente elevado.

O Expert Advisor está a optimizar, está um pouco carregado de núcleos.

16Gb memória

 
casinonsk: O Expert Advisor está a optimizar, os núcleos são carregados um pouco.

Então tudo é claro. Tente executar o mesmo guião quando a optimização tiver terminado. Provavelmente carrega todos os núcleos.

É muito interessante olhar para um CPU de topo nu quando nada mais está no caminho.

Razão: