OpenCl e as ferramentas para ele. Revisões e impressões. - página 5

 
Mathemat:

Ótimo, ele fornecerá uma base para comparar MQL e C/C++. Eu apenas forneci os fatos. E de qualquer forma, por que diabos eu deveria ser um Thomas, o Crente?

Pode haver um pouco mais de diferença nos nervos, sem discussão.

E, a propósito, eu gostaria de ver seus "apenas os fatos".

Meus "apenas os fatos" estão quase lá. "Quase" - porque eu desenterrei as fontes dos meus antigos testes. Vou atualizá-los um pouco e depois colocarei as fontes com os resultados dos testes em uma tabela aqui.

 
joo: E, a propósito, eu gostaria de ver seus "apenas os fatos".

Aqui mesmo. Veja meu segundo post na página.

Você, a propósito, já respondeu ao meu post com o link. O código C acima pode ser facilmente retrabalhado em MQL4. Por favor, veja o anexo.

Arquivos anexados:
pi.mq4  1 kb
 
Mathemat:

Aqui mesmo. Veja meu segundo post na página.

A propósito, você já respondeu ao meu post com o link. O código C acima é facilmente retrabalhado para a MQL4. Por favor, veja o anexo.

Por favor, faça uma tabela de resultados de testes e poste-a aqui, para que ninguém lendo este tópico tenha que pular através dos links.
 
AlexEro:

Enviei-lhe um link para as fotos desses gigantes em uma mensagem privada - não para ceder ao digital ******ismo de crianças de escolas vocacionais.

Vamos, acredite, sua foto não mudará seus números aqui nem mesmo por uma porcentagem. Vá em frente e afixe isso.

Mas quanto tempo vai durar? De uma boa maneira, você deve montar um bom resfriamento para tal equipamento, resfriamento de água, digamos, como na próxima foto.

 
joo:
Por favor, anote os resultados dos testes como uma tabela e coloque-os aqui, para que ninguém lendo este tópico tenha que pular através dos links.

Não é uma mesa. Um par de fotos.

Testes de programas parallelpi_x.cpp em diferentes configurações de compilação. Ao comparar com a MQL4, apenas o primeiro resultado é importante: 6.723 segundos. Nenhum acelerador (SSE*, IPP, OML) é usado lá.

Mas se alguém quiser dar uma sacudida e ver como os resultados estão mudando ao ligar os aceleradores, abaixo em anexo está um arquivo com arquivos .exe compilados e bibliotecas paralelas necessárias. Tudo o que você precisa é colocá-los todos em um único diretório e executá-los a partir da linha de comando.

É claro que estes resultados não representam nenhuma competição a monstros na matriz de placas gráficas.

O mesmo programa reescrito em MQL4:


O resultado: 22,98 segundos, ou seja, 3,4 vezes mais. Mas não há trabalho com matrizes lá, e isso pode ser crucial para nós. Em anexo está o código do roteiro.

Arquivos anexados:
release.zip  278 kb
pi_1.mq4  1 kb
 
joo:

A MQL5 é 20 vezes mais rápida que a MQL4.

C++ é 6 vezes mais rápido que a MQL5 (ao utilizar bibliotecas que paralelizam automaticamente a execução).

Total: 20*6=120 vezes.

Se você usar cálculos de GPU, será ainda mais rápido.

TOTAL: 10/120=0,083c.

algo como isto.

Então, fanfarra! Há quatro compiladores diferentes no ringue, competindo com... para compilar.

Bem, isso é uma piada, é claro. Mas, falando sério, seis testes foram escritos. Os resultados são mostrados na tabela abaixo. E os comentários são ainda mais baixos. :)

#Testes
Descrição
Nome executável
Resultado do teste, s
1
Ex5 script e Ex5 biblioteca
1 MLP MQL compilador.ex5
97.2
2
Ex5 script e biblioteca dll C++, compilador MS, todas as otimizações desativadas
2 MLP MS compiler nonOpt.ex5
42.6
3
Ex5 script e biblioteca dll C++, compilador MS, todas as otimizações em
3 MLP Compilador MS Opt.ex5
27.1
4
Ex5 script e biblioteca dll C++, compilador Intel, todas as otimizações incluídas
4 MLP Compilador Intel.ex5
12.5
5
Ex4 script e Ex4 biblioteca
5 MLP MQL4 compilador.ex4
669.6
6
Ex4 script e biblioteca dll C++, compilador Intel, todas as otimizações habilitadas
6 MLP MQL4 Compilador Intel.ex4
10.7




Como os cálculos pesados de teste é usada uma rede neural de 4 camadas MLP 80-100-100-10, projetada como bibliotecas plugáveis ex4, ex5, e dll.

Vemos isso:

- os resultados das ex5 bibliotecas conectadas e ex4 bibliotecas diferem por um fator de 6,8 (1 e 5 testes)

- os resultados das bibliotecas eX5 conectadas e das bibliotecas dll do compilador Intel diferem por um fator de 7,8 (1 e 4 testes)

- resultados das bibliotecas eX4 conectadas e dll-libraries do compilador Intel diferem 62,5 vezes (testes 5 e 6)

Conclusões:

É claro, eu estava um pouco exagerando em relação à diferença de 20 vezes entre a MQL4 e a MQL5. Tal diferença ocorrerá (lembro-me onde esse número apareceu em minha cabeça) sob o uso intensivo de matrizes bidimensionais, mas sou preguiçoso demais para ajustar os testes especificamente para essa característica específica (além disso, não corresponderá a casos típicos de cálculos "pesados" - casos típicos são apresentados em testes), portanto, você pode acreditar em minha palavra ou escrever um teste por si mesmo. Portanto, podemos falar de uma diferença de velocidade 6,8 vezes entre MQL4 e MQL5 e de uma diferença de 62,5 vezes entre MQL4 e C++.

E eu estou desanimado com este fato - ahtung! - O script MQL4 que chamou a dll funciona mais rápido do que o script MQL5 com a mesma dll... O que isso significa? - Verifiquei-o, corri-o várias vezes, sem erros. Os desenvolvedores parecem ter dito que o MT5 otimizou as chamadas dll em comparação com o MT4. Ou são peculiaridades das construções (MT5 574 e MT4 409) e os testes não são muito corretos ou... Eu não sei.


Quem precisa, pode usar o grid (dll compilado de 4 ou 6 testes - grid muito rápido), as fontes estão anexadas. O número de neurônios em cada camada é configurável. Mas o otimizador (tanto para 4 como para 5) não suporta mais de 64 parâmetros, além de que você tem que usar um grande passo, então este monstro (como nos testes, 80-100-100-10, 19210 parâmetros a serem otimizados!) não pode ser treinado usando meios padrão, você tem que usar algoritmos de otimização personalizados. A propósito, para isso (e não apenas para isso) decidi fazer uma ferramenta paga (estará na loja, é claro), que permitirá utilizar otimizadores personalizados de 4 e 5 passos para treinar um número ilimitado de parâmetros, até mesmo 0 passos.

Arquivos anexados:
tests_mlp.zip  71 kb
 

É convincente, joo, muito convincente mesmo. Mas há um par de pontos.

Primeiro, ao compilar por MS, mesmo o melhor resultado (opção 3) é menos de 4 vezes melhor do que a opção 1.

Em segundo lugar, não acredito que o compilador com tudo incluído da Intel seja melhor que a MS por mais do que um fator de 2. Portanto, você possibilitou mais otimizações com a Intel.

Em qualquer caso - impressionante. Esperando que a mesa seja preenchida até o final.

Agora eu sei para que servem estes conjuntos de placas de vídeo: para fazer estes cálculos em cada tic!

 
Mathemat:

Em segundo lugar, não acredito que o compilador com tudo incluído da Intel seja mais do dobro do que o da MS. Portanto, a Intel tem mais otimizações habilitadas.

Quais deles estão lá - todos eles. Não faz sentido usar um compilador sem usar todas as suas características - o peixe parece onde o mais profundo está, enquanto o programador procura o melhor compilador. Neste sentido, os compiladores da MQ não são personalizados, de modo que podemos supor que eles estejam sintonizados de forma ideal.
 

E, eu estava desanimado com este fato, akhtung! - O script MQL4 que chama dll funciona mais rápido que o script MQL5 com a mesma dll... O que isso significa? - Verifiquei-o, corri-o várias vezes, sem erros. Os desenvolvedores parecem ter dito que o MT5 otimizou as chamadas dll em comparação com o MT4. Ou são peculiaridades das construções (MT5 574 e MT4 409) e os testes não são muito corretos ou... Eu não sei.



Obrigado, é muito ilustrativo e ilustrativo.

Acho que não devemos comparar tanto as porcentagens individuais : porque a velocidade da CPU (bem, se você tomar em MegaHertz MHz, ou GigaHertz, GHz) do computador suspenso ... é zero.

Quando a diferença de velocidade é de cerca de 10-20%, faz sentido estar mais preocupado com a confiabilidade do programa e de seu ambiente e com a manipulação de erros. Por exemplo, ao utilizar DLL feitas no MSC, você deve prestar atenção em como ela está ligada com MSVCRT.DLL e qual versão, porque ela tem que funcionar no ambiente do complicado processo terminal.exe e no ambiente do bloco de inicialização MSVCRT.DLL, que pode diferir de versão para versão, e assim por diante. Para o tratamento normal de erros em DLL, o MetaTrader constrói (e monitora) uma cadeia de exceções, o que por si só retarda todo o sistema e chama DLL e assim por diante.

Sobre a questão da velocidade dos neurônios:

aqui está um homem traduziu a biblioteca da rede neural FANN para OpenCL e reivindica uma aceleração de 20x na média do cartão GTX 285:

"Em minha GPU atual (GeForce 9500 GT), estou obtendo aproximadamente a mesma velocidade entre a versão normal e a versão OpenCL. Atualmente tenho um GTX 285 sob encomenda, e deve ser pelo menos 10x mais rápido. Com uma GPU moderna, como a GTX 480, espero que ela seja pelo menos 20x mais rápida que a minha Nehalem Mac Pro de 2,26GHz. "

...

"Sim, a nova placa (GTX 285) roda o kernel cerca de 20x mais rápido".

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

Quase todos já estiveram lá, é claro.

Para ventiladores fanáticos B4 que não visitam mql5.com : OpenCL: Testes internos de implementação em MQL5

Quase lá, no entanto.

Suspeito que será muito atraente para os auto-comerciantes que utilizam outras plataformas.

Razão: