OpenCL: testes internos de implementação em MQL5 - página 47
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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 dá
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.
O que estou eu a fazer mal agora?
O que estou eu a fazer mal agora?
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 :)
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)
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
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.
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 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.