OpenCL: pruebas de implementación interna en MQL5 - página 24

 

Poner la memoria en modo de doble canal, resultado: 39x de aceleración en lugar 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

Hice la prueba varias veces ayer para estar seguro, hoy también, los resultados fueron cercanos.

Lo extraño es que al configurar el modo de doble canal, la CPU dio un 0,3% de impulso, pero la GPU dio un 25% de impulso.

 
tol64:

Tengo algo en ceros. ¿Qué significa eso? En esta línea:Resultado en Gpu MachResult==0.0 a 0 paso

¿Tal vez no tengo suficiente memoria, o tal vez necesito disminuir un poco las CountBars y/o CountPass?
 
fyords:

Poner la memoria en modo de doble canal, resultado: 39x de aceleración en lugar de 29x.

Hice la prueba varias veces ayer para estar seguro, hoy también, los resultados fueron cercanos.

Lo extraño es que la CPU mostró un 0,3% de aumento de velocidad en el modo de doble canal, pero la GPU mostró un 25% de aumento de velocidad.

En realidad, no hay nada extraño en ello. En el trabajo (no en el trabajo con los gráficos, sino en los cálculos) con la GPU el cuello de botella es la memoria RAM (no basta con realizar los cálculos en la GPU, también hay que obtener los resultados de la tarjeta gráfica en la memoria RAM). La memoria RAM se ha vuelto más rápida y los resultados de la GPU han mejorado.

En el caso de la CPU, todo está ya almacenado en la memoria RAM y no hay necesidad de correr los resultados de un lado a otro.

De ahí una conclusión reveladora: si quieres cálculos rápidos en la GPU, instala una memoria rápida.

 
Eso lo explica entonces, gracias por la aclaración.
 
fyords:
Tal vez no hay suficiente memoria, tal vez CountBars o / y CountPass deben reducirse un poco?

Sí, así es. Así es como resultó:

...que también es agradable. ))

//---

Si añado CountBars, la imagen parpadea y desaparece durante los 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!
 

Así que la conclusión del tema es simple, no importa lo rápido que sea tu CPU, es sólo un poz para la tarjeta gráfica :)

De todos modos, la tarjeta de vídeo hará que la CPU sea al menos 10 veces más rápida en los modelos de vídeo antiguos y 100 veces más rápida en los nuevos.

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)

En mi caso, debido a la lentitud de los núcleos de la CPU, la aceleración es de 364 veces.

 
Urain:

Así que la conclusión del tema es simple, no importa lo rápido que sea tu CPU, es sólo un poz para la tarjeta gráfica :)

De todos modos, tu tarjeta gráfica superará a tu CPU al menos 10 veces más rápido en los modelos de vídeo antiguos y 100 veces más rápido en los nuevos.

En mi caso, debido a la lentitud de los núcleos de la CPU, la diferencia es de 364 veces.

¡Vaya! ¡Es un récord! )))

//---

Intentaré más tarde poner los últimos drivers (295.73), quizás mejore un poco. ))

 
Urain: De todos modos, una vidya superaría a la CPU por un factor de 10, como mínimo, en los modelos de vídeo más antiguos y por un factor de 100 en los más nuevos.

Interesante. La tarjeta fyords es más potente (GeForce GT 440) y el tiempo de cálculo es un orden de magnitud mayor.

¡Vaya , es un récord! )))

Pues sí, da miedo imaginar si en lugar de esta piedra estuviera el i286 y algún monstruo moderno en lugar de la tarjeta. Todo lo que obtendría, o incluso más por varias veces.

P.D. ¿Alguien más tendrá un sistema sin tarjeta gráfica discreta como yo?

 

2012.03.05 17:43:16 CPU del terminal: GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz con OpenCL 1.1 (4 unidades, 3092 MHz, 4008 Mb, versión 2.0)

Mathemat:

...

P.D. ¿Alguien más tendrá un sistema sin gráficos discretos como yo?

2012.03.05 17:43:16 CPU del terminal: GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz con OpenCL 1.1 (4 unidades, 3092 MHz, 4008 Mb, versión 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Resultado en Cpu MachResult==1.27347 a 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Recuento de inticadores = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Tiempo de CPU = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Resultado en Gpu MachResult==1.27347 a 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Recuento de inticadores = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Tiempo GPU = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) ¡Inicio de OpenCL OK!

:(((

¿Quizás tengo "granadas del sistema equivocado"? (Me refiero a la versión del SDK de AMD)