Discussão do artigo "Como instalar e utilizar o OpenCL para realizar cálculos" - página 6

 

Alguém pode fazer uma atualização para incluir a RX 580 / 570?

Tenho as duas placas, mas não tenho o livro de receitas para obter instruções detalhadas sobre como aproveitar essas placas.

Muito obrigado.

 
No momento, estou tentando executar o OpenCL em uma GTX1070, mas o Metatrader não menciona o hardware nem eu consigo ativá-lo em algum lugar. Como deve ser com o MT5 atual?
 
hao xue:

Alguém pode fazer uma atualização para incluir a RX 580 / 570?

Tenho as duas placas, mas não tenho o livro de receitas para obter instruções detalhadas sobre como aproveitar essas placas.

Muito obrigado.

Não sei por que o terminal não reconhece a rx580, mas o opencl está funcionando. Você pode tentar este código:

void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- inicializar o contexto do OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Exibir informações gerais sobre o 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"); 

  }
 

Olá a todos


Tentei usar o código do lensflare em um computador com AMD 530 e outro com NVIDIA gtx 1060, mas sem sucesso. Meu EA informa um dispositivo 0 suportado. Alguém teve o mesmo problema? Obrigado!


void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- inicializar o contexto do OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Exibir informações gerais sobre o 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"); 

  }
 

Como posso selecionar o processador openCL a ser usado?
Parece que tenho CPU + Nvidia +Intel e, de acordo com a página principal, a GPU Intel é mais rápida.

Além disso, porque minha Nvidia funciona um pouco e depois trava quando tento sair do EA.

 

>Para demonstrar a vantagem de usar o OpenCL no MQL5, foi escrito o script OpenCL_Sample.mq5, que calcula os valores de uma função a partir de duas variáveis em algum conjunto e exibe o resultado na janela do gráfico usando um rótulo gráfico (OBJ_BITMAP_LABEL).

O exemplo é interessante, mas incrivelmente inútil.....

Alguém pode dar um exemplo de otimização de um Expert Advisor padrão no OpenCL ....?

Em geral, acho que o artigo não é nada, o mundo inteiro está se movendo em direção a estruturas (como CNTK), um desenvolvedor para MQL5 deve escrever código em MQL5, não em OpenCL/CUDA, e os núcleos (CU) de todas as placas de vídeo devem ser visíveis apenas como núcleos comuns na lista de núcleos disponíveis para otimização e é isso.

Acho que sim...

Документация по 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:

O desenvolvedor de MQL5 deve escrever código em MQL5, não em OpenCL/CUDA, e os núcleos (CU) de todas as placas de vídeo devem estar visíveis apenas como núcleos comuns na lista de núcleos disponíveis para otimização, e isso é tudo

Acho que sim...

Como se você tivesse a oportunidade de escrever código em MQL5 e calcular tarefas na GPU, por que está fazendo barulho?

Outra questão é que você não sabe que variedade de tarefas pode ser resolvida na GPU e quais não podem.

Aqui está um bom artigo, que eu mesmo li no início do ano https://habr.com/ru/company/combox/blog/425731/.

Se você puder paralelizar uma tarefa de otimização, use a GPU.

 
Igor Makanu:

como se fosse possível escrever código em MQL5 e calcular tarefas na GPU


da mesma forma que é feito em python/#.

Não há OpenCL, há uma conexão de estrutura, você apenas diz a ele o que calcular, portanto, pessoalmente, é mais fácil para mim criar um farm a partir da GPU do que da CPU.

 
Boris Egorov:

da mesma forma que é feito em python/#.

não há OpenCL ali, é uma conexão de estrutura

tudo está correto e a estrutura é personalizada para tarefas de GPU, testei o tensorflow dessa forma.


então a pergunta não é para a MQL5, mas para os criadores de estruturas para a MQL5 - infelizmente, elas (estruturas) não existem, eu mesmo sofro com isso,

ou melhor, existem apenas alguns - alglib no SB e muitos artigos sobre integração com linguagens de terceiros.

Ou seja, como os desenvolvedores escrevem - escreva você mesmo, não há soluções prontas.

 
Igor Makanu:

Tudo está correto e a estrutura é personalizada para tarefas de GPU, testei o tensorflow dessa forma.


então a pergunta não é para a MQL5, mas para os criadores de estruturas para MQL5 - infelizmente, elas (estruturas) não existem, eu mesmo sofro com isso,

ou melhor, existem apenas alguns - alglib no SB e muitos artigos sobre integração com linguagens de terceiros.

Ou seja, como os desenvolvedores escrevem - escreva você mesmo, não há soluções prontas.

Não é bem assim.

Os desenvolvedores são bons e fizeram muito, implementaram Fuzzy, Alglib, python, mas a questão é: por quê? Por que eles gastaram um tempo tão valioso de desenvolvedores legais para implementar tudo isso, porque, na verdade, eles não têm utilidade.

É claro que estamos falando de redes neurais, a Alglib é uma estrutura extremamente limitada e, se não me engano, não é gratuita, e é impossível criar uma rede neural normal nela, mesmo em teoria.

Também não estou satisfeito com o python... Bem, basta pensar em como transferir a lógica do EA para uma linguagem completamente diferente .... e depois de volta .... corretamente, de jeito nenhum ... e qual é o objetivo dessa hemorroida.

portanto, era necessário implementar o cntk ou o tenzorflow desde o início ... então você não precisa de um otimizador padrão, não precisa de um algoritmo genético e pode calcular na GPU sem problemas ...