OpenCL: desafíos reales

 

Hay muchos temas sobre OpenCL, pero las tareas citadas están demasiado alejadas del comercio.

¿Qué puede aportar OpenCL a los comerciantes?

Sí, todavía no he estudiado OpenCL por lo que quiero aprender y aclarar los puntos principales:

  1. ¿No es un programa independiente que recibe datos de entrada y salida? Entonces, ¿no hay ninguna interacción de MQL?
  2. ¿Merece la pena implementar la búsqueda de matrices en OpenCL cuando lo único que se necesita es obtener la confirmación de que existe una coincidencia?
  3. Durante la optimización, cada hilo tiene que realizar su propia inicialización de OpenCL y no hay posibilidad de conectarse al hilo activo ya?
  4. Cuando se optimiza, ¿no se ralentiza la tarjeta gráfica con varios hilos OpenCL simultáneamente?
 
Roffild:

Hay muchos temas sobre OpenCL, pero las tareas citadas están demasiado alejadas del comercio.

¿Qué puede aportar OpenCL a los comerciantes?

Lo que puedes tomar, eso es lo que dará.

Sí, todavía no he estudiado OpenCL, así que quiero aprender y aclarar los puntos principales:

Pues estudia, Internet te ayudará. No te dejes llevar por las preguntas del foro, o mejor dicho, por las preguntas de entrada. Toda la información sobre "cómo funciona" está en Internet y en los artículos del foro. Yo, por ejemplo, tengo el deseo de ayudar cuando veo que el propio hombre arado en el estudio y ya visible un cierto nivel de dominar el material. No quiero ayudar a los gorrones que están en la postura de "¡aquí estoy, enséñame ya!", y sólo quiero "derecho en el cerebro).

Hoy haré una excepción (estoy de buen humor). Sin embargo, con una aparente pendiente resbaladiza en la etapa inicial, probablemente ignoraré la "charla de bebé" y sólo responderé a preguntas específicas de programación siempre que no sean demasiado tontas.

1. se trata de un programa independiente que recibe datos de entrada y salida, ¿no es así? ¿Así que no hay ninguna interacción de MQL en absoluto?

Durante el funcionamiento del núcleo no hay interacción. La interacción es similar a la de una llamada a una función. 1: 1. establecer los parámetros iniciales, 2. ejecutar el cálculo, 3. tomar el resultado

2. ¿Merece la pena introducir la búsqueda de matrices en OpenCL si lo único que quieres es obtener la confirmación de que existe una coincidencia?

No lo sé. Depende de la tarea a realizar. Tal vez no tengas que hacerlo. O tal vez deberías. ¿Sabes dónde está el Club de Telépatas? :)

3. Durante la optimización, cada hilo tiene que hacer su propia inicialización OpenCL y no hay manera de conectarse al hilo activo?

No entiendo bien la pregunta. Si te refieres a la optimización en el probador/optimizador de las estrategias del terminal, creo que debe ser así. No he probado a ejecutar OPTZL desde el optimizador. Lo hice en el probador, pero todo allí es consistente y un núcleo puede ser usado múltiples veces, es obvio sin ninguna explicación.
4 Cuando se optimiza, ¿no se ralentiza la tarjeta gráfica con varios hilos OpenCL simultáneamente?

No he probado a ejecutarlo en un optimizador pero si varias llamadas se solapan entre sí (lo hacía lanzando varios indicadores OpenCL y Expert Advisors simultáneamente), por supuesto que se ralentizará.

// No toma recursos del techo, ¿verdad?

Si la memoria de la tarjeta de vídeo está sobrecargada (por ejemplo, si varios procesos intentan cargar matrices en la memoria de vídeo en paralelo superando su capacidad de memoria), entonces puede "romper el controlador" - obtener un reinicio completo (reset) de la tarjeta de vídeo y el controlador, seguido de un mensaje sobre la caída del controlador. Al menos esto sucedió repetidamente a mi tarjeta / controlador. Esto no conduce a un daño irreversible, pero los programas causados por la caída suelen colgarse (tienen que ser reiniciados). Hubo casos de cuelgues terminales antes, pero no últimamente.

// Sin embargo, no he "desgarrado" al conductor con consultas de memoria inmodestas durante mucho tiempo, he encontrado "límites de lujo" aproximadamente. :)

 
Roffild: Hay un montón de hilos sobre OpenCL pero las tareas descritas en el ejemplo están muy lejos de ser comerciales.

Es muy sencillo: se toma una tarea cercana a la negociación (por ejemplo, el análisis del historial de cotizaciones) y se intenta resolverla utilizando OpenCL. Después de unos cuantos intentos fallidos, de seguir leyendo la literatura y de nuevos intentos, funcionará, te lo garantizo. Pero sólo a condición de que seas capaz de digerir la literatura en inglés y tengas un poco de persistencia, así como un mínimo de cerebro.

Los controladores de OpenCL ya están bastante bien optimizados tanto para las tarjetas de vídeo como para la emulación en procesadores (en este último caso, los procesadores de Intel son probablemente mucho más potentes). Por lo tanto, hay que esforzarse para no obtener ningún resultado positivo al final.

 
Roffild:

¿Qué puede aportar OpenCL a los comerciantes?

Sobre los puntos 1-4, ya te han contestado, me aventuraré a responder a tu pregunta principal (por supuesto, es sólo mi punto de vista): la gran mayoría de los comerciantes no sacarán nada de OpenCL, mejor que dejen este "pan" a los programadores.
 
Amigos, ¿quién está haciendo la baraja? ¿Es posible transferir a OpenCL la solución de un sistema lineal de ecuaciones? El tamaño del sistema puede ser realmente grande y hay otros matices.
 
TheXpert:
Chicos, ¿quién hace la magia? ¿Es posible transferir a OpenCL la solución de un sistema lineal de ecuaciones? El tamaño del sistema puede ser realmente grande y hay otros matices.

Resolución de SLAEs en OpenCL

Este es un buen pdf que responde a tu pregunta.

 

Nikolai, gracias por tu capacidad de respuesta. No hay CUDA ni código.

Ah, me olvidé de mencionar una cosa más - la construcción de la matriz lleva más tiempo que su solución :) así que, puede que necesites paralelizar la construcción.

 
TheXpert:

Nikolai, gracias por tu capacidad de respuesta. No hay CUDA ni código.

Ah, se me olvidó decir una cosa más - la construcción de la matriz lleva más tiempo que su solución :) así que puede que tenga que paralelizarla.

¿Cuál es el dato de origen? // formato, estructura de datos

¿De qué construimos la matriz? ¿De un montón de topes? ¿De un árbol? De [...] ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных - Документация по MQL5
 
TheXpert:

Nikolai, gracias por tu capacidad de respuesta. No hay CUDA ni código.

Ah, se me olvidaba una cosa más: la matriz tarda más en construirse que en resolverse :) así que es posible que tengas que hacer una construcción paralela.

Me refería al esquema, no a la aplicación. Por supuesto, CUDA es diferente pero el esquema general es el mismo.

Estoy de acuerdo con Vladimir, no das suficiente información para ayudarte.

No creo que nadie más se sume, así que si no quieres hacerlo público, puedes enviarlo a cualquiera de los presentadores en privado.

 
MetaDriver:

¿De qué construimos la matriz? ¿De un montón de topes? ¿De un árbol? De [...] ?

A grandes rasgos, existe un espacio de enorme dimensionalidad (10 -- 1000 y más), para lo cual necesitamos resolver el problema del MNC.

La solución del problema de la ANM se reduce a

(1) construir ecuaciones de derivadas

(2) resolviendo un sistema de ecuaciones derivado en (1)

Ahora (1) se lleva la mayor parte del tiempo de solución. Cuanto mayor sea la dimensionalidad, mayor será la fracción.

 

Los algoritmos paralelos sólo tienen dos características que les dan ventaja sobre los algoritmos secuenciales.

Son el algoritmo de peinado, donde cada diente toma su hilo y tira a lo largo de toda la longitud.

Y el rollo/desenrollo de la pirámide. El desenvolvimiento es más raro, sobre todo el rizado.

Si el enunciado del problema no incluye ninguna de estas características, el solucionador paralelo no ofrecerá ninguna ventaja y, a menudo, será más lento debido al coste de la carga de memoria.

Razón de la queja: