Discussão do artigo "Redes Neurais de Maneira Fácil (Parte 5): Cálculos em Paralelo com o OpenCL" - página 3
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
O uso de operações vetoriais permite que você execute o produto de 4 elementos em paralelo, em vez de sequencialmente. Assista ao vídeo https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3. Ele é sobre OpenMP, mas o significado é o mesmo.
Obrigado!
Então a vetorização é feita automaticamente pelo compilador do OpenCL? Não vejo nenhum comando especial no código.
Obrigado!
Então a vetorização é feita automaticamente pelo compilador para OpenCL? Não vejo nenhum comando especial no código.
Não, não há vetorização automática. No código, primeiro declaramos duas variáveis de vetor.
Em seguida, gravamos uma parte dos dados nas variáveis de vetor a partir dos buffers de entrada.
E, em seguida, realizar operações com variáveis de vetor significa realizar operações de vetor. A função ponto usada no código destina-se apenas a operações vetoriais.
Assim, paralelizamos a operação de multiplicação, mas não no nível do thread, e sim no nível de uma operação concreta usando cálculos vetoriais.
Não, não há vetorização automática. No código, primeiro declaramos 2 variáveis de vetor
Em seguida, gravamos uma parte dos dados nas variáveis de vetor a partir dos buffers de entrada.
E, em seguida, realizar operações com variáveis de vetor significa realizar operações de vetor. A função ponto usada no código destina-se apenas a operações vetoriais.
Assim, paralelizamos a operação de multiplicação, mas não no nível do thread, e sim no nível de uma operação concreta usando cálculos vetoriais.
Ou seja, uma função especial dot() é responsável pela vetorização? Essa vetorização pode ser feita em MQL5 sem OpenCL?
Ou seja, uma função especial dot() é responsável pela vetorização? Essa vetorização pode ser feita em MQL5 sem OpenCL?
dot realiza apenas o produto escalar. Há outras funções para realizar outras operações.
Não há variáveis vetoriais em MQL.
dot realiza apenas o produto escalar. Há outras funções para realizar outras operações.
Não há variáveis vetoriais em MQL.
Entendi, obrigado pelo esclarecimento.
Apesar da extrema necessidade do artigo e da gratidão ao autor pelo artigo, eu ainda resumo o que realmente está faltando nele:
1. O código do principal programa mql não é considerado, o princípio de negociação em si não é claro
2. Não está claro onde os kernels são chamados.
3. O código contém referências a bibliotecas de terceiros, que não estão descritas no artigo, não está claro
4. Os kernels não são considerados e explicados no próprio artigo, por isso causaram uma discussão tão acalorada no fórum.
5. O kernel em si é escrito de forma muito complicada para a maioria dos usuários sem experiência em OpenCL.
6. O método de treinamento da rede neural não está claro de forma alguma
Esses seis pontos tornam o artigo praticamente inútil para a maioria absoluta.
Vou manter minha opinião:
1. Você precisa criar o código mql de um Expert Advisor muito simples negociando em um indicador simples, escrever sua versão em mql com uma descrição do código e a versão OpenCL e comparar a velocidade, idealmente usando um exemplo pronto como Moving Average.mq5.
2. As chamadas de funções de todas as bibliotecas de terceiros devem ser descritas.
3. Descreva os kernels em detalhes, linha por linha, descreva diversas variantes de kernels e compare o desempenho
4. Descrever detalhadamente a metodologia de treinamento da rede neural.
Bem, é assim que é ....
O que é o arquivo NeuroNet.mqh no arquivo?
Limpei um pouco o arquivo NeuroNet.mqh. E, para compatibilidade com EAs de artigos anteriores, salvei a versão antiga em uma cópia.