Para os conspiradores mundiais e paranóicos completos, ou simplesmente para aqueles que gostam de controlar o preço, você é bem-vindo! ;) - página 7

 
Mathemat:
Sim, você está se gabando de seus cálculos da GPGPU. Alguma aceleração?

Onde o notebook obtém sua aceleração? Leva mais tempo para copiar para o buffer do que para calcular.

É apenas um teste. Haverá aceleração quando o cálculo for relativamente pesado.

Estou apenas adicionando um roteiro para calcular a correlação com um determinado conjunto de padrões (512 padrões em paralelo) para toda a história, e acho que haverá um ganho de cem vezes (por estimativa). A autópsia mostrará como realmente vai ser.

 

E de qualquer forma, não estou me gabando, estou popularizando o OpenCL. Pronto! :)

Também é divertido.

 
Mathemat:

Como é isso - alguma aceleração?

Isso é de yazzy!!!

2012.03.02 01:15:10     Tester-512_Test_001 (EURUSD,M1) СPU time = 7223 ms
2012.03.02 01:15:10     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.01871 at 49 pass
2012.03.02 01:15:03     Tester-512_Test_001 (EURUSD,M1) GPU time = 312 ms
2012.03.02 01:15:03     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.01871 at 49 pass
2012.03.02 01:15:02     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

O resultado é o mesmo (verificação de validade), mas o tempo é muito diferente. Neste caso, 23 vezes a diferença. De qualquer forma - valeu a pena.

Eu passei uma única camada de perceptron por um histórico de 144000 barras, 512 passagens de uma só vez. Eu gostei. ;)

 
MetaDriver: Neste caso, 23 vezes a diferença. De qualquer forma, valeu a pena.
Isso é ótimo!
 
Mathemat:
Isso é muito legal.

Afinal de contas, os tempos típicos são ainda ligeiramente melhores. Aqui está um olhar sobre as repetições:

2012.03.02 01:26:59     Tester-512_Test_001 (EURUSD,M1) СPU time = 7238 ms
2012.03.02 01:26:59     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.80004 at 320 pass
2012.03.02 01:26:51     Tester-512_Test_001 (EURUSD,M1) GPU time = 281 ms
2012.03.02 01:26:51     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.80004 at 320 pass
2012.03.02 01:26:51     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!
2012.03.02 01:26:48     Tester-512_Test_001 (EURUSD,M1) СPU time = 7270 ms
2012.03.02 01:26:48     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.48404 at 207 pass
2012.03.02 01:26:41     Tester-512_Test_001 (EURUSD,M1) GPU time = 281 ms
2012.03.02 01:26:41     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.48404 at 207 pass
2012.03.02 01:26:41     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

Mais de 25 vezes. Mesmo muito aha. :)

Esse era um neurônio de 8 entradas. Agora confira a de 16 entradas:

2012.03.02 01:32:32     Tester-512_Test_001 (EURUSD,M1) СPU time = 14618 ms
2012.03.02 01:32:32     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.22936 at 78 pass
2012.03.02 01:32:18     Tester-512_Test_001 (EURUSD,M1) GPU time = 327 ms
2012.03.02 01:32:18     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.22936 at 78 pass
2012.03.02 01:32:17     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!
2012.03.02 01:32:01     Tester-512_Test_001 (EURUSD,M1) СPU time = 14618 ms
2012.03.02 01:32:01     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.21085 at 143 pass
2012.03.02 01:31:46     Tester-512_Test_001 (EURUSD,M1) GPU time = 327 ms
2012.03.02 01:31:46     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.21085 at 143 pass
2012.03.02 01:31:46     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

Isso é 45 vezes a diferença.

Isso mesmo - quanto mais pesado o cálculo, menor a sobrecarga constante (enviando matrizes para frente e para trás).

 

E isso são 1024 passes em paralelo:

2012.03.02 01:45:04     Tester-512_Test_001 (EURUSD,M1) СPU time = 29282 ms
2012.03.02 01:45:04     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==0.73802 at 802 pass
2012.03.02 01:44:35     Tester-512_Test_001 (EURUSD,M1) GPU time = 327 ms
2012.03.02 01:44:35     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==0.73802 at 802 pass
2012.03.02 01:46:36     Tester-512_Test_001 (EURUSD,M1) СPU time = 29265 ms
2012.03.02 01:46:36     Tester-512_Test_001 (EURUSD,M1) Result on Cpu МахResult==1.58618 at 821 pass
2012.03.02 01:46:06     Tester-512_Test_001 (EURUSD,M1) GPU time = 328 ms
2012.03.02 01:46:06     Tester-512_Test_001 (EURUSD,M1) Result on Gpu МахResult==1.58618 at 821 pass
2012.03.02 01:46:06     Tester-512_Test_001 (EURUSD,M1) OpenCL init OK!

Nota - na GPU não há diferença alguma (há 1280 núcleos, ou seja, toda a tarefa cabe em uma única passagem).

A verificação da CPU, é claro, é feita sequencialmente.

Assim, o centésimo exigido é praticamente alcançado: a diferença é 89,5474 vezes (!)

 

Sim, os cálculos pesados em loop são os melhores para OpenCL.

Você ou alguém que você conhece não tem um computador baseado em A8-3850 por perto? A propósito, tem 400 dutos gráficos (integrados)!

 
Mathemat:

Você ou alguém que você conhece não tem um cálculo baseado em A8-3850? A propósito, ela tem 400 GPUs (integradas)!

Existe alguma confusão? Aqui está http://kazan.kompiko.info/priceshop.php?desc_id=111255

Não parece ser nada especial, apenas quatro núcleos, nem um pio sobre a esteira.

 

Você pode ler a descrição da rocha aqui. Duvido muito que esta pedra (ou melhor, sua parte de GPU) não suporte OpenCL.

Do ponto de vista da CPU, a pedra não é muito boa. Mas tem vídeo decente integrado e em casos "bons" você pode contar com dezenas de vezes de aceleração sem usar nenhum monstro de vídeo discreto. Não é um supercomputador econômico, eh?

E "cinco" é tal, e acontece que o poder da pedra multi-núcleo é quase inútil. Sem contar, é claro, com a otimização: que diferença faz para você quantos núcleos você tem, 4 ou 6, se a otimização tem que funcionar 24 horas por dia? Por isso, corra Cloud mesmo em um Celeron G530 de núcleo duplo não tão rápido e honesto.

P.S. Eu não sou um fã da AMD, se alguma coisa. Estou apenas tentando calcular para onde toda essa confusão da AMD eventualmente levará.

 

Volodya, por favor, execute este roteiro e informe os resultados.

Obrigado à MQL5 pela ajuda.

Arquivos anexados:
Razão: