OpenCL: testes internos de implementação em MQL5 - página 3

 
Renat:
Há esclarecimentos:
...
2) Apoiamos o OpenCL 1.1 e superior porque suporta tipos duplos. A versão OpenCL 1.0 só pode funcionar com flutuador, cuja precisão não é de forma alguma adequada para cálculos financeiros

Tente instalar drivers mais recentes embora muitos cartões das gerações anteriores não suportem operações duplas.
Espero que o flutuador 1.1 ainda suporte o flutuador também. Em geral, o flutuador não é suficiente, mas em muitos casos particulares é muito suficiente. E a memória extra é muitas vezes cara, especialmente para cálculos paralelos.
 
Graff:
Ao testar os scriptsJavaDev este Verão,deparámos com um problema que a minha placa gráfica não suportava odobro, masfuncionavacomfloat. Os condutores não podem repará-lo, precisamos de mudar o cartão :(
Todos os núcleos do processador serão utilizados se a placa gráfica não for suportada.
 

Montar o Centro Catalisador 12, anteriormente era o 11. Já obteve resultados (destacados a vermelho):

Apenas "jogado" com a lista pendente "0" a "1" e apareceu o ícone da ATI. Não desapareceu novamente no arranque deste programa. Uma pequena falha no software parece ser....

 
WChas:
Fixe! Tenho os fios MSI R6970 - 1536 (agentes) e Gigabyte HD5870 (1600 processadores). No gestor BOINC podem ser utilizados sem os combinar em crossfair (basta ligar uma das saídas do segundo cartão ou ligar uma das saídas do segundo monitor. Pergunta: será possível utilizá-las ambas sem fogo cruzado????

Ainda não tenho a certeza. Depende mais do próprio programa que selecciona os dispositivos, o que implica a utilização explícita de cada cartão do código.

Veremos mais tarde quando lançarmos o primeiro beta.

 
MetaDriver:
Espero que a flutuação 1.1 ainda seja apoiada também? flutuação não é suficiente no caso geral, mas em muitos casos especiais é mesmo muito suficiente. E a memória extra é muitas vezes muito cara, especialmente em cálculos paralelos.
No OpenCL 1.1, o flutuador é obviamente suportado.
 
WChas:
Se bem entendi, 1 GPU é um agente muito poderoso? Nesse caso, os agentes CPU poderiam ser desactivados (devido à sua baixa velocidade em relação ao vídeo)?

O núcleo da CPU não pode ser desactivado de forma alguma, é usado como plataforma anfitriã em ambiente MQL5 de qualquer forma.

É importante compreender que os núcleos de GPU são "um enxame de abelhas altamente especializadas" em comparação com "cavalos de trabalho" de núcleos de CPU. Os núcleos da GPU não podem de forma alguma servir como substitutos dos núcleos de uma CPU convencional.

Se um programador EA for capaz de paralisar a tarefa em centenas e milhares de fios independentes, a GPU dará uma velocidade de 10-100x. Mas na maioria das tarefas individuais (comércio e indicadores, por exemplo), os cálculos são sequenciais e não há qualquer hipótese de paralelizar eficazmente os processos. Além disso, a utilização de matemática real de precisão dupla em GPUs regulares resulta em velocidades metade tão rápidas como os valores máximos alcançados no flutuador. Aqui está um link interessante com a discussão da redução de velocidade em dobro: http://www.gpgpu.ru/node/901

Nós próprios compraremos cartões de diferentes classes para publicar uma pequena pesquisa para cálculos de algumas tarefas em dobro e flutuar. Nós próprios estamos interessados no que podemos obter.

Aqui está um pequeno estudo das velocidades de cálculo com flutuador e duplo em diferentes dispositivos (relatório completo: http://agora.guru.ru/hpc-h/files/017_Krivov_NvidiaGpuComparision.pdf). Pode-se ver que a velocidade dupla em Tesla é 2 vezes mais baixa do que a velocidade máxima de flutuação, enquanto nas cartas comuns como a GeForce 480 GTX é quase 10 vezes mais lenta. Na verdade, isto significa que é possível obter resultados ainda melhores em CPU de 4-8 núcleo normal com utilização activa de SSE2-4 e AVX em dupla matemática:


Conseguimos obter cem vezes (no limite 100-1000 e mais) acelerações em testes sequenciais no optimizador de estratégias comerciais e dez vezes (no limite 10-20-50-100-200 vezes) acelerações em genética devido à ideia nativa de testes paralelos e MQL5 Cloud Network. Mas quando se trata de paralelismo dentro de uma única tarefa, todos os esforços recaem sobre os ombros do programador da GPU que pode distribuir inteligentemente a tarefa entre centenas ou milhares de núcleos simples independentes.


Existe outra nuance - o mais provável é que quando se utilizam vários agentes no computador, apenas um agente tenha o direito de utilizar a GPU. Ou, se houver alguns dispositivos físicos reais de GPU, serão distribuídos entre os agentes no início dos agentes.

A questão é que não é sensato dividir um dispositivo físico por múltiplos agentes, uma vez que a partilha resultante resulta numa queda não linear no desempenho final. Por outras palavras, 4 agentes num GPU teriam um desempenho muitas vezes pior do que 1 agente num GPU. Os nossos testes internos demonstraram-no.

Realizaremos testes mais detalhados e encontraremos uma solução que maximize o resultado.

Кофигурацыя системы на базе Tesla C2050/C2070 (C2075) | GPGPU.ru
  • www.gpgpu.ru
Здравствуйте! Возникла задача внедрения GPU-Computing для решения задач численного моделирования (симуляция и оптимизация фабрик полупроводников с помощью эвристик, докторская работа). Считать действительно много, и есть довольно хороший потенциал для распараллеливания расчетов, никакой роботы с видео, рендерингом и прочим. Помогите, пожалуйста...
 
 
 
Obrigado pelo esclarecimento.
Renat:

........

Conseguimos obter cem vezes (no limite de 100-1000 e mais) acelerações em pesquisas sequenciais no Strategy Trading Optimizer e dez vezes (no limite de 10-20-50-100-200 vezes) acelerações na genética devido à ideia nativa de testes paralelos e MQL5 Cloud Network. Mas quando se trata de paralelismo dentro de uma única tarefa, todos os esforços estarão sobre os ombros do programador da GPU que pode distribuir razoavelmente a tarefa entre centenas ou milhares de núcleos simples independentes.

........

Para mim pessoalmente, é a aceleração no optimizador que é importante. Por isso, aguardo com expectativa a necessária actualização + tabela de desempenho de diferentes placas de vídeo.
 

Reposição a partir do fio OpenCL na MQL4.com:

https://www.mql5.com/ru/forum/137422/page6

Não é assim tão simples.

Além disso, Rinat está a confundir as pessoas: OpenCL 1.0 pode funcionar bem com flutuação dupla, é uma "opção disponível abertamente" apoiada por todos os fabricantes - MAS NÃO PARA TODOS OS MAPAS VELHOS.

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/

"Dupla Precisão e Meio Ponto Flutuante Opcional

OpenCL 1.0 adiciona suporte para dupla precisão e meio ponto flutuante como extensões opcionais. O duplo tipo de dados deve confirmar ao formato de armazenamento de dupla precisão IEEE-754.

Uma aplicação que queira usar o dobro terá de incluir o #pragma OPENCL EXTENSION cl_khr_fp64 : habilitar directiva antes de qualquer tipo de dados de dupla precisão ser declarado no código do kernel. Isto irá alargar a lista de tipos de dados vectoriais e escalares incorporados para incluir o seguinte:.....".

Pode funcionar no Testador de Estratégia mas não funciona no OpenCL 1.0 Expert Advisor, não porque, como diz Rinat, "não há flutuação dupla lá" mas, como já mencionei, porque não há threading seguro no OpenCL 1.0 e não há threading no MT4-5.

OpenCL (e CUDA) tem uma grande confusão em geral. O que é que pretende? Afinal de contas, os engenheiros de ferro e de rádio propuseram-se a alterar o conceito de programação. Eles têm uma mentalidade de ferro.

Haverá também um problema com a chamada selecção PLATFORM: o programa, isto é, MT ou DLL ou Expert Advisor, DEVE, basta seleccionar manualmente a plataforma (AMD, Nvidia, Intel), que pode ser várias vezes diferente num computador e executará o kernel OpenCL, e depois seleccionar manualmente DEVICE se o computador tiver Multi-GPU. A auto-selecção da plataforma no OpenCL ainda não está lá. Rinat fala de "auto-selecção dos mais poderosos", mas não sei como é. No exemplo ali mostrado, não há selecção de plataforma e não há selecção de dispositivo (GPU, CPU).

Além disso, ainda não existe uma paralelização automática de tarefas OpenCL em várias GPUs ou em GPU+CPU na norma. Digamos assim: em algumas versões dos seus controladores/SDK AMD costumava introduzir esse autoprovisionamento mas tinha alguns problemas e, por enquanto, a AMD desligou esta funcionalidade.

Conclusão: para desenvolver e permitir programas OpenCL c/o MT4-5 requer algum esforço manual e, portanto, não funcionará automaticamente ou por "recompilação com opção". O que, por sua vez, está repleto de barracas em funcionamento no mundo real. Será um trabalho subtil e, o que é importante, permito-me repetir, infelizmente é a PROGRAMAÇÃO JUÍZIA ORIENTADA, o que é errado. A depuração de programas paralelos para CUDA ou OpenCL revelou-se muito mais difícil do que os revolucionários do ferro assumiram. A Nvidia até cancelou a sua conferência CUDA de Outono de 2011 - devido a problemas com os condutores e a muitas queixas sobre a depuração de depuração. Bem, eles adicionaram mais 1000 novas funcionalidades ao último Toolkit - e agora o que fazer com ele, se as pessoas comuns nem sequer conseguem ter o programa mais simples para trabalhar ou funciona com interrupções? Afinal, nem sequer mencionaram metade do mecanismo interno do OpenCL ou CUDA nas suas ferramentas descritivas.

A velocidade da GPU (em GigaFLOPS) de uma placa de vídeo suspensa devido à compatibilidade do driver ou do software é zero.

OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
  • www.mql5.com
OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум