Pergunta para os desenvolvedores - usando todos os núcleos computacionais durante a otimização - página 6

 
Aleksey Vyazmikin:

Esta não é a abordagem correta - em vez de dar tarefas uma de cada vez, você precisa redistribuir a capacidade se tiver recursos livres, ou seja, cancelar tarefas já distribuídas e dá-las a outros para executá-las. Ao mesmo tempo, é necessário analisar o desempenho de cada agente a fim de dar ao núcleo o número certo de novos empregos.

isto é um absurdo, desculpe

> Você tem que cancelar trabalhos existentes e devolvê-los ao núcleo para que outros os executem

Eu acho que isso não é realista, e porque, quando é mais fácil criar um lote de trabalhos, dar um trabalho à primeira thread disponível, esperar até que ela seja executada, dar o próximo trabalho à primeira thread disponível (eu chamo a atenção para a thread de palavra, não para o processador de núcleo, a restrição de threads deve ser removida - não é um direito dos programadores, mas os direitos do usuário, lembre-se que agora as threads de rede são apenas o núcleo real, não as threads, o que reduz artificialmente o desempenho pela metade)

>É necessário analisar o desempenho de cada agente a fim de dar ao núcleo o número necessário de novos trabalhos para execução.

e isto não é necessário, porque os núcleos do mesmo processador com o mesmo desempenho, dependendo das tarefas, contam com velocidade diferente, não há necessidade de contar algo quando não se pode contar nada

 
Boris Egorov:

Isso é uma merda, desculpe.

> cancelar tarefas que já tenham sido emitidas e devolvê-las a outros para serem executadas

Eu acho que isso não é realista, e para que é mais fácil criar um lote de trabalhos, dar um trabalho para a primeira thread disponível, esperar até que seja executado, dar o próximo trabalho para a primeira thread disponível (note a palavra thread, não o processador de núcleo, a restrição de threads deve ser removida - não é direito dos programadores, mas do usuário, lembre-se que agora as threads de rede são apenas núcleos reais, não threads, o que reduz artificialmente o desempenho pela metade)

>É necessário analisar o desempenho de cada agente a fim de dar ao núcleo o número necessário de novos trabalhos para execução.

e você não precisa dele porque os núcleos de um processador com o mesmo desempenho, dependendo das tarefas, contam com velocidade diferente, por que você deveria contar algo lá, quando você pode não contar absolutamente nada?

Você parece ter pouca experiência com o otimizador e não entende que as informações sobre os passes concluídos chegam tarde, que depois que um trabalho é feito o agente envia um quadro, que pode ser muito pesado, tudo isso vai levar a atrasos na comunicação e retardar a otimização. Portanto, as tarefas devem ser emitidas em lotes e monitorar seu progresso - emitindo novas tarefas para os agentes que estão próximos de concluir o trabalho.

 
Aleksey Vyazmikin:

Você parece ter pouca experiência com o otimizador, e não entende que as informações sobre os passes concluídos chegam tarde, que uma vez concluído um trabalho, um agente envia um quadro que pode ser muito pesado, tudo isso causará atrasos na comunicação e retardará a otimização. Portanto, as tarefas devem ser emitidas em lotes e monitorar o progresso das tarefas - emitindo novas tarefas para os agentes que estão próximos de concluir o trabalho.

> Parece que você tem pouca experiência com o otimizador,

você está brincando? 6 anos ininterruptamente

> As informações sobre os passes concluídos chegam tarde, que após concluir um trabalho um agente envia um quadro, que pode ser muito pesado, tudo isso levará a atrasos na comunicação e retardará a otimização. Portanto, as tarefas devem ser emitidas em lotes e monitorar seu progresso - emitindo novas tarefas para os agentes que estão próximos de concluir o trabalho.

>Isto levará a atrasos na comunicação e retardará a otimização.

e não importa, as redes são rápidas agora.

mas ter núcleos ociosos enquanto um núcleo pobre termina um monte de trabalhos do grupo retarda a otimização porque todo o resto (dezenas de núcleos) fica parado e os núcleos precisam continuar contando continuamente sem parar

parece que você nunca foi otimizado para muitos parâmetros ... e não discuta que você não tem experiência prática

 
Boris Egorov:

> Parece que você tem pouca experiência com o otimista,

você está brincando? 6 anos continuamente

> As informações sobre os passes concluídos chegam tarde, que depois que um trabalho é feito o agente envia um quadro que pode ser muito pesado, tudo isso levará a atrasos na comunicação e retardará a otimização. Portanto, as tarefas devem ser emitidas em lotes e monitorar seu progresso - emitindo novas tarefas para os agentes que estão próximos de concluir o trabalho.

>Isto levará a atrasos na comunicação e retardará a otimização.

e não importa, as redes são rápidas agora.

mas ter núcleos ociosos enquanto um núcleo pobre termina um monte de trabalhos do grupo retarda a otimização porque todo o resto (dezenas de núcleos) fica parado e os núcleos precisam continuar contando continuamente sem parar

parece que você nunca foi otimizado para muitos parâmetros ... e não discuta que você não tem experiência prática ...

Você não pode ser um egomaníaco egocêntrico, as redes são rápidas, quão egocêntricas. Pelo contrário, as redes não são rápidas quando se trata de dezenas e centenas de megabytes.

A otimização primitiva da EA não é tudo o que está rachado para ser - amplie seus horizontes e use cálculos matemáticos.

Ah, e tenha em mente que este é principalmente um projeto com fins lucrativos, e não para o gozo dos usuários, e como tal, o mecanismo deve levar em conta a distribuição aleatória de tarefas e a correta contabilidade financeira de seu desempenho...

 
Aleksey Vyazmikin:

Você não pode ser um egomaníaco egocêntrico, as redes são rápidas, quão egocêntricas. Pelo contrário, as redes não são rápidas quando se trata de dezenas e centenas de megabytes.

A otimização primitiva da EA não é tudo o que está rachado para ser - amplie seus horizontes e use cálculos matemáticos.

Ah, e tenha em mente que este é principalmente um projeto com fins lucrativos, não para agradar os usuários, e como tal o mecanismo deve ser responsável pela distribuição aleatória dos empregos e pela correta contabilidade financeira de seu desempenho...

dezenas e centenas de megabytes não é nada, o tempo gasto é mínimo e, a propósito, nada tem a ver com isso, você deve pensar antes de escrever que em um lote que um a um de qualquer forma esse tráfego terá que passar

> Aotimizaçãoprimitiva daEA não é tudo para que é usada - expandir seus horizontes e usar cálculos matemáticos.

Desejo-lhe o mesmo sobre os horizontes

Sobre o egoísmo também.

Eu estou longe de ser primitivo, e qual é o propósito disso, então nos ilumina ignorantes.


Considero sua iniciativa completamente absurda em termos de consumo de tempo e velocidade de otimização.

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 
Boris Egorov:

Você está apenas olhando para seu caso particular de otimização, enquanto Alexey está olhando para o dele (sua EA é de várias centenas de MB e leva um longo tempo para ser transferida).

E a MQ olha para o uso geral do otimizador e o ajusta para se adaptar à maioria, não você e Alexey.

As tarefas são redistribuídas, pelo menos para mim em núcleos locais. Se em algum lugar eles não forem redistribuídos, me dê um exemplo para reproduzir, para que os desenvolvedores também possam levá-lo em conta.

 
Andrey Khatimlianskii:

Você está apenas olhando para seu caso particular de otimização, enquanto Alexey está olhando para o dele (sua EA é de várias centenas de MB e leva um longo tempo para ser transferida).

E a MQ olha para o uso geral do otimizador e o ajusta para se adaptar à maioria, não você e Alexey.

As tarefas são redistribuídas, pelo menos para mim em núcleos locais. Se em algum lugar eles não forem redistribuídos, me dê um exemplo para reproduzir, para que os desenvolvedores também possam levá-lo em conta.

Concordo que meu caso é um caso especial.

Há um problema com a alocação de tarefas se novos agentes remotos estiverem conectados - isto acontece quando os recursos são liberados de outras tarefas.

 
Andrey Khatimlianskii:

Você está apenas olhando para seu caso particular de otimização, enquanto Alexey está olhando para o dele (sua EA é de várias centenas de MB e leva um longo tempo para ser transferida).

E a MQ olha para o uso geral do otimizador e o ajusta para se adaptar à maioria, não você e Alexey.

As tarefas são redistribuídas, pelo menos para mim em núcleos locais. Se em algum lugar eles não forem redistribuídos, me dê um exemplo para reproduzir, para que os desenvolvedores possam levá-lo em conta também.

>Talvez eu também tenha um particular, mas realmente "provavelmente"...

>dê um exemplo a ser reproduzido para que os desenvolvedores possam levá-lo em conta também.

não realmente ... não posso exibir minha EA, não estou interessado nas normais, posso fazer screenshots para mostrar que elas não são redistribuídas

Se eles fossem redistribuídos, seria uma solução para o problema

 

Quero perguntar aos desenvolvedores, por que o otimizador distribuiu um monte de tarefas apenas para certos núcleos e não uma tarefa cada um e, portanto, neste caso, aumentou o tempo de cálculo três vezes?

.... o tempo de cálculo triplicou será que alguma vez conseguirão que o otimista funcione corretamente???? muitos núcleos livres estão ociosos ...

 

segundo dia não conta nada, todos os núcleos são 12 núcleos locais e cerca de 30 núcleos de rede estão ociosos, eu não os toco de propósito ... Não sei o que está pensando, provavelmente procurando o sentido da vida ou uma cura para o coronovírus :-)

Acho que devemos abandonar o otimizador por causa de sua inoperabilidade e lentidão

e as recentes decisões da MT de limitar apenas núcleos físicos, persistente e estupidamente distribuir um monte de trabalhos para apenas determinados núcleos em vez de cada núcleo - um trabalho - demonstra uma total falta de compreensão dos cálculos de alto desempenho por parte dos desenvolvedores

Razão: