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

 

Colocar a memória em modo de canal duplo, resultado: aceleração de 39x em vez de 29x.

2012.03.05 09:45:56     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.05 09:45:57     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 1123 ms
2012.03.05 09:45:57     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 09:45:57     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.35098 at 174 pass
2012.03.05 09:46:41     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 43914 ms
2012.03.05 09:46:41     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 09:46:41     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.35098 at 174 pass
2012.03.05 09:46:41     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 39.10418521816563

Fez o teste várias vezes ontem para ter a certeza, hoje também, os resultados foram próximos.

O estranho é que ao definir o modo de canal duplo, a CPU deu um aumento de 0,3%, mas a GPU deu um aumento de 25%.

 
tol64:

O que significa isso? Nesta linha:Resultado em Gpu MachResult==0.0 a 0 passe

Talvez eu não tenha memória suficiente, ou talvez precise de diminuir um pouco a CountBars e/ou CountPass?
 
fyords:

Colocar a memória em modo de canal duplo, resultado: aceleração de 39x em vez de 29x.

Fez o teste várias vezes ontem para ter a certeza, hoje também, os resultados foram próximos.

O estranho é que a CPU mostrou uma velocidade de 0,3% em modo de canal duplo, mas a GPU mostrou uma velocidade de 25%.

Na verdade, não há nada de estranho nisso. Ao trabalhar (não trabalhar com gráficos, nomeadamente os cálculos) com o gargalo da GPU é a RAM (não é suficiente efectuar cálculos na GPU, também é necessário obter os resultados da placa gráfica na RAM). A RAM tornou-se mais rápida - os resultados sobre a GPU melhoraram.

No caso da CPU, tudo já está armazenado na RAM e não há necessidade de correr os resultados para trás e para a frente.

Daí uma conclusão reveladora: se quiser cálculos rápidos da GPU, instale memória rápida.

 
Isso explica-o então, obrigado pelo esclarecimento.
 
fyords:
Talvez não haja memória suficiente, talvez a CountBars ou/e CountPass deva ser um pouco reduzida?

Sim, é isso mesmo. Foi assim que se revelou:

...o que também é agradável. ))

//---

Se eu adicionar CountBars, a imagem pisca e desaparece durante os cálculos.

 
2012.03.05 12:40:51     Terminal        CPU: GenuineIntel Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10 GHz with OpenCL 1.1 (2 units, 2094 MHz, 2048 Mb, version 2.0)

Видеоадаптер    ATI Mobility Radeon HD 545 v  (256 Мб)

2012.03.05 08:59:28     ParallelTester_00-01 x (GBPUSDL,H1)      CpuTime/GpuTime = 19.70338983050847
2012.03.05 08:59:28     ParallelTester_00-01 x (GBPUSDL,H1)      Result on Cpu МахResult==1.33921 at 366 pass
2012.03.05 08:59:28     ParallelTester_00-01 x (GBPUSDL,H1)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 08:59:28     ParallelTester_00-01 x (GBPUSDL,H1)      CPU time = 46500 ms
2012.03.05 08:58:41     ParallelTester_00-01 x (GBPUSDL,H1)      Result on Gpu МахResult==1.33921 at 366 pass
2012.03.05 08:58:41     ParallelTester_00-01 x (GBPUSDL,H1)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 08:58:41     ParallelTester_00-01 x (GBPUSDL,H1)      GPU time = 2360 ms
2012.03.05 08:58:39     ParallelTester_00-01 x (GBPUSDL,H1)      OpenCL init OK!
 

Assim, a conclusão do tópico é simples, por mais rápida que seja a sua CPU, é apenas uma poz para a placa gráfica :)

De qualquer modo, a placa de vídeo tornará o CPU pelo menos 10 vezes mais rápido nos modelos de vídeo antigos e 100 vezes mais rápido nos modelos mais recentes.

2012.03.05 14:31:23     ParallelTester_00-01 x (EURUSD,M15)      CpuTime/GpuTime = 364.5847953216374
2012.03.05 14:31:23     ParallelTester_00-01 x (EURUSD,M15)      Result on Cpu МахResult==1.01643 at 577 pass
2012.03.05 14:31:23     ParallelTester_00-01 x (EURUSD,M15)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 14:31:23     ParallelTester_00-01 x (EURUSD,M15)      CPU time = 62344 ms
2012.03.05 14:30:21     ParallelTester_00-01 x (EURUSD,M15)      Result on Gpu МахResult==1.01643 at 577 pass
2012.03.05 14:30:21     ParallelTester_00-01 x (EURUSD,M15)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 14:30:21     ParallelTester_00-01 x (EURUSD,M15)      GPU time = 171 ms
2012.03.05 14:30:21     ParallelTester_00-01 x (EURUSD,M15)      OpenCL init OK!
CPU: Intel P4 3 GHz, 2 kernel, RAM 3 Gb, 32 bits
GPU: NVIDIA Corporation GeForce GT 430 with OpenCL 1.1 (2 units, 1400 MHz, 1023 Mb, version 295.73)

No meu caso, devido à lentidão dos núcleos da CPU, a aceleração é de 364 vezes.

 
Urain:

Assim, a conclusão do tópico é simples, por mais rápida que seja a sua CPU, é apenas uma poz para a placa gráfica :)

De qualquer forma, a sua placa gráfica terá um desempenho superior ao do seu CPU pelo menos 10 vezes mais rápido em modelos de vídeo antigos e 100 vezes mais rápido em modelos mais recentes.

No meu caso, devido à lentidão dos núcleos da CPU, a diferença é de 364 vezes.

Uau! Isso é um recorde! )))

//---

Tentarei mais tarde colocar os últimos condutores (295,73), talvez fique um pouco melhor. ))

 
Urain: Mesmo assim, um vidya teria um desempenho superior ao do CPU em pelo menos 10, em modelos de vídeo mais antigos e em 100 em modelos mais recentes.

Interessante. Os fyords têm uma carta mais forte (GeForce GT 440), e o tempo de cálculo é uma ordem de magnitude mais longa.

Uau , é um recorde! )))

Bem, sim, é assustador imaginar se i286 seria em vez desta pedra e algum monstro moderno seria em vez do cartão. Tudo o que receberia, ou até mais, por várias vezes.

P.S. Mais alguém vai ter um sistema sem uma placa gráfica discreta como eu?

 

2012.03.05 17:43:16 CPU Terminal: CPU Intel(R) Core(TM) i3-2100 GenuineIntel a 3.10GHz com OpenCL 1.1 (4 unidades, 3092 MHz, 4008 Mb, versão 2.0)

Mathemat:

...

P.S. Mais alguém vai ter um sistema sem gráficos discretos como eu?

2012.03.05 17:43:16 CPU Terminal: CPU Intel(R) Core(TM) i3-2100 GenuineIntel a 3.10GHz com OpenCL 1.1 (4 unidades, 3092 MHz, 4008 Mb, versão 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0,73476776766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Resultado no Cpu MachResult==1.27347 na passagem 1125
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Contagem de inticadores = 16; Contagem de barras históricas = 144000; Contagem de passes = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Tempo de CPU = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Resultado sobre Gpu MachResult===1.27347 na passagem 1125
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Contagem de inticadores = 16; Contagem de barras históricas = 144000; Contagem de passes = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) GPU time = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!

:(((

Talvez eu tenha "granadas do sistema errado"? (Refiro-me à versão AMD SDK)

Razão: