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

 

Algo no me funciona. La línea de inicialización está bien:

2012.04.01 05:52:01    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))


(Puse OpenCL 1.1 de AMD, y 1.2 encima). Pero ahora la ejecución de la prueba da

2012.04.01 06:06:49    ParallelTester_00-01x (EURUSD,H1)    OpenCL not found.


Antes de esta actualización Intel Graphics Driver para la versión más reciente, a continuación, tiró hacia abajo los controladores de AMD con la misma instalación, y luego establecer de nuevo.

¿Qué estoy haciendo mal ahora?

P.D. Pronto llegará Ivy y mostrará realmente lo que Intel puede hacer en gráficos integrados, junto con Intel HD 4000. Mira los gráficos.

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat:

¿Qué estoy haciendo mal ahora?

Recompila la prueba. Eso debería ayudar. Si no, ve a servicedesk.
 
Mathemat:

¿Qué estoy haciendo mal ahora?
CLCreateContext ha cambiado el parámetro bool use_gpu por int device (número de dispositivo). Corrija el código.
 
mql5:
En la nueva compilación, el parámetro de la función CLContextCreate ha cambiado, se utiliza int device en lugar de bool use_gpu.

con device>=0 se utiliza como número de dispositivo OpenCL en la secuencia
con device==OPENCL_DEVICE_ANY (-1) utilizado para seleccionar automáticamente entre todos los dispositivos disponibles
con device==OPENCL_DEVICE_GPU (-2) utilizado para seleccionar automáticamente entre todos los dispositivos GPU disponibles

¿Puedes mostrarme cómo hacer esto en el código? Llamo a CLContextCreate( OPENCL_DEVICE_ANY ) y obtengo el resultado al compilar:

'OPENCL_DEVICE_ANY' - undeclared identifier    ParallelTester_00-01x.mq5    145    31


Construye 619.

Y segunda pregunta: ¿dónde puedo encontrar la última ayuda?

P.D. Funcionó en cuanto puse el argumento en -1. La constante OPENCL_DEVICE_ANY aún no ha sido declarada :)

 
En la compilación 619 estas constantes se han renombrado a CL_DEVICE_ANY/CL_DEVICE_GPU.

Pero en futuras construcciones será CL_USE_ANY/CL_USE_GPU_ONLY
 

Decidí comprobar cómo funcionaría OpenCL en el i3-2120 (no es mi ordenador, no hay vídeo discreto en el sistema). Instalado AMD APP SDK, OpenCL-Z detectó todo. El terminal mostró una línea durante la inicialización:

2012.04.02 03:59:47    Terminal    CPU: GenuineIntel  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)


Comprobado en el código de MetaDriver adjunto a este post y ligeramente modificado con los últimos cambios en la compilación 619 (ver las primeras pruebas aquí). Resultado:

2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CPU time = 20483 ms
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    GPU time = 27628 ms
2012.04.02 03:59:55    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!


En tiempo de ejecución en la "GPU", los cuatro hilos del procesador estaban totalmente ocupados, al 100%.

¿Qué tengo que hacer para conseguir la aceleración? En un sistema basado en Pentium G840 (también sin vídeo discreto), era 25 veces más rápido:

P.D. He enviado un mensaje al Servicio de Atención al Cliente, pero me temo que el problema es más bien mío... Aparentemente he aprendido a instalar y desinstalar correctamente el SDK de AMD APP con los ojos cerrados, pero creo que no he llegado a todas las trampas. Aunque Intel OpenCL Runtime está instalado en mi sistema, todavía no se reconoce en el terminal como un dispositivo OpenCL.

P.P.S. Resulta que aquí hay algo más que desenterré(https://www.mql5.com/ru/forum/6042/page25):

Cenizas: 2012.03.05 17:43:16 CPU del terminal: CPU GenuineIntel(R) Core(TM) i3-2100 a 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)

Incluso la CPU es casi idéntica al i3-2120...
Archivos adjuntos:
 

La GPU+OpenCL es una gran herramienta, después de todo.

2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Resultado en Cpu MachResult==3.78654 a 50 pass
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Cuenta de inticadores = 16; Cuenta de barras históricas = 50.000; Cuenta de pasadas = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tiempo de CPU = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Resultado en Gpu MachResult==3.78654 a 50 pass
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Cuenta de inticadores = 16; Cuenta de barras históricas = 50.000; Cuenta de pasadas = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tiempo GPU = 140 ms

 
MetaDriver:

La GPU+OpenCL es una gran herramienta, después de todo.

2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tiempo GPU = 140 ms

Propongo hacer las pruebas para que el tiempo de cálculo de la GPU no sea tan pequeño. De todos modos, 140 ms, imho, es un valor demasiado poco fiable, especialmente con los errores de medición de GetTickCount() en decenas de milisegundos.

MD, soy yo el que está celoso de ti.

 
Mathemat:

Sugiero hacer las pruebas para que el tiempo de cálculo de la GPU no sea tan pequeño.

No tengo paciencia para esperar a la CPU :) Cuanto más se adentra en el bosque, más fría es la GPU...
 
MigVRN:
No tengo paciencia para esperar una CPU :) Cuanto más se adentra en el bosque, más fría es la GPU...

Igualmente. :)

Pero lo ejecutaré en 4096 abejas. La CPU lo contará en cinco minutos.