Muito obrigado!
Há muito tempo estou esperando por um artigo sobre OpenCL.
Vou lê-lo agora. :)
Vou lê-lo. :)
Você provavelmente não precisa muito dele. Você já deve saber tudo.
No próximo artigo, o assunto será mais sério e haverá muito sobre hardware.
O que é muito cedo para ativar, por favor, esclareça. Se for o OpenCL, ele já está ativado. Todos os experimentos foram realizados diretamente no MetaEditor 5.
P.S. O principal é que, por meio do OCL, o programador realmente tem acesso a algo que não tinha antes. Esses são:
- (S)SSEx, que pode ser incluído no Visual Studio, mas não pode ser incluído na MQL5 sem OCL (sem contar as dlls).
- acesso a cálculos em GPUs discretas, o que acelera ainda mais o que pode ser feito em um único núcleo em MQL5 sem nenhum truque do tipo dll.
.
1. Você provavelmente não precisa muito disso. Você já deve saber como fazer todas essas coisas.
2. No próximo artigo, o assunto será sério, haverá muita coisa sobre hardware.
1. Eu preciso disso.
2. ótimo!
A questão ainda não está clara para mim: por que você chama a execução do programa OCL na CPU de "emulação"? A CPU é apenas um dos dispositivos, junto com a GPU, com o qual o programa OCL pode funcionar se houver um driver correspondente para o dispositivo e todos os núcleos do processador estiverem carregados.
- www.mql5.com
Porque é isso que a emulação é, emulação lenta. Na CPU (graças à Intel, ela tem um compilador inteligente que procura a vetorização se você não a proibir explicitamente), a paralelização é feita por instruções (S)SSEx e talvez pela análise de dependências, enquanto as GPUs têm muito mais possibilidades relacionadas aos mecanismos SIMD. Além disso, há barramentos mais amplos e memória mais rápida, especialmente memória local e privada.
Sobre o hardware. As principais recomendações se aplicarão ao hardware da AMD. Mas muitas delas, com uma terminologia ligeiramente modificada, também se aplicam ao hardware da NVidia.
Porque é emulação, emulação lenta. Nas CPUs (graças à Intel, ela tem um compilador inteligente que procura a vetorização se você não a proibir explicitamente), a paralelização é feita por instruções (S)SSEx e, possivelmente, pela análise de dependências, enquanto as GPUs têm muito mais possibilidades relacionadas aos mecanismos SIMD. Além disso, há barramentos mais amplos e memória mais rápida, especialmente memória local e privada.
Sobre o hardware. As principais recomendações se aplicarão ao hardware da AMD. Mas muitas delas, com uma terminologia ligeiramente modificada, também se aplicam ao hardware da NVidia.
Veja - não há menção à OCL para GPUs e ao modo de emulação para outros dispositivos. OpenCL é uma linguagem de programação universal para organizar cálculos paralelos em qualquer dispositivo que tenha mais de um núcleo de computação e suporte a OCL. Não se trata de CUDA ou ATI Stream, que são personalizados para GPUs.
Além disso, em alguns casos, a paralelização e os cálculos OCL em CPUs são ainda mais rápidos do que em GPUs. Agora, torno obrigatória a escolha de um dispositivo nas configurações dos meus programas, porque a velocidade dos cálculos depende diretamente da quantidade de dados processados e da "gravidade" dos cálculos (também depende das configurações de entrada) - às vezes é mais rápido na GPU, às vezes na CPU.
Veja - não há menção à OCL para GPUs e ao modo de emulação para outros dispositivos. OpenCL é uma linguagem de programação universal para organizar cálculos paralelos em qualquer dispositivo que tenha mais de um núcleo de computação e suporte a OCL. Não se trata de CUDA ou ATI Stream, que são projetados para GPUs.
Talvez você esteja certo em alguns aspectos, já que a CPU é vista como um dispositivo. Mas alguns dados sugerem que isso é mais parecido com emulação. Por exemplo, há suspeitas de que a gravação de um buffer na memória do dispositivo CLBufferWrite() no caso da CPU é feita apenas "por um tique", porque a CPU tem apenas uma memória global. Entretanto, a CPU também tem um cache, mas não sei o que acontece com ele e como funciona.
Além disso, em alguns casos, a paralelização e os cálculos OCL na CPU são ainda mais rápidos do que na GPU.
Sim, há casos em que, por exemplo, o produto escalar de dot( ) é mais rápido na CPU. Mas eu não especularia sobre o que seria mais rápido se a comparação fosse entre um Core 2 Duo e uma placa de vídeo mais potente do que a do link. Especialmente se você cuidar da otimização do algoritmo. É diferente para CPU e GPU, não importa o que você diga.
Por favor, esclareça o que é necessário habilitar antes. Se for OpenCL, ele já está ativado. Todos os experimentos foram realizados diretamente no MetaEditor 5.
P.S. O principal é que, por meio do OCL, o programador realmente tem acesso a algo que ele não tinha antes. Esses são:
- (S)SSEx, que pode ser incluído no Visual Studio, mas não pode ser incluído na MQL5 sem OCL (sem contar as dlls).
- acesso a cálculos em GPUs discretas, o que acelera ainda mais o que pode ser feito em um único núcleo em MQL5 sem nenhum truque do tipo dll.
.
Eu quis dizer adaptação para computação em nuvem, se você imaginar que cada núcleo do processador é auxiliado por muitas "abelhas famintas" de aceleradores gráficos conectados em rede com muitos computadores, será muito legal e rápido.
Metade do trabalho está feito, agora é só uma questão de ativá-lo para a nuvem....
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo OpenCL: A ponte para mundos paralelos foi publicado:
No final de janeiro de 2012, a empresa de desenvolvimento de software que fica por trás do desenvolvimento do MetaTrader 5 anunciou o suporte nativo para OpenCL no MQL5. Usando um exemplo ilustrativo, o artigo estabelece o básico da programação no OpenCL no ambiente MQL5 e fornece alguns exemplos de otimização nativa do programa para o aumento da velocidade operacional.
Autor: Sceptic Philozoff