OpenCl y las herramientas para ello. Reseñas e impresiones. - página 5

 
Mathemat:

Genial, proporcionará una base para comparar MQL y C/C++. Sólo he aportado los hechos. Y de todos modos, ¿por qué demonios debería ser un Tomás el Creyente?

Puede que haya un poco más de diferencia en los nervios, no hay que discutirlo.

Y, por cierto, me gustaría ver su "sólo los hechos".

Mi "sólo los hechos" están casi allí. "Casi" - porque desenterré las fuentes de mis antiguas pruebas. Voy a actualizarlos un poco, y luego publicaré las fuentes con los resultados de las pruebas como una tabla aquí.

 
joo: Y, por cierto, me gustaría ver su "sólo los hechos".

Aquí mismo. Véase mi segundo post en la página.

Por cierto, ya has respondido a mi post con el enlace. El código C anterior puede ser fácilmente reelaborado en MQL4. Consulte el archivo adjunto.

Archivos adjuntos:
pi.mq4  1 kb
 
Mathemat:

Aquí mismo. Véase mi segundo post en la página.

Por cierto, ya has respondido a mi post con el enlace. El código C de arriba es fácilmente reelaborado para MQL4. Consulte el archivo adjunto.

Por favor, haz una tabla con los resultados de las pruebas y publícala aquí, para que nadie que lea este hilo tenga que saltar por los enlaces.
 
AlexEro:

Te envié un enlace a las fotos de estos behemoths en un mensaje privado - no para complacer el ******ismo digital de los chicos de la escuela vocacional.

Vamos, créeme, tu foto no cambiará sus números aquí ni siquiera en un porcentaje. Adelante, publícalo.

¿Pero cuánto durará? En el buen sentido, hay que montar una buena refrigeración para un equipo de este tipo, refrigeración por agua, digamos, como en la imagen de abajo.

 
joo:
Por favor, escribe los resultados de las pruebas en forma de tabla y publícalos aquí, para que nadie que lea este hilo tenga que saltar por los enlaces.

No es una mesa. Un par de fotos.

Pruebas de los programas parallelpi_x.cpp con diferentes configuraciones de compilación. En la comparación con MQL4, sólo es importante el primer resultado: 6,723 segundos, en el que no se utilizan aceleradores (SSE*, IPP, OML).

Pero si alguien quiere echar un vistazo y ver cómo cambian los resultados al activar los aceleradores, abajo en el adjunto hay un archivo con los ficheros .exe compilados y las librerías paralelas necesarias. Todo lo que necesitas es ponerlos todos en un directorio y ejecutarlos desde la línea de comandos.

Por supuesto, estos resultados no representan ninguna competencia para los monstruos en el conjunto de tarjetas gráficas.

El mismo programa reescrito en MQL4:


El resultado: 22,98 segundos, es decir, 3,4 veces más. Pero allí no se trabaja con matrices, y puede ser crucial para nosotros. Adjunto el código del script.

Archivos adjuntos:
release.zip  278 kb
pi_1.mq4  1 kb
 
joo:

MQL5 es 20 veces más rápido que MQL4.

C++ es 6 veces más rápido que MQL5 (cuando se utilizan bibliotecas que paralelizan automáticamente la ejecución).

Total: 20*6=120 veces.

Si utilizas cálculos en la GPU, será aún más rápido.

TOTAL: 10/120=0,083c.

algo así.

¡Así que, fanfarria! Hay cuatro compiladores diferentes en el ring, compitiendo para... para compilar.

Bueno, eso es una broma, por supuesto. Pero en serio, se han escrito seis pruebas. Los resultados se muestran en la siguiente tabla. Y los comentarios son aún más bajos. :)

#Pruebas
Descripción
Nombre del ejecutable
Resultado de la prueba, s
1
Script Ex5 y biblioteca Ex5
1 MLP MQL compiler.ex5
97.2
2
Script Ex5 y librería C++ dll, compilador MS, todas las optimizaciones desactivadas
2 MLP MS compiler nonOpt.ex5
42.6
3
Ex5 script y librería C++ dll, compilador MS, todas las optimizaciones en
3 MLP MS compiler Opt.ex5
27.1
4
Ex5 script y librería C++ dll, compilador Intel, todas las optimizaciones incluidas
4 MLP Intel compiler.ex5
12.5
5
Script Ex4 y biblioteca Ex4
5 MLP MQL4 compiler.ex4
669.6
6
Ex4 script y librería C++ dll, compilador Intel, todas las optimizaciones activadas
6 MLP MQL4 Intel compiler.ex4
10.7




Como prueba de cálculos pesados se utiliza una red neuronal de 4 capas MLP 80-100-100-10, diseñada como bibliotecas enchufables ex4, ex5 y dll.

Ya lo vemos:

- los resultados de las bibliotecas conectadas ex5 y ex4 difieren en un factor de 6,8 (1 y 5 pruebas)

- los resultados de las bibliotecas eX5 conectadas y las bibliotecas dll del compilador de Intel difieren en un factor de 7,8 (1 y 4 pruebas)

- los resultados de las bibliotecas eX4 conectadas y de las bibliotecas dll del compilador de Intel difieren 62,5 veces (pruebas 5 y 6)

Conclusiones:

Por supuesto, estaba exagerando un poco con respecto a la diferencia de 20 veces entre MQL4 y MQL5. Tal diferencia se producirá (recuerdo dónde se me ocurrió ese número) bajo el uso intensivo de matrices bidimensionales, pero soy demasiado perezoso para ajustar las pruebas específicamente para esa característica específica (además, no corresponderá a los casos típicos de cálculos "pesados" - los casos típicos se presentan en las pruebas), por lo tanto, puedes tomar mi palabra o escribir una prueba por ti mismo. Por tanto, podemos hablar de una diferencia de velocidad de 6,8 veces entre MQL4 y MQL5 y de 62,5 veces entre MQL4 y C++.

Y me desanima este hecho - ¡ahtung! - El script MQL4 que llamó a la dll funciona más rápido que el script MQL5 con la misma dll... ¿Qué significa? - Lo he comprobado, lo he ejecutado varias veces, sin errores. Los desarrolladores parecen haber dicho que MT5 ha optimizado las llamadas dll en comparación con MT4. O bien son peculiaridades de las builds (MT5 574 y MT4 409) y las pruebas no son del todo correctas o... No lo sé.


Quién lo necesita, puede utilizar la rejilla (dll compilado de 4 o 6 pruebas - rejilla muy rápido), las fuentes se adjuntan. El número de neuronas en cada capa es configurable. Pero el optimizador (tanto para el 4 como para el 5) no admite más de 64 parámetros, además hay que utilizar un paso grande, por lo que este monstruo (como en las pruebas, 80-100-100-10, ¡19210 parámetros a optimizar!) no se puede entrenar utilizando medios estándar, hay que utilizar algoritmos de optimización personalizados. Por cierto, para esto (y no sólo para esto) decidí hacer una herramienta de pago (estará en la tienda, por supuesto), que permitirá usar optimizadores personalizados de 4 y 5 pasos para entrenar un número ilimitado de parámetros, incluso de 0 pasos.

Archivos adjuntos:
tests_mlp.zip  71 kb
 

Es convincente, joo, muy convincente incluso. Pero hay un par de puntos.

En primer lugar, al compilar por MS, incluso el mejor resultado (opción 3) es menos de 4 veces mejor que la opción 1.

En segundo lugar, no creo que el compilador todo incluido de Intel sea mejor que el de MS por más de un factor 2. Así que has habilitado más optimizaciones con Intel.

En cualquier caso, impresionante. Esperando que la mesa se llene hasta el final.

Ahora sé para qué sirven estas matrices de tarjetas de vídeo: ¡para hacer estos cálculos en cada momento !

 
Mathemat:

En segundo lugar, no creo que el compilador todo incluido de Intel sea más del doble de bueno que el de MS. Por lo tanto, Intel tiene más optimizaciones habilitadas.

Cuáles son: todos ellos. No tiene sentido usar un compilador sin utilizar todas sus funciones: los peces buscan donde está lo más profundo, mientras que el programador busca el mejor compilador. En este sentido, los compiladores de MQ no están personalizados, por lo que podemos suponer que están ajustados de forma óptima.
 

¡Y, me desanimé por este hecho, akhtung! - El script MQL4 que llama a la dll funciona más rápido que el script MQL5 con la misma dll... ¿Qué significa? - Lo he comprobado, lo he ejecutado varias veces, sin errores. Los desarrolladores parecen haber dicho que MT5 ha optimizado las llamadas dll en comparación con MT4. O bien son peculiaridades de las builds (MT5 574 y MT4 409) y las pruebas no son del todo correctas o... No lo sé.



Gracias, es muy ilustrativo y ejemplificador.

Supongo que no deberíamos comparar tanto los porcentajes individuales : porque la velocidad de la CPU (bueno, si la tomas en MegaHertz MHz, o GigaHertz, GHz) del ordenador suspendido ... es cero.

Cuando la diferencia de velocidad es de un 10-20%, tiene sentido preocuparse más por la fiabilidad del programa y su entorno y por el tratamiento de los errores. Por ejemplo, cuando se utiliza una DLL hecha en MSC, hay que prestar atención a cómo se enlaza con MSVCRT.DLL y a qué versión, porque tiene que funcionar en el entorno del complicado proceso terminal.exe y en el entorno del bloque de inicialización de MSVCRT.DLL, que puede diferir de una versión a otra, etc. Para el manejo normal de errores en la DLL, MetaTrader construye (y monitorea) una cadena de excepciones, que en sí misma ralentiza todo el sistema y llama a la DLL y así sucesivamente.

Sobre el tema de la velocidad de las neuronas:

aquí hay un hombre que tradujo la biblioteca de redes neuronales FANN a OpenCL y afirma que la aceleración es 20 veces mayor en la tarjeta GTX 285 promedio:

"En mi GPU actual (GeForce 9500 GT), obtengo más o menos la misma velocidad entre las versiones normal y OpenCL. Actualmente tengo una GTX 285 en pedido, y debería ser al menos 10 veces más rápida. Con una GPU moderna, como la GTX 480, espero que sea al menos 20 veces más rápido que mi Mac Pro Nehalem de 2,26 GHz. "

...

"Sí, la nueva tarjeta (GTX 285) ejecuta el kernel unas 20 veces más rápido".

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

Casi todo el mundo ha estado allí, por supuesto.

Para los fanáticos de B4 que no visitan mql5.com : OpenCL: Pruebas de implementación interna en MQL5

Sin embargo, ya casi está.

Sospecho que será muy atractivo para los autotraders que utilizan otras plataformas.