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

 

Buenas tardes a todos.

Un consejo sobre este tema tan interesante:

1. ¿Existen ya EAs de trading que utilicen OpenCL para los cálculos?

(hace más de un año se anunció el soporte y todos juntos probamos el rendimiento en un script de prueba, pero pasó mucho tiempo y el tema se silenció...).

2. Si tengo varias tarjetas de vídeo instaladas en mi sistema, ¿se utilizarán todas para los cálculos o sólo una de ellas?
 
vittt: 1. ¿Existe ya algún EA de trading que utilice OpenCL para los cálculos?

Probablemente exista, pero es poco probable que esté en un kodobaz. Hay pocos entusiastas y no todos lo hacen.

OpenCL es ventajoso cuando permite una aceleración significativa de los cálculos, lo que es fundamental para el comercio. Meterlo en el algoritmo sólo para "shoblo" o cargar la tarjeta de vídeo no es demasiado sensato.

En mi opinión, el resultado más serio se puede obtener con cálculos intensivos bien paralelos o para los diseñadores de redes neuronales. Probablemente valga la pena preguntarles.

Por ejemplo, personalmente tengo una direcciónque me interesa, pero OpenCL apenas es necesario ahí, ya que no serviría de nada (demasiadas operaciones de acceso aleatorio en memoria global que sólo el diablo sabe paralelizar). Todavía no estoy desesperado y no he probado todas las posibilidades razonables, pero definitivamente no va a ser en acceso libre.

2. Si tiene más de una tarjeta de vídeo instalada en el sistema, ¿se utilizarán todas para el cálculo o sólo una de ellas?

La empresa dijo algo sobre los problemas con las tarjetas múltiples o incluso con las de doble cabeza. No sé si se han resuelto.

 

Hola.

Estoy haciendo cálculos masivos en MetaTrader5, resolviendo un problema (modelando un juego de póker). Estoy escribiendo en Mcl5 porque soy un nerd y sólo lo conozco. En mi caso, las cuestiones de rendimiento son muy importantes.

Así, entiendo que las tareas, en las que cada paso de cálculo sucesivo no está ligado a los resultados de los anteriores, pueden ser paralelizadas. ¡Bien! Tengo una tarea de este tipo.

¿Pero cómo puedo paralelizarlo? Si mi algoritmo opera con estructuras (struct) cuyos métodos

- Por ejemplo, abrir un archivo de texto desde un disco duro, leerlo, añadir información a las matrices de la estructura, cerrar el archivo de texto

- y otros métodos contienen muchas funciones estándar, por ejemplo, rand(), ArrayResize(), etc.

OpenCl, según tengo entendido, es un lenguaje similar a c++. De todos modos, mi pregunta es, ¿cómo puedo paralelizar los cálculos en general?

 
Stasikusssss:

Hola.

Estoy haciendo cálculos masivos en MetaTrader5, resolviendo un problema (modelando un juego de póker). Estoy escribiendo en Mcl5 porque soy un nerd y sólo lo conozco. En mi caso, las cuestiones de rendimiento son muy importantes.

Así, entiendo que las tareas, en las que cada paso de cálculo sucesivo no está ligado a los resultados de los anteriores, pueden ser paralelizadas. ¡Bien! Tengo una tarea de este tipo.

¿Pero cómo puedo paralelizarlo? Si mi algoritmo opera con estructuras (struct) cuyos métodos

- Por ejemplo, abrir un archivo de texto desde un disco duro, leerlo, añadir información a las matrices de la estructura, cerrar el archivo de texto

- y otros métodos contienen muchas funciones estándar, por ejemplo, rand(), ArrayResize(), etc.

OpenCl, según tengo entendido, es un lenguaje similar a c++. De todos modos, mi pregunta es: ¿cómo puedo paralelizar los cálculos en general?

Google es la ayuda.

En este foro no obtendrá respuesta a esa pregunta.

Por una simple combinación de dos razones:

Los programadores principiantes no programan en OpenCL en absoluto (y no se ocupan del paralelismo en absoluto) ya que no pueden comprenderlo.

2 Los programadores experimentados no quieren jugársela porque (su pregunta) requiere un estudio exhaustivo de su calificación, para responderla en un lenguaje comprensible para usted, y luego darle una larga explicación de su respuesta.

Por lo tanto, respeta los recursos de tiempo de los programadores experimentados e investiga tú mismo los fundamentos, pero cuando lo descubras y tengas preguntas específicas sobre el lenguaje (OpenCL), tendrás más posibilidades de tener una conversación significativa.

Быстрое погружение в MQL5
Быстрое погружение в MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы решили изучить язык программирования торговых стратегий MQL5, но ничего о нем не знаете? Мы постарались взглянуть на MQL5 и терминал MetaTrader 5 глазами новичка и написали эту небольшую вводную статью. Из неё вы сможете получить краткое представление о возможностях самого языка, а также несколько полезных советов по работе с редактором MetaEditor 5 и самим терминалом.
 

podría responder que es posible paralelizar

sólo en C puro, sólo las operaciones aritméticas más simples

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

OpenCL 2.0

OpenCL 2.0 es la última evolución significativa del estándar OpenCL, diseñada para simplificar aún más la programación multiplataforma, al tiempo que permite acelerar fácilmente una rica gama de algoritmos y patrones de programación. Como base para estas mayores capacidades, OpenCL 2.0 define un modelo de ejecución mejorado y un subconjunto del modelo de memoria, sincronización y operaciones atómicas de C11 y C++11.

  • publicar un comentario en el hilo de retroalimentación de OpenCL 2.0 en los foros de Khronos - bueno para la retroalimentación general y preguntas
  • Presentar un error en el sistema Khronos Bugzilla bajo OpenCL 2. 0 - bueno para las correcciones detalladas y los errores encontrados en la especificación.
Official OpenCL 2.0 Feedback thread
Official OpenCL 2.0 Feedback thread
  • www.khronos.org
The Khronos Group promotes the deployment and development of open standard APIs to enable authoring and playback of dynamic media on a wide variety of platforms and embedded devices. Current APIs are OpenGL ES, OpenML, OpenMAX, OpenSL ES, and Collada.
 
tol64:

OpenCL 2.0 es la última evolución significativa del estándar OpenCL,.............

¿A dónde quieres llegar con esto?
 
MetaDriver:
¿Qué quieres decir?

He visto esta noticia y he decidido publicarla aquí. Es interesante profundizar en ello, pero aún no encuentro el momento. Aquí está la misma noticia en ruso:


Adoptada la especificación OpenCL 2.0

Khronos Group ha anunciado la ratificación y disponibilidad de la versión final de la especificación OpenCL 2.0. Según los desarrolladores, el lanzamiento de OpenCL 2.0 representa un hito importante en la evolución de un estándar de código abierto y uso gratuito que simplifica la programación paralela multiplataforma.

La nueva versión mejora el modelo de ejecución y los subconjuntos del modelo de memoria de C11 y C++11, la sincronización y las operaciones atómicas. Se dice que la nueva versión de OpenCL permite utilizar una gama mucho más amplia de algoritmos y patrones de programación. La nueva versión tiene en cuenta los deseos de los desarrolladores de software que utilizan OpenCL. Las especificaciones ya están disponibles en el sitio web de Khronos.

Las características y mejoras de OpenCL 2.0 incluyen: memoria virtual compartida, paralelismo anidado, espacio de direcciones compartido, mejor manejo de las imágenes, incluida la compatibilidad con sRGB. Además, los desarrolladores destacan las operaciones atómicas C11, los pipelines de pila FIFO en memoria y las extensiones de controladores instalables para Android.

Принята спецификация OpenCL 2.0
  • www.ixbt.com
Принята спецификация OpenCL 2.0 Открытый, бесплатный для использования стандарт OpenCL 2.0 упрощает кроссплатформенное параллельное программирование
 
tol64:

He visto esta noticia y he decidido publicarla aquí. Es interesante profundizar en ello, pero aún no encuentro el momento. Aquí está la misma noticia en ruso:


Adoptada la especificación OpenCL 2.0

Khronos Group ha anunciado la ratificación y disponibilidad de la versión final de la especificación OpenCL 2.0. Según los desarrolladores, el lanzamiento de OpenCL 2.0 representa un hito importante en la evolución de un estándar de código abierto y uso gratuito que simplifica la programación paralela multiplataforma.

La nueva versión mejora el modelo de ejecución y los subconjuntos del modelo de memoria de C11 y C++11, la sincronización y las operaciones atómicas. Se dice que la nueva versión de OpenCL permite utilizar una gama mucho más amplia de algoritmos y patrones de programación. La nueva versión tiene en cuenta los deseos de los desarrolladores de software que utilizan OpenCL. Las especificaciones ya están disponibles en el sitio web de Khronos.

Las características y mejoras de OpenCL 2.0 incluyen: memoria virtual compartida, paralelismo anidado, espacio de direcciones compartido, mejor manejo de las imágenes, incluida la compatibilidad con sRGB. Además, los desarrolladores destacan las operaciones atómicas C11, los pipelines de pila FIFO en memoria y las extensiones de controladores instalables para Android.

Bueno, eso es comprensible, ¿qué hacer con él, volcarlo en C#/C++?
 
MetaDriver:
¿Qué hacer con él? ¿Debo volcarlo en C#/C++?

Tal vez Renat pueda ver lo que se puede aprender de esto. Es muy posible que la nueva especificación ofrezca un mejor rendimiento también en MQL5, ¿no es así?

En cuanto a C#/C++, si es necesario, también podemos dejarlo. Lo principal es obtener el máximo rendimiento posible. ;)

Razón de la queja: