Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 25

 
fxsaber:

¿Cómo has depurado la parte del código de OpenCL?

Al ejecutar y desanclar los resultados.
 
Fast235:

Renat, por favor, proporciona una lista aproximada de los casos en los que OpenCL tiene una ventaja, cuando se trabaja con un gran número de matrices o cuando hay un gran conjunto de símbolos e indicadores en un EA.

Si se pueden construir millones de matrices sin reticulación y que se puedan analizar en paralelo, se puede acelerar.

En general, cualquier persona que resuelva y comprenda los límites de sus tareas responderá fácilmente a su pregunta. Mientras no se comprendan los límites (y sólo se sueñe con los "y si")constantemente con el tirón de las tareas que se resuelven, el paralelismo sigue siendo sólo una idea genial.

Desgraciadamente, la mayoría de las tareas no se pueden paralelizar de forma eficaz.

 
Renat Fatkhullin:

Si se pueden construir millones de matrices sin enlaces cruzados y que se puedan analizar en paralelo, se puede acelerar.

En general, alguien que resuelve y comprende los límites de sus tareas responderá fácilmente a su pregunta. Mientras no se comprendan los límites (y sólo se sueñe con los "y si") constantemente con las tareas de desgarro que se resuelven, el paralelismo sigue siendo sólo una idea genial.

Desgraciadamente, la mayoría de las tareas no se pueden paralelizar de forma eficaz.

Me acuerdo del hecho de que hay momentos de acompañamiento en los cálculos, por eso me surgió la pregunta

 
Renat Fatkhullin:
Al correr y desempatar los resultados.

¿Es posible poner una cartilla dentro del código OpenCL?

 

A grandes rasgos sobre OpenCL

Podemos imaginar que hay un procesador con registros grandes (vectoriales), en los que se pueden escribir N valores dobles individuales (por ejemplo, dejemos que N=64, entonces se pueden escribir 64 valores en el registro).
Dichos registros se pueden sumar, multiplicar, etc., entre sí, resulta que por un comando, se puede realizar una operación sobre N dables.

Pero hay limitaciones.

Es imposible operar con los valores de un registro, es decir, por ejemplo, es imposible sumar una parte de los valores de un registro entre sí.
En cuanto a la frecuencia, dicho procesador es muy inferior a la CPU habitual, por lo que no tiene sentido utilizarlo en tareas en las que se requiere el procesamiento secuencial de un valor.
Además de la menor frecuencia, también hay una limitación de memoria, los valores sólo pueden cargarse y descargarse de la memoria especial.
Es posible copiar datos de la RAM a esta memoria especial, pero sólo a través de un canal muy estrecho (lento).
Por lo tanto, las tareas que necesitan procesar grandes cantidades de datos tampoco son adecuadas para OpenCL

 
fxsaber:

¿Es posible poner una cartilla dentro del código OpenCL?

En el exterior.

Vamos a saltarnos la sesión de conferencias. Simplemente tome y lea todo lo que ha sido creado y descrito en detalle sobre OpenCL por nosotros y en Internet en general.

Búsqueda de OpenCL:




En realidad, es muy interesante que "opencl trading" se haya buscado en Google con un montón de cosas de nuestros recursos:


 
Renat Fatkhullin:

He aquí una comparación en Python 3.8 y MQL5 en modos de un solo hilo/OpenCL: tiempo en segundos, cuanto menos mejor

pi-single.py
pi-multi.py
Velocidad PI.mq5 simple
Velocidad PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

Python en modo JIT a través de numba, el hardware es así:

  • Windows 10 x64, Intel Xeon E5-2690 v3 a 2,60 GHz
  • GeForce RTX 2080

El ejemplo de uso de OpenCL es muy sencillo y no hay florituras en su optimización. Aunque la tarea no es masiva para OpenCL y provocó sobrecargas en la preparación, aún así dio un resultado mucho mejor.

Los cálculos paralelos muy grandes pueden ejecutarse de forma rutinaria con OpenCL. El umbral de entrada no es alto y sólo se necesita un día para saber cómo utilizarlo.

Se adjuntan los archivos para la reproducción.

Parece que este problema del cálculo de PI en OpenCL ya se resolvió hace 7 años:

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • www.mql5.com
Настоящая статья открывает небольшой цикл публикаций, посвященных программированию на OpenCL, или Open Computing Language. Платформа MetaTrader 5 в ее текущем воплощении до подключения OpenCL не позволяла напрямую, т.е. нативно, использовать преимущества многоядерных процессоров для ускорения вычислений. В разделе "Статьи", правда, еще полтора...
 
Todavía no puedo entenderlo.
Single thread: the value of PI is 3.141592653590
Single thread: calculated in 7.382561 seconds
OpenCL not found. Error code=5100
OpenCL initialization failed with 5100

¿Alguien tiene algún enlace directo a lo que hay que descargar? En Intel es necesario registrarse.


HH En la GPU Intel en la CPU tengo que grok los controladores del adaptador de vídeo, a continuación, instalado Intel_OpenCL_driver, a continuación, poner los controladores del adaptador de vídeo. Así todo funciona y el vídeo no se ralentiza.

 

Vict:

Me temo que el uso activo de esta función convertirá el arranque en una búsqueda de varios minutos.

No se puede activar el almacenamiento en caché.

Renat Fatkhullin:

He aquí una comparación en Python 3.8 y MQL5 en modos de un solo hilo/OpenCL: tiempo en segundos, cuanto menos, mejor

pi-single.py
pi-multi.py
Velocidad PI.mq5 simple
Velocidad PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

Python en modo JIT a través de numba, el hardware es así:

  • Windows 10 x64, Intel Xeon E5-2690 v3 a 2,60 GHz
  • GeForce RTX 2080

En el modo multithreading estás comparando el rendimiento de la CPU con el de la GPU en 10000 hilos. La GPU no está involucrada en python.

Si encuentro un ordenador con una tarjeta de vídeo adecuada, arreglaré el código Python y lo probaré en este ordenador. Intentaré ejecutar tu código en la CPU, pensé que se requería la GPU.

No es mi intención demostrar quién es más rápido en absoluto. Es más interesante conocer sus planes para integrar Python.

¿Prevé alguna función de negociación y eventos de tick en python?


Aún así, la GPU parece ser obligatoria, "AMD APP SDK" no se puede descargar.
Документация по MQL5: Торговые функции
Документация по MQL5: Торговые функции
  • www.mql5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция: Ордер – это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк...
 
Ilyas:

A grandes rasgos sobre OpenCL

Podemos imaginar que hay un procesador con registros grandes (vectoriales) donde podemos escribir N valores dobles individuales (por ejemplo, dejemos que N=64, entonces se pueden escribir 64 valores en el registro).
Dichos registros se pueden sumar, multiplicar, etc., entre sí, resulta que por una instrucción, se puede realizar una operación sobre N dables.

Pero hay limitaciones.

Es imposible operar con los valores de un registro, es decir, por ejemplo, es imposible sumar una parte de los valores de un registro entre sí.
En cuanto a la frecuencia, dicho procesador es muy inferior a la CPU habitual, por lo que no tiene sentido utilizarlo en tareas en las que se requiere el procesamiento secuencial de un valor.
Además de la menor frecuencia, también hay una limitación de memoria, los valores sólo pueden cargarse y descargarse de la memoria especial.
Es posible copiar datos de la RAM a esta memoria especial, pero sólo a través de un canal muy estrecho (lento).
Por lo tanto, las tareas que requieren el procesamiento de grandes cantidades de datos tampoco son adecuadas para OpenCL

No hay vectores en el ejemplo de cálculo de PI. Simplemente divide la suma total en varios trozos independientes y los envía a cada núcleo OpenCL. Al final todo se suma.

Por ejemplo, si no hay tarjeta de vídeo discreta y hay 4 núcleos físicos + 4 virtuales en la CPU, la ejecución será ocho veces más rápida. Es decir, los trozos de suma se contarán en cada núcleo en paralelo.

Razón de la queja: