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

 
2012.03.08 11:01:12     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      OpenCL init OK!
2012.03.08 11:01:16     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      GPU time = 3962 ms
2012.03.08 11:01:16     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 11:01:16     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      Result on Gpu МахResult==1.45763 at 821 pass
2012.03.08 11:07:01     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      CPU time = 345465 ms
2012.03.08 11:07:01     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 11:07:01     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      Result on Cpu МахResult==1.45762 at 821 pass
2012.03.08 11:07:01     ParallelTester_00-02-j16x7x3z (EURUSD,M30)      CpuTime/GpuTime = 87.19459868753155

De nuevo, el papaklass tiene vídeo en placa, yo tengo discreto, la CPU es la misma, la diferencia es insignificante.

Raraklass ¿cuál es su bitrate y eje?

 
papaklass:

W7 32bit.

Gracias. Yo también, vale, creo que para cuando llegue a OpenCL, todos los fallos estarán arreglados y todo funcionará bien.
 
MetaDriver:

...

No voy a publicar el código fuente por avaricia, pero para aquellos que quieran probarlo en su propio hardware, hay un ex5 en el trailer.

Eso es todo, estoy fuera. Estoy fuera, y la entrada está cerrada para ajustar. ))

FE      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       14:55:06        OpenCL init OK!
ED      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       14:55:10        GPU time = 3946 ms
LS      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       14:55:10        Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
KS      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       14:55:10        Result on Gpu МахResult==0.0 at 0 pass
GK      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       15:01:07        CPU time = 356587 ms
HI      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       15:01:07        Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
HI      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       15:01:07        Result on Cpu МахResult==1.05885 at 866 pass
KM      0       ParallelTester_00-02-j16x7x3z (AUDUSD,M5)       15:01:07        CpuTime/GpuTime = 90.36670045615813

Si te sobra un minuto, puedes retocar el ex5 para mi regaño. )) Pues bien, haz las pasadas más pequeñas, por ejemplo, 512, o barras 100000. Si no lo hago, no lo hago. De todos modos, tendré que estudiar todo más tarde. )) Ya me ha dado muchos ejemplos para estudiar. Gracias.

 
tol64:

Eso es, me he pasado. La entrada está cerrada. ))

Si tienes algo de tiempo libre, puedes corregir el ex5 para mi regaño. )) Haga menos pases, por ejemplo, 512, o barras 100000........................ Gracias.

Nivapros.

2012.03.08 16:37:13    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    CpuTime/GpuTime = 191.7058823529412
2012.03.08 16:37:13    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    Result on Cpu МахResult==1.16557 at 228 pass
2012.03.08 16:37:13    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    Соunt inticators = 16; Count history bars = 100000; Count pass = 256
2012.03.08 16:37:13    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    CPU time = 35849 ms
2012.03.08 16:36:37    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    Result on Gpu МахResult==1.16557 at 228 pass
2012.03.08 16:36:37    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    Соunt inticators = 16; Count history bars = 100000; Count pass = 256
2012.03.08 16:36:37    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    GPU time = 187 ms
2012.03.08 16:36:37    ParallelTester_00-02-(16x7x3) (EURUSD,M30)    OpenCL init OK!

--

Por cierto, sapo, el código CL sigue siendo de libre acceso.

Incluso puedo comentarlo en detalle si alguien tiene alguna duda.

Se llama cl_ParallelTester_00-02-(16x7x3).cl después de ejecutar el script.

Archivos adjuntos:
 
MetaDriver:

Nivapros.

Por cierto, sapo, el código CL sigue siendo de libre acceso.

Se llama cl_ParallelTester_00-02-(16x7x3).cl después de ejecutar el script.

Desgraciadamente, incluso esta variante me revienta los sesos del portátil. )))

Al principio, lancé la variante antigua por error y pensé que la vida había terminado porque toda la pantalla estaba cubierta de "nieve". Y ni siquiera el cierre de la terminal ayudó. Pero reiniciar ayudó y la vida volvió a mí. Cuando ocurrió, como un verdadero héroe del oeste, conseguí pulsar PrtSc y capturé el espectáculo de la luz. No creí que fuera a funcionar, pero lo hizo. Esto es lo que parecía:

//---

Así que ahí están, los sabrosos pasteles de Vladimir Gomonov. Fue interesante. )))

 
tol64:

1. Por desgracia, incluso esta opción hace que mi ordenador portátil se quede sin palabras. )))

2. Al principio, por error, ejecuté la variante antigua y pensé que la vida se había acabado, ya que toda la pantalla estaba cubierta de "nieve".

1. solucionable. Aquí hay otra variante. 50000 bares x 128 pases.

// Incluso mejor que antes: he añadido una función de activación escalonada a la red neuronal.

// (la versión anterior era lineal, lo que en mallas reales es bastante inútil)

2... Esto sucede cuando se sobrecarga la GPU. He tenido más que eso. ;-)

Archivos adjuntos:
 
MetaDriver:

Puede resolverse. Aquí hay otra opción. 50.000 bares x 128 pases

// Incluso mejor que antes - añadimos una función de activación escalonada a la red neuronal.

// (la versión anterior era lineal, lo que en mallas reales es bastante inútil)

Gracias. Este es el resultado:

OR      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:08        OpenCL init OK!
DD      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:11        GPU time = 2216 ms
PR      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:11        Соunt inticators = 16; Count history bars = 50000; Count pass = 128
EQ      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:11        Result on Gpu МахResult==3.56957 at 14 pass
QI      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:29        CPU time = 17894 ms
GH      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:29        Соunt inticators = 16; Count history bars = 50000; Count pass = 128
FJ      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:29        Result on Cpu МахResult==3.56957 at 14 pass
OL      0       ParallelTester_00-02-a16x7x3u (AUDUSD,M5)       16:27:29        CpuTime/GpuTime = 8.074909747292418

//---

He aquí una pregunta (a los desarrolladores probablemente más). ¿Por qué las variantes anteriores tienen un efecto tan asesino en el mapa? Por cierto, el helecho de Barnsley también acaba estrellándose contra mí cuando se hace un zoom profundo. Este problema se resuelve de alguna manera en la programación o el mecanismo del terminal podrá controlar esto eventualmente. Es decir, no debería haber un fallo, sólo debería haber un mayor tiempo de cálculo.

 
tol64:

Gracias. Este es el resultado:

//---

Aquí hay una pregunta (probablemente más para los desarrolladores). ¿Por qué las opciones anteriores son tan mortales en el mapa? Por cierto, el helecho de Barnsley también acaba estrellándose contra mí cuando se hace un zoom profundo. Este problema se resuelve de alguna manera en la programación o el mecanismo del terminal podrá controlar esto eventualmente. Quiero decir que no debería haber un fallo, sólo debería haber un mayor tiempo de cálculo.

Por favor.

--

Esto puede sonar inesperado, pero estoy fuertemente en contra del control por parte de la terminal - se ralentizará en las comprobaciones.

Y esto a pesar de que mi helecho había desgarrado el conductor de la cinta de vídeo en absoluto con una fuerte escalada.

// Verdadero, el sistema no se estrelló - el controlador se reinició con un mensaje de error crítico.

// Pero el terminal se bloqueó - tuve que matarlo desde el administrador de tareas

En su lugar, debería crearse la función GPU_Info(int GPU_PARAM_xxx) que recupera la información del sistema sobre la tarjeta de vídeo, incluyendo la cantidad total máxima de búferes permitidos para una tarea. Entonces el propio programador puede ocuparse de no exceder los límites.

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5
 
MetaDriver:

En su lugar, debería crearse la función GPU_Info(int GPU_PARAM_xxx) que recupera la información del sistema sobre la tarjeta de vídeo, incluyendo la cantidad máxima de búferes para una tarea, para que el propio programador se encargue de no superar los límites.

Su sugerencia es mejor, pero en principio en la misma línea - Control. Algunos usuarios pueden tener canas de antemano por este tipo de baile o tener un ataque de ira. Sobre quien se derramará todo esto entonces. Cierto, los programadores. Habrá más trabajo de arbitraje. Y nadie lo necesita. )))
 

Enlace del post de AlexEro sobre "cuaternario": Tabla de todas las tarjetas de vídeo AMD más o menos modernas.

Si está interesado en el soporte de la doble precisión en los cálculos - vea la columna FP64 (Double Precision) - cálculos de doble precisión en coma flotante. Es el penúltimo en la tabla. Si hay "-", significa que no es compatible.

Razón de la queja: