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

 

Algo não está a funcionar para mim. A linha de inicialização é óptima:

2012.04.01 05:52:01    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))


(Coloco OpenCL 1.1 da AMD, e 1.2 em cima). Mas agora a execução do teste

2012.04.01 06:06:49    ParallelTester_00-01x (EURUSD,H1)    OpenCL not found.


Antes desta actualização, a Intel Graphics Driver para a versão mais recente, depois puxou para baixo os drivers AMD com a mesma instalação, e depois definiu-a novamente.

O que estou eu a fazer mal agora?

P.S. Em breve a Ivy virá e mostrará realmente o que a Intel pode fazer em gráficos integrados, juntamente com a Intel HD 4000. Vejam os gráficos.

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat:

O que estou eu a fazer mal agora?

Recompilar o teste. Isso deve ajudar. Caso contrário, ir ao servicedesk.
 
Mathemat:

O que estou eu a fazer mal agora?
CLCreateContext alterou o parâmetro bool use_gpu para int device (número do dispositivo). Corrigir o código.
 
mql5:
Na nova compilação, o parâmetro da função CLContextCreate foi alterado, int dispositivo é usado em vez de bool use_gpu.

com device>=0 é usado como número de dispositivo OpenCL em sequência
com device===OPENCL_DEVICE_ANY (-1) usado para seleccionar automaticamente de todos os dispositivos disponíveis
com device===OPENCL_DEVICE_GPU (-2) usado para seleccionar automaticamente de todos os dispositivos GPU disponíveis

Pode por favor mostrar-me como fazer isto no código? Chamo CLContextCreate( OPENCL_DEVICE_ANY ) e obtenho o resultado na compilação:

'OPENCL_DEVICE_ANY' - undeclared identifier    ParallelTester_00-01x.mq5    145    31


Construir 619.

E segunda pergunta: onde posso encontrar a última ajuda?

P.S. Funcionou assim que eu defini o argumento para -1. A constante OPENCL_DEVICE_ANY ainda não foi declarada :)

 
Na construção 619 estas constantes são renomeadas para CL_DEVICE_ANY/CL_DEVICE_GPU.

Mas no futuro, será CL_USE_ANY/CL_USE_GPU_ONLY
 

Decidi verificar como o OpenCL irá funcionar na i3-2120 (não é o meu computador, não há vídeo discreto no sistema). Instalado AMD APP SDK, OpenCL-Z detectou tudo. O terminal exibia uma linha durante a inicialização:

2012.04.02 03:59:47    Terminal    CPU: GenuineIntel  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)


Verifiquei-o no código MetaDriver anexado a este post e ligeiramente modificado com as últimas alterações na construção 619 (ver os primeiros testes aqui). Resultado:

2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CPU time = 20483 ms
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    GPU time = 27628 ms
2012.04.02 03:59:55    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!


Em tempo de execução na "GPU", todos os quatro fios do processador estavam totalmente ocupados, 100%.

O que preciso de fazer para obter aceleração? Num sistema baseado no Pentium G840 (também sem vídeo discreto), o aumento de velocidade foi 25 vezes mais rápido:

P.S. Enviei uma mensagem ao Service Desk, mas receio que este seja um problema meu... Aparentemente aprendi a instalar e desinstalar correctamente o AMD APP SDK de olhos fechados, mas acho que não cheguei a todas as armadilhas. Embora o Intel OpenCL Runtime esteja instalado no meu sistema, ainda não é reconhecido no terminal como um dispositivo OpenCL.

P.P.S. Acontece que aqui está outra coisa que eu desenterrei(https://www.mql5.com/ru/forum/6042/page25):

Cinzas: 2012.03.05 17:43:16 CPU Terminal: CPU Intel(R) Core(TM) i3-2100 GenuineIntel a 3.10GHz com OpenCL 1.1 (4 unidades, 3092 MHz, 4008 Mb, versão 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0,73476776766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Resultado no Cpu MachResult==1.27347 na passagem 1125
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Contagem de inticadores = 16; Contagem de barras históricas = 144000; Contagem de passes = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Tempo de CPU = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Resultado sobre Gpu MachResult===1.27347 na passagem 1125
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Contagem de inticadores = 16; Contagem de barras históricas = 144000; Contagem de passes = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) GPU time = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!

:(((

Talvez eu tenha "granadas do sistema errado"? (Refiro-me à versão AMD SDK)

Até a CPU é quase idêntica à i3-2120...
Arquivos anexados:
 

A GPU+OpenCL é uma grande ferramenta, afinal de contas!

2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Resultado sobre Cpu MachResult===3.78654 a 50 passagens
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Contagem de inticadores = 16; Contagem de barras históricas = 50,000; Contagem de passes = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tempo de CPU = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Resultado sobre Gpu MachResult===3.78654 a 50 passagens
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Contagem de inticadores = 16; Contagem de barras históricas = 50.000; Contagem de passes = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tempo GPU = 140 ms

 
MetaDriver:

A GPU+OpenCL é uma grande ferramenta, afinal de contas!

2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Tempo GPU = 140 ms

Proponho que se façam os testes para que o tempo de cálculo da GPU não seja tão pequeno. De qualquer modo, 140 ms, imho, é um valor demasiado pouco fiável, especialmente com erros de medição GetTickCount() em dezenas de milissegundos.

MD, isso sou eu a ter tanta inveja de ti.

 
Mathemat:

Sugiro que se façam os testes para que o tempo de computação da GPU não seja tão pequeno.

Não tenho a paciência de esperar pela CPU :) Quanto mais para dentro da floresta, mais fresco é o GPU.
 
MigVRN:
Não tenho a paciência de esperar por uma CPU :) Quanto mais para dentro da floresta, mais fresco é o GPU.

Do mesmo modo. :)

Mas eu vou correr em 4096 abelhas. O CPU vai contá-lo em cinco minutos.