Discusión sobre el artículo "Cómo instalar y utilizar OpenCL para efectuar cálculos" - página 6

 

¿Alguien puede tener una actualización para incluir RX 580 / 570?

Tengo ambas tarjetas, pero no tengo el libro de instrucciones detalladas para aprovechar esas tarjetas.

Muchas gracias.

 
Actualmente intento hacer funcionar OpenCL en una GTX1070, pero Metatrader no menciona el hardware ni puedo activarlo en ninguna parte. Cómo debería ser con la actual MT5?
 
hao xue:

¿Alguien puede tener una actualización para incluir RX 580 / 570?

Tengo ambas tarjetas, pero no tengo el libro de instrucciones detalladas para aprovechar esas tarjetas.

Se lo agradecería mucho.

No sé por qué terminal no reconoce la rx580, pero opencl funciona. Puedes probar con este código:

void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- inicializar contexto OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Mostrar información general sobre el dispositivo OpenCL 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Hola a todos


He probado el código de lensflare en un ordenador con una AMD 530 y otro con una NVIDEA gtx 1060 pero sin éxito. Mi EA reporta un 0 de dispositivo soportado. ¿Alguien ha tenido el mismo problema? ¡Gracias!


void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- inicializar contexto OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Mostrar información general sobre el dispositivo OpenCL 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

¿Cómo puedo seleccionar qué procesador openCL usar?
Parece que tengo CPU + Nvidia +Intel, y según la página principal, que la GPU Intel es más rápido.

Además, porque mi Nvidia correr un poco, y luego se bloquea cuando trato de salir de la EA.

 

>Para demostrar la ventaja de usar OpenCL en MQL5, se escribió el script OpenCL_Sample.mq5, que calcula los valores de una función a partir de dos variables sobre algún conjunto y muestra el resultado en la ventana del gráfico usando una etiqueta gráfica (OBJ_BITMAP_LABEL).

El ejemplo es interesante pero asombrosamente inútil.....

¿Alguien puede hacer un ejemplo de optimización de un Expert Advisor estándar en OpenCL ....?

en general creo que el articulo no es nada, todo el mundo se esta moviendo hacia frameworks (como CNTK), un desarrollador para MQL5 deberia escribir codigo en MQL5, no en OpenCL/CUDA, y los nucleos (CU) de todas las tarjetas de video deberian ser visibles solo como nucleos ordinarios en la lista de nucleos disponibles para optimizacion y ya esta.

Creo que sí ...

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
  • www.mql5.com
//| Создает объект "Графическая метка"                               |               chart_ID=0,                               sub_window=0,                             x=0,                                      y=0,                                      width=0,                                  height=0,                 ...
 
Boris Egorov:

Los desarrolladores de MQL5 deberían escribir el código en MQL5, no en OpenCL/CUDA, y los núcleos (CU) de todas las tarjetas de vídeo deberían ser visibles como núcleos ordinarios en la lista de núcleos disponibles para la optimización y eso es todo.

Eso creo ...

como si se le dio la oportunidad de escribir código en MQL5 y calcular las tareas en la GPU, ¿por qué estás haciendo ruido?

Otra cuestión es que no te des cuenta de que rango de tareas se pueden resolver en GPU, y cuales no.

Aquí hay un buen artículo, yo mismo lo leí a principios de año https://habr.com/ru/company/combox/blog/425731/.

Si eres capaz de paralelizar una tarea de optimización, entonces utiliza la GPU.

 
Igor Makanu:

como si fuera posible escribir código en MQL5 y calcular tareas en GPU


tal y como se hace en python/#.

No hay OpenCL, hay un framework de conexión, sólo le dices sobre qué calcular, así que personalmente me resulta más fácil construir una granja desde la GPU que desde la CPU.

 
Boris Egorov:

tal y como se hace en python/#.

no hay OpenCL allí, es un marco de conexión

todo es correcto y el framework esta adaptado para tareas GPU, he probado tensorflow de esta manera.


entonces la pregunta no es a MQL5, sino a los creadores de frameworks para MQL5 - por desgracia, ellos (frameworks) no existen, yo mismo sufro de esto,

o mejor dicho, solo hay unos pocos - alglib en SB y muchos articulos sobre integracion con lenguajes de terceros.

Es decir, como los desarrolladores escriben - escríbalo usted mismo, no hay soluciones prefabricadas.

 
Igor Makanu:

Todo es correcto y el framework está adaptado para tareas de GPU, he probado tensorflow de esta manera.


entonces la pregunta no es a MQL5, sino a los creadores de frameworks para MQL5 - por desgracia, ellos (frameworks) no existen, yo mismo sufro de esto,

o mejor dicho, sólo hay unos pocos - alglib en SB y un montón de artículos sobre la integración con lenguajes de terceros.

Es decir, como los desarrolladores escriben - escríbalo usted mismo, no hay soluciones prefabricadas.

No es exactamente así.

Los desarrolladores son buenos y han hecho mucho, han implementado Fuzzy, Alglib, python pero la pregunta es ¿por qué? Por qué gastaron un tiempo tan valioso de desarrolladores geniales para implementar todo esto, porque de hecho no sirven para nada.

Por supuesto, estamos hablando de redes neuronales, Alglib es un framework extremadamente limitado y si no me equivoco no es libre, es imposible crear una red neuronal normal en él incluso en teoría.

Tampoco me hace gracia python .... bueno, sólo pensar en cómo transferir la lógica de la EA a un lenguaje completamente diferente .... y luego de vuelta .... correctamente no hay manera ... y cual es el punto de esta hemorroide.

por lo tanto, era necesario implementar ya sea cntk o tenzorflow desde el principio ... entonces usted no necesita un optimizador estándar, usted no necesita un algoritmo genético y se puede calcular en la GPU sin problemas ...