OpenCl e as ferramentas para ele. Revisões e impressões.

 
Considerando o fato de que a Metaquotes mudou sua opinião sobre a aplicabilidade da GPU em análise e negociação (seria mais preciso dizer que o software de GPU finalmente atingiu o nível necessário para introduzi-lo em programas comerciais), sugiro que estamos prontos para começar a testar o OpenCL em programação real hoje.
Caso você tenha perdido esta notícia flertando no fórum ao invés de comercializar, modelar e programar, eis o que a Metacquotes tem a dizer, por exemplo:

.............................................................................................................................................................................

Experiências de GPU na modelagem financeira

http://habrahabr.ru/blogs/hi/131983/

MetaQuotes 7 de novembro de 2011, 19:27#

O suporte OpenCL em breve será incluído na MQL5, permitirá aumentar o desempenho dos cálculos em uma rede distribuída em várias vezes/ordem de magnitude.

.............................................................................................................................................................................

Então, OpenCL, o que é isso?

É uma abordagem de software, um programa de intérprete para executar seu programa em paralelo na placa de vídeo, ou seja, na GPU.

O que ele dá?

Em primeiro lugar, ele proporciona escalabilidade, ou seja, escalabilidade fácil e barata do poder de processamento disponível. Uma coisa é comprar, instalar e manter uma dúzia de servidores e outra bem diferente é comprar e conectar 3 ou 4 placas de vídeo adicionais. O resultado será o mesmo em termos de velocidade, mas em termos de dinheiro e tempo gastos - dezenas de vezes.

Em segundo lugar, permite utilizar métodos matemáticos tão sofisticados que antes eram inacessíveis devido à fraqueza dos computadores.

Em terceiro lugar, se as metaquotas pudessem parafusar no OpenCL não apenas para os usuários, mas também para seu testador embutido, isso daria origem a duas perspectivas estranhamente opostas:

(a) metade do tempo a CloudNetwork não será de modo algum necessária para a otimização individual de simples consultores especializados.

(b) A utilização da CloudNetwork abrirá perspectivas tão amplas de otimização, modelagem e análise especializada, aplicação de métodos matemáticos tão complexos, que antes eram simplesmente impensáveis.

Por onde começar?

Aqui está um software SDK (com driver de CPU) para desenvolvedores da AMD (alegadamente para Vista-Win7, mas que também funciona no WinXP. Sem placa aceleradora de vídeo eles trabalham com sucesso na CPU, e em qualquer processador SSE da Intel, não apenas na AMD):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx

Versões mais antigas do AMD-ATI SDK (funciona no WinXP):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx

A versão do programa de intérpretes da Nvidia é fornecida com cada motorista moderno e o ambiente de desenvolvimento está incluído no pacote CUDA Tools-SDK:

http://developer.nvidia.com/opencl

A versão da Intel do SDK (só funciona no Vista-Win7):

http://software.intel.com/en-us/articles/download-intel-opencl-sdk/

Nota: para funcionar corretamente com MetaTrader 4 ou 5 precisamos do OpenCL versão 1.1 ou superior, mas não 1.0 porque somente a partir da versão 1.1 o suporte de rosqueamento seguro está habilitado. No MetaTrader 4 ou 5, a rosca é criada e destruída dinamicamente e separadamente para cada Expert Advisor. Portanto, para usar a GPU de Expert Advisors que funciona em diferentes pares de moedas, você precisa exatamente de threading seguro.

Na prática, isto significa usar somente os pilotos ATI Catalyst versão 10.10 e acima, ou de Nvidia somente versão acima de 280.00. Os motoristas da AMD-ATI ficam melhores e mais rápidos a cada versão, enquanto os motoristas da nVidia ficam piores e mais lentos. OpenCL da Nvidia versão 1.1 é 30-40% mais lento do que sua versão 1.0, ou seja, é realmente 2 vezes mais lento e nada mais rápido do que OpenCL 1.1 da AMD.

Como faço para verificar o OpenCL?

AIDA by FinalWire mostra os parâmetros da GPU e a versão OpenCL na seção Display.

Como testar a velocidade do OpenCL?

LuxMark:

http://www.luxrender.net/wiki/LuxMark

Resultados comparativos aproximados para diferentes CPUs e GPUs:

http://www.luxrender.net/wiki/LuxMark_Results

Às vezes é necessário editar o arquivo render.cfg manualmente para separá-lo do teste CPU-Native CPU-OpenCL.

Velocidade para CPU Phenom II X6 top-end = cerca de 2300, o mesmo programa, mas somente em monstro de 8pc Nvidia GTX580 dá 70000, ou seja, 30 vezes mais. Mesmo um conjunto tão monstro de 8 GTX580 custará cerca de 30 vezes menos em custo primário, e cerca de 40 vezes menos em consumo de energia do que um conjunto de 30 servidores de duplo ponto de flutuação equivalente. Além disso, é necessário muito esforço para sincronizar instâncias de programas em 30 servidores, enquanto no OpenCL tudo é executado em um computador com a mesma instância única do programa.

Mais resultados da LuxMark:

http://www.xtremesystems.org/forums/showthread.php?267385-LuxMark-The-OpenCL-CPU-amp-GPU-benchmark

Mais software para testar o OpenCL:

gpcbenchmarkocl

Foi retirado do site de autores chineses (provavelmente, é um produto estratégico), mas você pode encontrá-lo na web. (Algumas partes da seção de Processamento de Imagem funcionam somente com DirectX versão 10 e superior, isto significa que não funciona com WinXP).

Há outra peculiaridade do OpenCL: a programação nele exige que você se afaste das abstrações matemáticas habituais usadas na programação decente e se envolva na otimização do programa para o hardware que não é correto.

Um artigo sobre o OpenCL descreve dificuldades aproximadas com sua implementação:

http://habrahabr.ru/blogs/hi/125398/

Um curso de vídeo introdutório sobre OpenCL da AMD:

http://developer.amd.com/documentation/videos/OpenCLTechnicalOverviewVideoSeries/Pages/default.aspx

Em geral, QUALQUER computador rodando SSE será suficientemente bom para o desenvolvimento e depuração de programas OpenCL, desde que o conjunto de programas AMD seja utilizado. Além disso, qualquer sistema GTS450....GTX580 da Nvidia pode ser recomendado, pois também tem CUDA, mas para um trabalho realmente rápido as placas e programas AMD-ATI são mais adequados - são mais escaláveis e mais estáveis em configurações Multi-GPU.

O hardware OpenCL Multi-GPU é um tópico de uma linha separada.

 
AlexEro:

O hardware OpenCL Multi-GPU é um tópico para uma linha separada.

A propósito, a questão tem sido estudada bastante extensivamente e existem características comparativas dos cartões. Estudada por mineiros da notória moeda criptográfica do bitcoin (inicialmente) e outras moedas criptográficas (depois).

A comparação, é claro, de tarefas específicas, mas mais ou menos orientada para a configuração e o orçamento é fácil.

E sim, não vá para as poderosas placas gráficas b\u agora :)

 
TheXpert:

A propósito, a questão tem sido estudada bastante extensivamente e há características comparativas dos cartões. Estudada por mineiros da notória moeda criptográfica do bitcoin (inicialmente) e outras moedas criptográficas (depois).

A comparação, é claro, de tarefas específicas, mas mais ou menos orientada para a configuração e o orçamento é fácil.

E sim, não fique com as poderosas placas de vídeo b\u agora :)

Eu só não queria assustar o leitor com estes behemoths e me distrair do mais importante - a programação. Embora eu concorde, o resultado final, ou seja, qual a velocidade real de escala que pode ser esperada, e como ela se parece, deve ser mostrado. A gama é ampla - desde caixas de cerveja até prateleiras:


 

O OpenCL é hoje o futuro.

Pergunta: quando aproximadamente o apoio será implementado no MT5?

Tenho mais de 100% de certeza de que o OpenCL se tornará o padrão para a programação de cargas de trabalho paralelas.

 
Microsoft Introduziu o C++ AMP
Postado por shapovalovts em Qui, 16/06/2011 - 10:07 am
Na AMD Fusion 11 Developer Summit, Herb Sutter anunciou uma nova tecnologia para desenvolver aplicações C++ heterogêneas chamadas C++ Paralelismo Massivo Acelerado (AMP). Esta tecnologia, como os desenvolvedores da Microsoft declaram, permitirá utilizar capacidades de execução de código paralelo tanto na CPU quanto na GPU.

Os principais concorrentes da AMP serão OpenCL e CUDA. Sutter também destacou o potencial do uso do C++ AMP na computação em nuvem.

https://www.mql5.com/ru/forum/132431

 
Portanto, voltou a ser o irmão mais novo do proprietário da AMP).
 
Parece que a AMP vai passar por um momento difícil. O OpenCL já está em pleno uso.
 
A falta de idéias é difícil de substituir pelo poder computacional para passar rapidamente ou borbulhar para classificar os próximos disparates derivados da "perversão intelectual" sobre as aspas ))))
 
artikul:
A falta de idéias é difícil de substituir pelo poder computacional para passar rapidamente ou borbulhar para classificar os próximos disparates derivados da "perversão intelectual" sobre as citações ))))

Acho que se você carregar tal poder com idéias que valham a pena, você poderia fazer nosso planeta girar em torno do sol na direção oposta. ))
 

Articuladamente, você não precisa ser tão categórico. O mundo não fica parado. Placas gráficas monstruosas modernas, baseadas em sua lógica, também devem ser reconhecidas como uma consequência da falta de idéias no processamento de imagens?

Eu mesmo às vezes gosto de acelerar - só para não ter que esperar pela depuração de código para terminar cálculos pesados, que estão todos no meu init() (cerca de 10 segundos). E todos os outros cálculos, que acontecem "on the fly", correm realmente muito rápido, portanto não é necessário fazer multithreading aqui.

 
artikul:
A falta de idéias é difícil de substituir pelo poder computacional para passar rapidamente ou borbulhar para classificar os próximos disparates derivados da "perversão intelectual" sobre as aspas ))))

E aqui os camaradas aqui estão se aquecendo ativamente na expectativa de se engajar no 6º item de uma forma particularmente pervertida. =)