MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 25
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Como se debugou a parte do código OpenCL?
Renat, forneça uma lista aproximada de casos em que o OpenCL tem uma vantagem, quando se trabalha com um grande número de matrizes ou quando existe um grande conjunto de símbolos e indicadores numa EA.
Se conseguir construir milhões de matrizes sem ligações cruzadas e que possam ser analisadas em paralelo, é possível acelerar.
Em geral, qualquer pessoa que resolva e compreenda os limites das suas tarefas, responderá facilmente à sua pergunta. Enquanto não houver compreensão dos limites (e há apenas sonhos "e se")constantemente com o puxão das tarefas a serem resolvidas, o paralelismo continua a ser apenas uma ideia fixe.
A maioria das tarefas não pode, infelizmente, ser efectivamente paralelizada.
Se conseguir construir milhões de matrizes sem ligações cruzadas e que possam ser analisadas em paralelo, pode acelerar.
Em geral, alguém que resolve e compreende os limites das suas tarefas irá facilmente responder à sua pergunta. Enquanto não houver compreensão de limites (e há apenas sonhos "e se") constantemente com tarefas dilacerantes a serem resolvidas, o paralelismo continua a ser apenas uma ideia fixe.
A maioria das tarefas não pode, infelizmente, ser efectivamente paralelizada.
Lembro-me do facto de haver momentos de acompanhamento nos cálculos, por isso a questão surgiu na minha mente
Executando e desbastando os resultados.
É possível colocar uma pré-camada dentro do código OpenCL?
Falando mais ou menos sobre OpenCL
Pode imaginar que existe um processador com registos grandes (vectoriais), no qual podem ser escritos N valores duplos individuais (por exemplo, deixar N=64, depois 64 valores podem ser escritos no registo).
Tais registos podem ser adicionados, multiplicados, etc., uns com os outros, acontece que, para uma instrução, é possível realizar uma operação em N dables.
Mas há limitações.
É impossível operar com valores num único registo, ou seja, por exemplo, é impossível adicionar uma parte dos valores de um registo entre si.
Na frequência, tal processador é fortemente inferior ao CPU habitual, pelo que não faz sentido utilizá-lo em tarefas onde é necessário um processamento sequencial de um valor.
Além da frequência mais baixa, existe também uma limitação de memória, os valores só podem ser carregados e descarregados a partir da memória especial.
É possível copiar dados da RAM para esta memória especial, mas apenas através de um canal muito estreito (lento).
Portanto, as tarefas que requerem o processamento de grandes quantidades de dados são também pouco adequadas ao OpenCL
É possível colocar uma pré-camada dentro do código OpenCL?
Fora.
Vamos saltar a sessão de palestras. Basta tomar e ler tudo o que foi criado e descrito em detalhe sobre OpenCL por nós e na web em geral.
Pesquisa OpenCL:
Na verdade, é muito interessante que "opencl trading " tenha muito conteúdo de google a partir dos nossos recursos:
Aqui está uma comparação em Python 3.8 e MQL5 nos modos de linha única/OpenCL: tempo em segundos, quanto menos melhor
Python em modo JIT via numba, o hardware é assim:
O exemplo de utilização do OpenCL é muito simples e não há folhos na sua optimização. Embora a tarefa não seja massiva para o OpenCL e tenha desencadeado despesas gerais em preparação, ainda assim deu um resultado muito melhor.
Cálculos paralelos muito grandes podem ser efectuados rotineiramente com OpenCL. O limiar de entrada não é elevado e só demora um dia a descobrir como utilizá-lo.
Os ficheiros para reprodução são anexados.
Parece que este problema de cálculo de PI no OpenCL já foi resolvido há 7 anos atrás:
Alguém tem alguma ligação directa ao que precisa de ser descarregado? Na Intel é necessário o registo.
HI Na GPU Intel no CPU tenho de apalpar os drivers do adaptador de vídeo, depois instalei Intel_OpenCL_driver, depois coloquei os drivers do adaptador de vídeo. Desta forma, tudo funciona e o vídeo não abranda.
Vict:
Receio que a utilização activa desta funcionalidade transformará o arranque numa busca de vários minutos.
Não lhe será possível activar o cache.
Aqui está uma comparação em Python 3.8 e MQL5 nos modos de linha única/OpenCL: tempo em segundos, quanto menos, melhor
Python em modo JIT via numba, o hardware é assim:
No modo multithreading está a comparar o desempenho da CPU vs GPU em 10000 fios. O GPU não está envolvido em python.
Se eu encontrar um computador com uma placa de vídeo adequada, vou corrigir o código Python e testá-lo neste computador. Vou tentar executar o vosso código no CPU, pensei que a GPU era necessária.
Não é minha intenção provar quem é de todo mais rápido. Mais interessante para saber sobre os seus planos de integrar Python.
Está a planear alguma função comercial e a assinalar eventos em python?
Ainda assim, a GPU parece ser obrigatória, "AMD APP SDK" não é descarregável.
Falando mais ou menos sobre OpenCL
Podemos imaginar que existe um processador com registos grandes (vectoriais) onde podemos escrever N valores duplos individuais (por exemplo deixar N=64, depois 64 valores podem ser escritos no registo).
Tais registos podem ser adicionados, multiplicados, etc., uns com os outros, acontece que, para um comando, é possível realizar uma operação em N dables.
Mas há limitações.
É impossível operar com valores num único registo, ou seja, por exemplo, é impossível adicionar uma parte dos valores de um registo entre si.
Na frequência, tal processador é fortemente inferior ao CPU habitual, pelo que não faz sentido utilizá-lo em tarefas onde é necessário um processamento sequencial de um valor.
Além da frequência mais baixa, existe também uma limitação de memória, os valores só podem ser carregados e descarregados a partir da memória especial.
É possível copiar dados da RAM para esta memória especial, mas apenas através de um canal muito estreito (lento).
Portanto, as tarefas que requerem o processamento de grandes quantidades de dados são também pouco adequadas ao OpenCL
Não há vectores no exemplo de cálculo de PI. Simplesmente divide a soma total em vários pedaços independentes e envia-os para cada núcleo OpenCL. Tudo é somado no final.
Por exemplo, se não houver uma placa de vídeo discreta e houver 4 núcleos físicos + 4 virtuais na CPU, a execução será oito vezes mais rápida. Ou seja, em paralelo, serão contados pedaços de soma em cada núcleo.