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

 
Urain:

Sim, acho que já percebi, não está satisfeito com

1. a complicação dos algoritmos e a sobrecarga de memória devido à sua utilização

2. e quer ser capaz de compensar na fase de cópia.

Assim não tem de copiar 100000 elementos e depois fazer 998000 offsets.

3. mas devemos deixar a variante com offset, que temos agora, porque nos permite não copiar um e os mesmos dados muitas vezes, mas levá-los para uma nova tarefa de um tampão CL já existente com um novo offset.

1. não. Não gosto de perder tempo com cópias extra. Embora, se utilizarmos o flutuador, teremos de copiar para o espaço de qualquer maneira.

2. Sim.

3. Sim.

 
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
  • www.mql5.com
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
 
MetaDriver:

Primeiras panquecas: https://www.mql5.com/ru/forum/138292/page7#601897

Boa. Impressionante. Deliciosas panquecas.

//---

Haverá um artigo sobre OpenCL? Ainda não cheguei perto deste tópico na prática, mas seria muito interessante lê-lo em perspectiva. Ou pelo menos um par de exemplos de scripts na ajuda sobre como utilizá-lo. Não há informação suficiente para se dar a volta.

 

Consegui obter um aumento de velocidade x200x no meu cartão em comparação com um único núcleo de CPU.

2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  CpuTime/GpuTime = 216.0292397660819
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  Result on Cpu МахResult==1.3431 at 819 pass
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  CPU time = 36941 ms
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  Result on Gpu МахResult==1.3431 at 819 pass
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  GPU time = 171 ms
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  OpenCL init OK!

Por favor, testar e publicar os resultados.

CPU: AuthenticAMD AMD Phenom(tm) II X6 1100 T Processor with OpenCL 1.1 (6 units, 3311 MHz, 16345 Mb, version 2.0)
GPU: Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1664 (VM))

Se o cartão não estiver a puxar memória, reduza o histórico (CountBars) ou o número de passes (CountPass), o que é menos desejável.

Reboque de testador multi-canal

Arquivos anexados:
 
2012.03.04 22:24:07     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 1513 ms
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 44055 ms
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 29.11764705882353
2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)
Mesmo no meu equipamento não tão grande, o ganho é visível. Teste útil. Obrigado. (risos)
 

O meu resultado, uma aceleração de 133 vezes:

2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 133.8285714285714
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 18736 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 140 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 23:21:47     Terminal        CPU: GenuineIntel  Intel(R) Core(TM) i7-2600 CPU @ 3.40 GHz with OpenCL 1.1 (8 units, 3392 MHz, 16366 Mb, version 2.0)
2012.03.04 23:21:47     Terminal        GPU: Advanced Micro Devices, Inc. Barts with OpenCL 1.1 (14 units, 900 MHz, 1024 Mb, version CAL 1.4.1664 (VM))
 
O surpreendente é que num único núcleo o i7 é duas vezes mais rápido que o X6 1100T - em frequências comparáveis (o i7 é cerca de 3,8 GHz, o 1100T é 3,7). É compreensível que estes sejam tais cálculos, mas a diferença na velocidade da CPU numa linha baixa é monstruosa.
 
Mathemat:
É espantoso que num único núcleo o i7 funcione 2 vezes mais rápido que o X6 1100T - a frequências comparáveis (o i7 é cerca de 3,8 GHz, o 1100T é 3,7). É compreensível que se trate de tal computação, mas a diferença na velocidade da CPU em roscas baixas é monstruosa.

Pensar muito, ler google.

Tenho andado a coçar a cabeça.

Ou eles têm o mais avançado mql-compilador-optimizador fixado por eles próprios e não nos dão, ou já não sei mais.

Não funciona dessa forma. "Eu não acredito!" (c) KSS.

E o mais provável é que tenham um codogerador optimizado para a Intel.

É um ultraje de qualquer forma! Vou queixar-me à ONU.

 
Intel júnior)
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 234 ms
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 27471 ms
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 117.3974358974359
2012.03.05 01:54:17     Terminal        GPU: NVIDIA Corporation GeForce GT 520 with OpenCL 1.1 (1 units, 1620 MHz, 512 Mb, version 285.62)

Não consegui encontrar uma linha sobre o CPU nos registos por alguma razão.

Intel Celeron G530 2.4GHz

 

É aqui que não o obtenho:

Tenho uma GeForce GT 440 com OpenCL 1.1 (2 unidades, 1660 MHz, 1024 Mb, versão 295.73) tempo de GPU = 1513 ms

Tenho a GeForce GT 520 com OpenCL 1.1 (1 unidades, 1620 MHz, 512 Mb, versão 285.62) tempo de GPU = 234 ms

Como é que isto é possível?

Aqui a GeForce GT 440 e aqui a GeForce GT 520 compararam especificações, a minha é por todos os parâmetros mais, mas o tempo de execução é 6,5 vezes mais.

NVIDIA GeForce GT 440 | NVIDIA
NVIDIA GeForce GT 440 | NVIDIA
  • www.nvidia.ru
Установи GeForce в свой ПК для максимальной производительности и разгони свою цифровую жизнь. Смотри потоковые HD фильмы и выводи фотографии высокого разрешения без задержек. Создай дома 3D кинотеатр с помощью Blu-Ray 3D™ и NVIDIA® GeForce®. Разгони свои любимые приложения и раздвинь границы возможностей интернет с новым поколением браузеров с...