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

 

Boa tarde a todos.

Uma palavra de conselho sobre este assunto muito interessante:

1. Já existem EAs para comércio que utilizam OpenCL para cálculos?

(há mais de um ano o apoio foi anunciado e todos juntos tentámos a actuação num guião de teste, mas passou muito tempo e o tema ficou calmo...).

2. Se eu tiver várias placas de vídeo instaladas no meu sistema, serão todas utilizadas para cálculos ou apenas uma delas ?
 
vittt: 1. Já existem EAs comerciais disponíveis que utilizam OpenCL para cálculos?

Provavelmente existe, mas é pouco provável que esteja num kodobaz. Há poucos entusiastas, e nem todos o fazem.

O OpenCL é vantajoso quando permite uma aceleração significativa dos cálculos, o que é crítico para o comércio. A sua introdução no algoritmo apenas por "shoblo" ou carregamento da placa de vídeo não é muito sensata.

Imho, o resultado mais sério pode ser obtido com cálculos intensivos bem paralizáveis ou para desenhadores de redes neurais. Vale provavelmente a pena perguntar-lhes isso.

Por exemplo, pessoalmente, tenho uma direcção em queestou interessado, mas o OpenCL é pouco necessário, pois dificilmente teria qualquer utilidade (demasiadas operações de acesso aleatório na memória global que só o diabo sabe como paralisar). Ainda não estou desesperado e ainda não tentei todas as possibilidades razoáveis - mas definitivamente não vai ser de livre acesso.

2. Se tiver mais do que uma placa de vídeo instalada no sistema, serão todas utilizadas para cálculo ou apenas uma delas ?

A empresa disse algo sobre problemas com cartões múltiplos ou mesmo de cabeça dupla. Não sei se estão resolvidos.

 

Olá.

Estou a fazer cálculos em massa no MetaTrader5, resolvendo um problema (modelando um jogo de póquer). Estou a escrever no Mcl5 porque sou um nerd e só o conheço. No meu caso, as questões de desempenho são muito importantes.

Assim, compreendo que as tarefas, em que cada etapa de cálculo sucessivo não está ligada aos resultados das anteriores, podem ser paralelizadas. Óptimo! Tenho precisamente uma tal tarefa.

Mas como posso fazer o paralelismo? Se o meu algoritmo funcionar com estruturas (estrutura) cujos métodos

- por exemplo, abrir um ficheiro de texto a partir de um disco rígido, lê-lo, adicionar informação em matrizes de estrutura, fechar o ficheiro de texto

- e outros métodos contêm muitas funções padrão, por exemplo rand(), ArrayResize(), etc.

OpenCl, como o entendo, é uma linguagem semelhante ao c++. De qualquer forma, a minha pergunta é: como posso fazer cálculos paralelos em geral?

 
Stasikusssss:

Olá.

Estou a fazer cálculos em massa no MetaTrader5, resolvendo um problema (modelando um jogo de póquer). Estou a escrever no Mcl5 porque sou um nerd e só o conheço. No meu caso, as questões de desempenho são muito importantes.

Assim, compreendo que as tarefas, em que cada etapa de cálculo sucessivo não está ligada aos resultados das anteriores, podem ser paralelizadas. Óptimo! Tenho precisamente uma tal tarefa.

Mas como posso fazer o paralelismo? Se o meu algoritmo funcionar com estruturas (estrutura) cujos métodos

- por exemplo, abrir um ficheiro de texto a partir de um disco rígido, lê-lo, adicionar informação em matrizes de estrutura, fechar o ficheiro de texto

- e outros métodos contêm muitas funções padrão, por exemplo rand(), ArrayResize(), etc.

OpenCl, como a entendo, é uma linguagem semelhante ao c++. De qualquer forma, a minha pergunta é: como posso fazer cálculos paralelos em geral?

O Google é a ajuda.

Não obterá uma resposta a tal pergunta neste fórum.

Por uma simples combinação de duas razões:

Os programadores principiantes não programam em OpenCL de todo (e não lidam com o paralelismo de todo) uma vez que não o conseguem apreender.

2 Os programadores experientes não querem mexer consigo porque isso (a sua pergunta) requer um estudo minucioso da sua qualificação, para lhe responder numa língua compreensível, e depois dar-lhe uma longa explicação da sua resposta.

Por conseguinte, respeite os recursos de tempo dos programadores experientes e procure você mesmo o básico. Mas quando o descobrir e tiver perguntas específicas sobre a língua (OpenCL), terá mais hipóteses de ter uma conversa significativa.

Быстрое погружение в MQL5
Быстрое погружение в MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы решили изучить язык программирования торговых стратегий MQL5, но ничего о нем не знаете? Мы постарались взглянуть на MQL5 и терминал MetaTrader 5 глазами новичка и написали эту небольшую вводную статью. Из неё вы сможете получить краткое представление о возможностях самого языка, а также несколько полезных советов по работе с редактором MetaEditor 5 и самим терминалом.
 

poderia responder que é possível fazer um paralelismo

apenas em C puro, apenas as operações aritméticas mais simples

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 

OpenCL 2.0

OpenCL 2.0 é a mais recente evolução significativa da norma OpenCL, concebida para simplificar ainda mais a programação multiplataforma, permitindo ao mesmo tempo acelerar facilmente uma rica gama de algoritmos e padrões de programação. Como base para estas capacidades aumentadas, OpenCL 2.0 define um modelo de execução melhorado e um subconjunto do modelo de memória C11 e C++11, sincronização e operações atómicas.

  • publicar um comentário sobre o tópico de feedback do OpenCL 2.0 nos fóruns do Khronos - bom para feedback geral e perguntas
  • arquivar um bug no sistema Khronos Bugzilla sob OpenCL 2.0 - bom para correcções detalhadas e erros encontrados na especificação.
Official OpenCL 2.0 Feedback thread
Official OpenCL 2.0 Feedback thread
  • www.khronos.org
The Khronos Group promotes the deployment and development of open standard APIs to enable authoring and playback of dynamic media on a wide variety of platforms and embedded devices. Current APIs are OpenGL ES, OpenML, OpenMAX, OpenSL ES, and Collada.
 
tol64:

OpenCL 2.0 é a mais recente evolução significativa da norma OpenCL,.............

Onde quer chegar com isto?
 
MetaDriver:
Qual é o seu objectivo?

Vi esta notícia e decidi publicá-la aqui. É interessante aprofundar o assunto, mas ainda não consigo encontrar tempo. Aqui estão as mesmas notícias em russo:


Especificação OpenCL 2.0adoptada

O Grupo Khronos anunciou a ratificação e disponibilidade da versão final da especificação OpenCL 2.0. Segundo os programadores, o lançamento do OpenCL 2.0 representa um marco significativo na evolução de uma norma aberta, livre de usar, que simplifica a programação paralela entre plataformas.

A nova versão melhora o modelo de execução e os subconjuntos de modelos de memória de C11 e C++11, sincronização e operações atómicas. Diz-se que a nova versão do OpenCL permite a utilização de uma gama muito mais ampla de algoritmos e padrões de programação. A nova versão tem em conta os desejos dos programadores de software que utilizam o OpenCL. As especificações já se encontram disponíveis no sítio web Khronos.

As características e melhorias do OpenCL 2.0 incluem: memória virtual partilhada, paralelismo aninhado, espaço de endereçamento partilhado, melhor tratamento de imagem, incluindo suporte sRGB. Além disso, os programadores destacam operações atómicas C11, condutas de empilhamento FIFO in-memory e extensões de controladores instaláveis para Android.

Принята спецификация OpenCL 2.0
  • www.ixbt.com
Принята спецификация OpenCL 2.0 Открытый, бесплатный для использования стандарт OpenCL 2.0 упрощает кроссплатформенное параллельное программирование
 
tol64:

Vi esta notícia e decidi publicá-la aqui. É interessante aprofundar o assunto, mas ainda não consigo encontrar tempo. Aqui estão as mesmas notícias em russo:


Especificação OpenCL 2.0adoptada

O Grupo Khronos anunciou a ratificação e disponibilidade da versão final da especificação OpenCL 2.0. Segundo os programadores, o lançamento do OpenCL 2.0 representa um marco significativo na evolução de uma fonte aberta, livre de utilizar uma norma que simplifica a programação paralela entre plataformas.

A nova versão melhora o modelo de execução e os subconjuntos de modelos de memória de C11 e C++11, sincronização e operações atómicas. Diz-se que a nova versão do OpenCL permite a utilização de uma gama muito mais ampla de algoritmos e padrões de programação. A nova versão tem em conta os desejos dos programadores de software que utilizam o OpenCL. As especificações já se encontram disponíveis no sítio web Khronos.

As melhorias e novas funcionalidades do OpenCL 2.0 incluem: memória virtual partilhada, paralelismo aninhado, espaço de endereçamento partilhado, melhor processamento de imagem, incluindo suporte sRGB. Além disso, os programadores destacam operações atómicas C11, condutas de empilhamento FIFO in-memory e extensões de controladores instaláveis para Android.

Bem, isso é compreensível, o que fazer com ele, deitá-lo fora em C#/C++?
 
MetaDriver:
O que fazer com ele? Devo despejá-lo em C#/C++?

Talvez a Renat consiga ver o que se pode aprender com ela. É bem possível que uma nova especificação dê um melhor desempenho também na MQL5, não é?

Quanto a C#/C+++, se necessário, também podemos despejá-lo. O principal é obter o máximo rendimento possível. ;)

Razão: