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

 
Mathemat:

Sí, MD, no te va muy bien con una CPU desnuda. Sin embargo, Intel está por todas partes...

Oh, vamos, tienes una gran tarjeta gráfica.

Me da miedo tocarlo. Una vez lo desinstalé y me encontré en una oscuridad casi total: Windows lo enganchó con algún driver inapropiado. Tuve que volver a insertar el SDK de AMD APP en condiciones de visibilidad del 1%. Fue divertido... :))) Pulse todos los botones por centésima vez...................
 
MetaDriver: Sí. Me estoy rascando la cabeza. Pero tal vez el conductor está torcido. Tengo miedo de tocarlo.
Es curioso: incluso los controladores nativos están torcidos, tanto para Intel como para AMD. Esperemos que sólo sea un problema de crecimiento.
 

Amigos, ¿podrían informar si este OpenCL en una CPU pura da esa aceleración sólo en MQL5 o también en otros lenguajes?

¿Has hecho la siguiente comparación: MQL5 + OpenCL VS C++ + Optimización completa del compilador?

Sospecho que no es OpenCL lo que mola sino la falta de optimizaciones en el propio MQL5.

P.D. Tengo un i7 2700K, intentaré (cuando llegue) probarlo con una CPU limpia.

 
Mathemat:
Es curioso: incluso los controladores nativos están torcidos, tanto para Intel como para AMD. Esperemos que sólo sea un problema de crecimiento.
Bueno, espero que en un par de años esto no ocurra, todo funcionará bien. De momento tengo otros problemas: aprender a programar bien estas cosas... :)
 
hrenfx:

Amigos, ¿podrían informar si este OpenCL en una CPU pura da esa aceleración sólo en MQL5 o también en otros lenguajes?

¿Has hecho la siguiente comparación: MQL5 + OpenCL VS C++ + Optimización completa del compilador?

Sospecho que no es OpenCL lo que mola sino la falta de optimizaciones en el propio MQL5.

P.D. Tengo un i7 2700K e intentaré (cuando llegue) probarlo con una CPU limpia.

No, no lo hicimos.

¡Adelante! Buen material.

Básicamente, el código se porta a C++ en diez minutos como máximo (en una CPU desnuda que cuente). Cómo usar OpenCL en C++ sólo lo he visto en una cartilla y nunca lo he probado. En realidad, me gustaría haberlo hecho.

 
hrenfx: Tengo la sospecha de que no es OpenCL lo que mola sino la falta de optimizaciones en el propio MQL5.

Sí, es lógico. Hace poco tuve una discusión en el foro de ixbt con un analista de CPU que comparte la misma opinión. La discusión comenzó aquí (mi nick es tamehtaM). Por favor, no me des una patada por mi incompetencia. Pero tengo la impresión de que Felid también se excede: habla con demasiada frecuencia de la IGP, incluso cuando ésta, la IGP, está ausente o es demasiado débil.

Mi primer post en este hilo fue escrito cuando aún no sabía cómo instalar correctamente el runtime de Intel OpenCL. De hecho, todavía no estoy seguro de que se haya configurado correctamente. Pero ya es unas tres veces mejor que en el SDK de AMD APP.

Las cifras de aceleración son dolorosamente grandes, eso es seguro. Y, obviamente, deberían ser menores cuando aparezcan las optimizaciones.

Lo interesante es que incluso sin estas optimizaciones la quinta es más rápida que la cuarta.

Y la aceleración en sí no es lo principal. Lo principal son las cifras absolutas de tiempo de ejecución. Definitivamente no van a empeorar. Para ser más precisos, no deberían empeorar.

 
Mathemat:

Evidentemente, se trata de una tarjeta discreta, no de una CPU: esos aumentos de velocidad son difícilmente alcanzables en emulación. Y el número de dispositivos ya es de 5, lo que es realmente espeluznante.

Si no te importa ejecutar un código ligeramente modificado, por favor, y publicar el resultado aquí. En el código, los cálculos para los distintos dispositivos OpenCL se ponen en un bucle (deberían ser rápidos) mientras que el cálculo en x86, el más largo, se ejecuta sólo una vez. Será largo, pero el script en sí se ejecuta una vez.

Me doy cuenta de que ya te estoy aburriendo. Pero en cualquier caso será una buena información para el equipo de soporte.

Aquí está el 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 en Cpu MachResult==1.41575 a 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociales = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo de CPU = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado en Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociales = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo GPU = 687 ms
¡2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número de dispositivo = 4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado en Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Recuento de indicadores = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo GPU = 234 ms
¡2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número de dispositivo = 3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado en Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Recuento de indicadores = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo GPU = 234 ms
¡2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número de dispositivo = 2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado en Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Recuento de indicadores = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo GPU = 234 ms
¡2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número de dispositivo = 1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado en Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Recuento de indicadores = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo GPU = 234 ms
¡2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número de dispositivo = 0

 
casinonsk:

Aquí está el 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 en Cpu MachResult==1.41575 a 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociales = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo de CPU = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Resultado en Gpu MachResult==1.41575 a 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Indicadores sociales = 16; Recuento de barras históricas = 144000; Recuento de pasadas = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Tiempo GPU = 687 ms
¡2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Número de dispositivo = 4

Por lo tanto, está claro ahora, el dispositivo = 4 es la CPU desnuda. Y Tiempo dela GPU = 687 ms- bastante consistente. Te ha funcionado bien.

No entiendo por qué el tiempo de ejecución de CPU es tan largo. Tengo unos 235000 ms con una frecuencia de núcleo mucho más baja (2,8 GHz).

O su memoria es escasa o es muy lenta, o la CPU está permanentemente sobrecargada por alguna tarea que consume muchos recursos. No está claro. La cifra del ratio de tiempo es anormalmente alta.

 
Mathemat:

Así que, ahora está claro, el dispositivo = 4 es la CPU desnuda. Y Tiempo dela GPU = 687 ms- bastante consistente. Te ha funcionado bien.

Lo que no entiendo es por qué el tiempo de ejecución tiempo de CPU es tan largo. Tengo unos 235000 ms - a una frecuencia de núcleo mucho más baja (2,8 GHz).

O su memoria es escasa o es muy lenta, o la CPU está permanentemente sobrecargada por alguna tarea que consume muchos recursos. No está claro. La cifra del ratio de tiempo es anormalmente alta.

El Asesor Experto está optimizando, está un poco cargado de núcleos.

16Gb de memoria

 
casinonsk: El Asesor Experto está optimizando, los núcleos se cargan un poco.

Entonces todo está claro. Intente ejecutar el mismo script cuando la optimización haya terminado. Probablemente cargue todos los núcleos.

Es muy interesante ver una CPU desnuda de gama alta cuando no hay nada más en medio.