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

 
Ashes: No sirvió de nada.

Cuéntanos con detalle lo que has hecho. Empezando por la forma en que derribó el SDK de la APP de AMD.

Por cierto, tal vez, no haya insertado un parámetro en el script ParallelTester_00-01x en la función CLContextCreate() igual a 0 (puede ser ejecutado en el host (es decir, en la CPU). No estaba escrito en mi puesto.

 
Mathemat:
Cuéntanos con detalle lo que has hecho. Empezando por la forma en la que se ha eliminado el SDK de la APP de AMD.

Desinstalar el SDK de AMD APP ejecutando el Setup.exe correspondiente, Desinstalar. Reiniciado.

Instalado Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe), sólo RunTime. Reiniciado.

Ejecutar MT5 - falló. Registro arreglado por su consejo. MT5 recargado - bummer.

He añadido la ruta siguiendo los consejos de mql5, lo he probado con y sin comillas, con x64, y x32. Después de cada modificación de registro - mi uso de MT5 de nuevo y mi uso - los mismos huevos de edad, sólo una vista lateral.

Ahora HKEY_LOCAL_MACHINE\NSOFTWARE\NKhronos\NOpenCL\NVendors tiene este aspecto:

(Por defecto)REG_SZ (valor no asignado)

C:\NProgram Files (x86)\NIntel\NOpenCL SDK1.5\Nbin\x86\Nintelocl.dll REG_DWORD 0x00000000 (0)

 
Ashes: Ahora mismo HKEY_LOCAL_MACHINE\NSOFTWARE\NKhronos\NOpenCL\NVendors tiene este aspecto:

(Por defecto)REG_SZ (valor no asignado)

C:\NProgram Files (x86)\NIntel\NOpenCL SDK\1.5\Nbin\x86\Nintelocl.dll REG_DWORD 0x00000000 (0)

¿Has mirado ahí dentro? Yo, por ejemplo, no tengo nada en esta ruta (pero he descargado e instalado sólo el tiempo de ejecución, tal vez por eso no).

Y en segundo lugar, acabo de hacer intelocl.dll sin la ruta completa. De todos modos, es probable que se haya registrado durante la instalación en tiempo de ejecución.

P.D. Experimenté con rutas completas. Metatrader no ve OpenCL con rutas completas (ambas). Pero si pongo sólo intelocl.dll como nombre, todo se vuelve visible inmediatamente, incluso sin reiniciar el ordenador.

No sé cómo elegir el archivo "correcto" entre dos archivos existentes con el mismo nombre en el sistema.

Por favor, informe aquí sobre el proceso. Aun así, es interesante, tal vez haya algunos matices. Yo mismo he estado luchando con esto durante mucho tiempo, y sí que me he "liado" con el resultado, que me gusta mucho.

P.P.S. Por cierto, cuando estuve en el recurso de Intel, me aconsejaron desinstalar el SDK de Intel completo y volver a instalarlo. es decir, no sólo desinstalar, sino también entrar en los directorios system32 y sysWOW64 y eliminar todo lo relacionado con intelocl. Se trata de intelocl*.dll, opencl*.dll y otros archivos. En algún lugar de aquí está http://software.intel.com/en-us/forums/intel-opencl-sdk/. Cuando lo encuentre, pondré un enlace más preciso.

Enlaces útiles: http://software.intel.com/en-us/articles/opencl-release-notes/

Y aquí - especialmente útil: http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, allí los consejos de Uri Levy (Intel) pueden ser realmente útiles. De todos modos, sigue siendo un juego de pandereta.

 
MetaDriver (p. 53):

Esto es en la CPU (en mi caso es el dispositivo 1):

Se ha introducido el parámetro CLContextCreate(device) en el parámetro de la secuencia de comandos. Se puede hurgar en todas las opciones.

Lo interesante es esto:

Este script en la compilación 630 de alguna manera no se ejecuta así. No hay mensaje, entra en un bucle, cargando la piedra al 100%. Y no va más allá de un tiempo razonable. Pero ya tengo el runtime de Intel.

 
Mathemat:

Lo interesante es cómo:

Este script en la compilación 630 de alguna manera no se ejecuta así. No hay mensaje, entra en un bucle, cargando la piedra al 100%. Y no va más allá de un tiempo razonable. Pero ya tengo el runtime de Intel.

Recompilado. A mí me funciona.

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Archivos adjuntos:
 
MetaDriver: Lo he recompilado y me funciona.

¡¿Está en la CPU?! Bueno, si es así, me estás asustando...

Me emocioné demasiado pronto. Lo he ejecutado y no tiene ningún sentido, ni una sola entrada en el registro de EA. Aunque el guión comenzó e inmediatamente llenó toda la roca. En otras palabras, golpeó algo, pero no llegó a CLContextCreate() (habría dicho algo si hubiera llegado allí, ¿no?).

Esto es algo nuevo. Parece que el runtime de Intel no comprende el código compilado en el SDK de AMD. He puesto OCL_Device tanto en 0 como en -1. Sin efecto.

En general, es un inconveniente no poder elegir la plataforma. Ojalá fuera posible hacerlo. Estoy harto de reinstalar.

 
Mathemat:

¡¿Está en la CPU?! Bueno, si es así, me estás asustando...

No, en la GPU. Pero el dispositivo OpenCL es seleccionable. Aquí en la CPU:

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Me emocioné demasiado pronto. Lo he ejecutado y no tiene ningún sentido, ni una sola entrada en el registro de EA. Pero el guión se pone en marcha e inmediatamente llena toda la roca. Es decir, golpea algo, pero no llega a CLContextCreate() (si lo hubiera hecho, diría algo, ¿no?).

Algo nuevo. Es como si el runtime de Intel no entendiera el código compilado en el SDK de AMD. He puesto OCL_Device tanto en 0 como en -1. Sin efecto.

En general, es un inconveniente que no se pueda seleccionar la plataforma. Sería deseable tener una oportunidad así. Estoy harto de reinstalar.

Oh, hombre, es un ransomware).

Bien, aquí está el código fuente. Haz lo que quieras con él.

El código no compila en el SDK de AMD. Al menos el código OCL lo hace. El programa OCL se compila durante la ejecución del código mql. El archivo EX5 del complemento OCL sólo compila las funciones de puente mql/ocl-driver. No creo que se compilen con un código de máquina diferente según el fabricante del controlador. Aunque sólo los desarrolladores pueden aclarar completamente este punto.

Archivos adjuntos:
 
MetaDriver: El código no compila en el SDK de AMD.
Es comprensible, estaba hablando mal (bueno, no soy un codificador-profesional). Pero sigue dependiendo del proveedor de la "biblioteca" OpenCL (funciones internas propiamente dichas, no la API).
 
Mathemat:

¿Lo has comprobado allí? Yo, por ejemplo, no tengo nada de eso en esta ruta (pero sólo descargué e instalé el runtime, quizá por eso no).

Y en segundo lugar, acabo de hacer intelocl.dll sin la ruta completa. De todos modos, es probable que se haya registrado al instalar el tiempo de ejecución.

...

El intelocl.dll "desnudo" fue uno de los primeros en ser comprobado. Hay un archivo con ese nombre en las carpetas x64 y x86.

 
Ashes: El intelocl.dll "desnudo" fue uno de los primeros en ser comprobado. Hay un archivo con ese nombre en las carpetas x64 y x86.

No sé qué hacer entonces. Me he estado torturando buscando una solución hasta que el equipo de soporte me dio una pista. Probablemente no sea una solución completa, pero sí funcionó en mi ordenador.

Probablemente lo primero que hay que aprender es a eliminar limpiamente los rastros de los SDK anteriores.