OpenCL: desafios reais

 

Há muitos tópicos sobre OpenCL, mas as tarefas citadas estão demasiado afastadas do comércio.

Então, o que pode o OpenCL dar aos comerciantes?

Sim, ainda não estudei o OpenCL, por isso quero aprender e esclarecer os pontos principais:

  1. Não é um programa separado que recebe dados de entrada e saída? Então não há qualquer interacção da MQL?
  2. Vale a pena implementar uma pesquisa de matriz no OpenCL onde tudo o que precisa é obter a confirmação de que existe uma correspondência?
  3. Durante a optimização, cada fio tem de efectuar a sua própria inicialização OpenCL e não há possibilidade de se ligar já ao fio activo?
  4. Ao optimizar, a placa gráfica não é abrandada por múltiplos fios OpenCL em simultâneo?
 
Roffild:

Há muitos tópicos sobre OpenCL, mas as tarefas citadas estão demasiado afastadas do comércio.

Então, o que pode o OpenCL dar aos comerciantes?

O que se pode tomar, é o que ele vai dar.

Sim, ainda não estudei o OpenCL, por isso quero aprender e esclarecer os pontos principais:

Bem, estude. A Internet vai ajudar. Não se entusiasme com as perguntas do fórum, ou melhor, com as perguntas de nível básico. Toda a informação sobre "como funciona" está na Internet e nos artigos do fórum. Eu, por exemplo, tenho um desejo de ajudar quando vejo que o próprio homem arando no estudo e já visível um certo nível de domínio do material. Não quero ajudar os freeloaders que estão na postura de "aqui vou eu, ensina-me já!", e só quero "pôr cérebros" :)

Hoje vou abrir uma excepção (estou de bom humor). Contudo, com uma aparente inclinação escorregadia na fase inicial, provavelmente ignorarei a "conversa de bebé" e só responderei a perguntas específicas de programação desde que não sejam demasiado estúpidas.

1. este é um programa separado que recebe dados de entrada e saída, não é? Então não há qualquer interacção da MQL?

Durante a operação do núcleo não há interacção. A interacção é semelhante à de uma chamada de função. 1: 1. estabelecer parâmetros iniciais, 2. executar o cálculo, 3. tomar o resultado

2. Vale mesmo a pena trazer a pesquisa de matriz para o OpenCL se tudo o que pretende é obter a confirmação de que existe uma correspondência?

Não sei. Depende da tarefa em mãos. Talvez não seja necessário. Ou talvez devesse. Sabe onde fica o Telepath Club? :)

3. Durante a optimização, cada fio tem de fazer a sua própria inicialização do OpenCL e não há forma de se ligar ao fio activo?

Não compreendo bem a pergunta. Se se refere à optimização no testador/optimizador das estratégias terminais, penso que deve ser assim. Não tentei executar OPTZL a partir do optimizador. Fi-lo no testador, mas tudo lá é consistente e um núcleo pode ser usado várias vezes, é óbvio sem qualquer explicação.
4 Ao optimizar, a placa gráfica não é abrandada por múltiplos fios OpenCL em simultâneo?

Não tentei executá-lo num optimizador mas se várias chamadas se sobrepuserem (estava a fazê-lo lançando vários indicadores OpenCL e Expert Advisors em simultâneo), é claro que vai abrandar.

// Não retira recursos do tecto, pois não?

Se a memória do cartão de vídeo estiver sobrecarregada (por exemplo, se vários processos tentarem carregar matrizes em paralelo na memória de vídeo excedendo o seu tamanho total de memória), então pode "partir o condutor" - obter um reinício completo (reset) do cartão de vídeo e do condutor, seguido de uma mensagem sobre o acidente do condutor. Pelo menos com o meu cartão/condutor aconteceu mais do que uma vez. Isto não leva a danos irreversíveis, mas os programas causados pelo acidente são normalmente pendurados (têm de ser reiniciados). Houve casos de pendências terminais antes, mas não ultimamente.

// No entanto, há muito tempo que não "rasgo" o condutor com dúvidas imodestas de memória, encontrei "limites de luxo" aproximadamente. :)

 
Roffild: Há muitos fios no OpenCL, mas as tarefas delineadas no exemplo estão demasiado longe de serem comerciais.

É muito simples: pega-se numa tarefa próxima a uma de negociação (digamos, análise do histórico de cotações) e tenta-se resolvê-la usando OpenCL. Após algumas tentativas infrutíferas, leitura posterior da literatura e novas tentativas, funcionará, garanto eu. Mas apenas na condição de ser capaz de digerir a literatura de língua inglesa e ter um pouco de persistência, bem como uma quantidade mínima de cérebros.

Os controladores OpenCL já estão bastante optimizados tanto para placas de vídeo como para emulação em processadores (neste último caso, os processadores Intel são provavelmente muito mais fortes). Por isso, tem de se esforçar muito para não obter quaisquer resultados positivos no final.

 
Roffild:

Então, o que pode o OpenCL dar aos comerciantes?

Nos pontos 1-4, já foi respondido, enquanto eu me aventurarei a responder à sua pergunta principal (claro, este é apenas o meu ponto de vista): a grande maioria dos comerciantes não receberá nada do OpenCL, é melhor deixar este "pão" aos programadores.
 
Pessoal, quem está a fazer a baralhagem? É possível transferir para OpenCL a solução de um sistema linear de equações? O tamanho do sistema pode ser realmente grande e existem outras nuances.
 
TheXpert:
Rapazes, quem está a fazer a magia? É possível transferir para OpenCL a solução de um sistema linear de equações? O tamanho do sistema pode ser realmente grande e existem outras nuances.

Resolução de SLAEs em OpenCL

Este é um bom pdf que responde à sua pergunta.

 

Nikolai, obrigado pela sua capacidade de resposta. Não há CUDA e não há código.

Oh, esqueci-me de mencionar mais uma coisa - a construção matricial leva mais tempo do que a sua solução :) por isso, pode ser necessário paralelizar a construção.

 
TheXpert:

Nikolai, obrigado pela sua capacidade de resposta. Não há CUDA e não há código.

Oh, esqueci-me de dizer mais uma coisa - a construção matricial leva mais tempo do que a sua solução :) por isso posso precisar de a paralisar.

Qual é a fonte dos dados? // formato, estrutura dos dados

Construímos a matriz a partir de quê? de um monte de amortecedores? de uma árvore? A partir de [...] ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных - Документация по MQL5
 
TheXpert:

Nikolai, obrigado pela sua capacidade de resposta. Não há CUDA e não há código.

Oh, esqueci-me de mais uma coisa - a matriz leva mais tempo a construir do que a resolver :), por isso pode ser necessário paralelizar o edifício.

Referia-me ao esquema, não à implementação. É claro que a CUDA é diferente, mas o esquema geral é o mesmo.

Concordo com Vladimir, não está a dar informações suficientes para o ajudar.

Não creio que mais ninguém se junte a nós, por isso, se não quiser torná-lo público, pode perguntar a qualquer um dos apresentadores em privado.

 
MetaDriver:

Construímos a matriz a partir de quê? de um monte de amortecedores? de uma árvore? A partir de [...] ?

Grosso modo, existe um espaço de enorme dimensionalidade (10 -- 1000 e mais), pois é necessário resolver o problema do MNC.

A solução do problema da ANM resume-se a

(1) construir equações de derivados

(2) através da resolução de um sistema de equações derivado em (1)

Agora (1) toma a parte de leão do tempo da solução. Quanto maior a dimensionalidade, maior a fracção.

 

Os algoritmos paralelos têm apenas duas características que lhes conferem uma vantagem sobre os algoritmos sequenciais.

Eles são o algoritmo de pentear, onde cada dente leva o seu fio e puxa ao longo de todo o comprimento.

E a pirâmide rolo/desrolo. O desembrulhamento é menos comum, na maioria das vezes, o enrolamento.

Se a declaração do problema não incluir nenhuma destas características, o solucionador paralelo não dará uma vantagem, e mais frequentemente será mais lento devido ao custo de carregamento de memória.

Razão: