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

 
Ashes:

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

[...] ¿Tal vez tengo "granadas del sistema equivocado"? (Me refiero a la versión del SDK de AMD).

Espectacular. Compré el núcleo, el mother, la memoria y el cooler en la tienda más habitual que encontré en la red. En total costó unos 6 mil. Supongo que me han deslizado un guijarro del futuro por accidente.

Tal vez sea por el SDK. No creo que valga un fallo en la memoria, por defecto es sólo DDR-III. Y el monocanal o no, ciertamente afecta, pero no tan terriblemente.

 
Mathemat:

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

Me pregunto si la velocidad de cálculo depende de la resolución (tengo 1920x1080), porque el escritorio también se come algo (tema Aero).

Quizá por eso se tarda más en calcular.

 
fyords: Y me pregunto si la velocidad de cálculo depende de la resolución (tengo 1920x1080), porque el escritorio también se come algo (tema Aero).

Sí, puede ser. ¿Qué muestra tu índice de rendimiento de Windows Aero? Aquí está la mía:


No necesito nada de esa pajarita, así que está apagada.

P.D. Comprobado. No tiene ningún efecto.

 

La última prueba (3.12.2011) pasó con normalidad, pero ahora aparece algún fallo, pero la puntuación es de 6,8 para el vídeo. Tal vez ese sea el problema (el fallo). El nuevo hardware no está instalado. Puede ser un problema con el nuevo hardware, entonces voy a esperar a una nueva versión, allí de nuevo voy a hacer una prueba.

 

x32

x32

x64

x64

cpu-z

1

2

 

Añadí la genética tonta y la puse en bucle para maximizar. Obtuve un optimizador que ajustaba un entramado de una sola capa en datos simulados equivalentes a 500 días de historia en precios abiertos de cinco minutos (16 indicadores por entrada).

Por favor, haz la prueba.

En este punto considero que la agitación se ha completado con éxito, porque la prueba del optimizador es insuficiente. ;)

Que tiene una desaceleración (en comparación con los demás) - ahora ya sabe para qué ahorrar ;-)

Así que, mis resultados:

2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Full time of optimization == 14 sec 305 ms
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Optimization is closing. Best result == 1.91356 at 92 generation.
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 92: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 91: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 90: MaxResult==1.91356
2012.03.06 03:44:23     ParallelOptimazer_00-02 (EURUSD,M30)    Generation 89: MaxResult==1.91356
.............
.........

Permítanme explicar por última vez en mis dedos: Este es un ciclo completo de optimización de una red neuronal primitiva Asesor de Expertos.

// Bueno, casi un Asesor Experto. Cálculos adicionales en el código de ESTE "Asesor Experto", para que calcule los beneficios con suficiente realismo,

// no superará (en tiempo de cuenta. con una implementación inteligente) los cálculos que ya están ahí. Es decir, la ralentización puede ser, digamos, doble.

Archivos adjuntos:
 
MetaDriver:

He añadido la genética tonta y la maximización en bucle. He obtenido un optimizador que ajusta un entramado de una capa sobre datos simulados equivalentes a 500 días de historia sobre precios de apertura de cinco minutos (16 indicadores por entrada).

Por favor, haz la prueba.

...

Gracias).

...

NJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:06 Generation 36: MaxResult==2.29423
NO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:08 Generation 37: MaxResult==2.29426
FE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:10 Generation 38: MaxResult==2.29426
PJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 39: MaxResult==2.29427
HO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 40: MaxResult==2.29427
QE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:14 Generation 41: MaxResult==2.29427
EJ 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 42: MaxResult==2.29427
LP 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 43: MaxResult==2.29427
KE 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Generation 44: MaxResult==2.29427
DI 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Optimization is closing. Best result == 2.29427 at 44 generation.
KO 0 ParallelOptimazer_00-02 (GBPJPY,M5) 03:46:15 Full time of optimization == 81 sec 917 ms 
 

MetaDriver, muchas gracias. Has hecho tu trabajo de prospección con un sobresaliente. Al mismo tiempo me has dado la oportunidad de comprobar mi configuración "sin caballos" sin tarjeta gráfica discreta y quedarme muy, muy sorprendido.

Ejecuta tu optimizador. Es así:

2012.03.05 23:00:12     Terminal        CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.1 (2 units, 2793 MHz, 7912 Mb, version 2.0)
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Full time of optimization == 58 sec 141 ms
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Optimization is closing. Best result == 1.87689 at 60 generation.
2012.03.06 04:24:34     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 60: MaxResult==1.87689
2012.03.06 04:24:33     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 59: MaxResult==1.87689
2012.03.06 04:24:32     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 58: MaxResult==1.87689
2012.03.06 04:24:31     ParallelOptimazer_00-02 (EURUSD,H1)     Generation 57: MaxResult==1.87689

Asumiendo que cada generación cuenta aproximadamente con la misma cantidad de tiempo, obtenemos que en comparación con tu Ferrari, mi "tazi" es aproximadamente 6,5-7 veces más lento, al igual que la última vez (58,14 seg por 60 generaciones ~ 0,97 seg/generación).

2 Graff: Si se pudiera desactivar la gráfica discreta durante la duración de la prueba y hacer la prueba en la gráfica integrada de la piedra, sería muy interesante (al mismo tiempo y mirar el progreso de Intel en esta área en la transición de Lynnfield a Sandy Bridge).

Pero para ello, tendrías que descargar el SDK de AMD para OpenCL. No lo hará peor tu tarjeta discreta (tiene su propio controlador), pero puedes conseguir OpenCL 1.1 en tu PC, aunque no estoy 100% seguro de que funcione.

Pero si se niega, no me ofenderé.

 

Re-post del foro mql4.

Colegas, vais a tener mucha confusión y pegas con OpenCL. No esperes resultados fáciles.

Hay muchas opciones porque OpenCL es una tecnología de software que depende del controlador de vídeo. De hecho, el controlador de vídeo se convierte en un pequeño sistema operativo. Todo lo que se cuelga por el camino: UltraVNC, MSI afterbufner, Agnitum OutPost web-control interactivo y mil programas más pueden entorpecer el funcionamiento normal de OpenCL.

Dicho esto, aunque se consiga que OpenCL funcione para cálculos sencillos con subprocesos, aún queda otro obstáculo insalvable que superar, a saber: para cálculos complejos, la precisión tecnológica (soporte parcial de 32 bits de IEEE) y operativa(pérdida de precisión al overclockear una tarjeta de juegos) de la GPU sigue sin ser suficiente para cálculos científicos serios. Además, mientras que las GPU de nVidia disponen de procesamiento de doble precisión de 64 bits en casi todas las tarjetas de vídeo modernas, las de AMD sólo lo tienen en algunas series de gama alta. nVidia también tiene un error, pero diferente - están en la liga con Microsoft y por lo tanto su notoria CUDA (y OpenCL) en realidad no funcionan en, por ejemplo, Server 2003, pero al mismo tiempo funcionan bien en Server 2008 e incluso en el viejo Win XP - puramente por razones de marketing de Microsoft.

OpenCL sirve para realizar cálculos imprecisos de 32 bits como la convolución o el filtrado.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
AlexEros:Pérdida de precisión al overclockear una tarjeta de juego

¿Quién va a hacer overclocking? ¿Obtener un 10-15% de ganancia en la velocidad de cálculo, pero con el riesgo de un error de cálculo debido a la muerte de una sola abeja? Bueno, no estamos jugando a un juego en el que no dibujar cien vértices no afecta a nada...

OpenCL sirve para realizar cálculos imprecisos de 32 bits, como la convolución o el filtrado.

Hagamos una advertencia. Los cálculos deben ser realmente masivos y pesados para considerar significativa la pérdida de precisión. La integración es una suma/multiplicación masiva, es un caso pesado.

Una cosa es sumar dos números, multiplicar por un tercero (cada uno de ellos con cálculos de 32 bits tiene una precisión suficiente para los cálculos prácticos) y escribir el resultado en alguna celda como resultado de una iteración del bucle y no utilizarlo de ninguna otra manera dentro de la GPU.

Otra cosa es calcular pi en mil millones de iteraciones utilizando la serie de Leibniz de convergencia más lenta (esta serie se utiliza popularmente para demostrar la tecnología OpenMP):


En el segundo caso, cuando se utilizan números de 32 bits, existe un peligro real de perder precisión, porque se suman mil millones de números. Terver dice que en el 99,7% de los casos, el error resultante no superará la precisión de un número multiplicado por 2*10^5. Eso sí que es serio, y no siempre.

Nadie impide que un desarrollador realice varios cálculos precisos en una CPU honesta para estimar los errores reales.

Me parece que con precauciones razonables se puede utilizar esta tecnología. Y si usas procesadores modernos de ambos fabricantes (AMD APU Llano o incluso Intel Sandy Bridge), puedes olvidarte de la tarjeta gráfica discreta por un tiempo: qué diferencia hay si soy 100 o sólo 25 veces más rápido... Y no se van a morir las abejas, ya que tampoco voy a overclockear el procesador.

Razón de la queja: