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

 

Mathemat:

2012.06.02 05:49:25     OpenCL  CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))
2012.06.02 05:49:25     OpenCL  GPU: Advanced Micro Devices, Inc. ATI RV770 with OpenCL 1.0 (10 units, 780 MHz, 512 Mb, version CAL 1.4.1720)
2012.06.02 05:49:25     OpenCL  CPU: Intel(R) Corporation  Intel(R) Pentium(R) CPU G840 @ 2.80 GHz with OpenCL 1.1 (2 units, 2800 MHz, 8040 Mb, version 1.1)

Isto é, CPU Intel primeiro com o motor OCL da Intel depois o meu dinossauro HD 4870, e depois pedra novamente, mas com motor AMD. Roteiro:

As versões são diferentes, ou seja, a versão é independente do hardware?

Eu tenho OCL AMD 1.1, há alguma forma de o fixar em 1.2? Talvez seja mais rápido.

Encontrei o novo AMD APP SDK 2.7 com suporte para OCL 1.2, comunicarei novos resultados (se alterados).

Instalei-a e a versão não foi alterada. Pode não haver suporte de hardware ou outra coisa qualquer.

 
fyords: Colocando-a, a versão não foi alterada. Provavelmente sem suporte de hardware ou algo parecido.

Não pode ser. Deve ser 1.2. Em primeiro lugar, a AMD trataria das suas próprias pedras, e depois de outras pedras. Levantar-se-ia sobre aqueles que não são os seus próprios. Além disso, ambos os fabricantes possuem SSE2 há muito tempo.

Mas a diferença não é grande, cerca de 10%, talvez.

 
Mathemat:

Não pode ser. Tem de caber 1.2. Pelo menos a AMD trataria primeiro das suas próprias pedras e depois das de outras pessoas. Trabalharia naqueles que não lhe pertencem. Além disso, ambos os fabricantes possuem SSE2 há muito tempo.

Mas a diferença não é grande, cerca de 10%, talvez.

Devo estar a cair. Actualizações recentes deixaram de funcionar e agora diz "versão não autêntica". OK, enquanto estiver a respirar, deixe-o respirar. Depois reinstalarei e lançarei uma nova OCL.

Tenho SSE2 e ainda mais. Claro que 10% não é muito, mas mesmo assim é agradável.

P.S.: Obrigado pelos esclarecimentos.

 
ilovebtc:

Por exemplo, tenho uma placa gráfica Radeon 6930 que tem 1280 processadores de fluxo. Como é que vai aparecer na lista de agentes? Como 1 dispositivo, ou todos os 1280.

É por si só vezes mais rápido do que 10 processadores, e o bónus não é para 1 dispositivo adicionado.

Uma placa gráfica não pode funcionar com código escrito em mql; só pode funcionar com código escrito em línguas especializadas (OpenCL no nosso caso). Portanto, as placas de vídeo na nuvem só serão úteis para programas mql usando OpenCL-API (com inserções OpenCL).

Se compreende tudo isto, ignore o meu comentário. Pareceu-me apenas que algumas pessoas no fórum esperam um aumento de produtividade dos programas mql5 mais comuns que não usam OpenCL para se ligarem à nuvem. Não é este o caso.

 

Intel e AMD SDK instaladas.

2012.06.07 18:40:28 OpenCL CPU: Intel(R) Corporation Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz with OpenCL 1.1 (2 units, 2100 MHz, 2045 Mb, version 1.1)

2012.06.07 18:40:28 OpenCL CPU: GenuineIntel Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz with OpenCL 1.2 (2 units, 2094 MHz, 2045 Mb, version 2.0 (sse2)) 

2012.06.07 18:40:55 vect_v2_all_devices (EURUSD,H1) =======================================
2012.06.07 18:40:55 vect_v2_all_devices (EURUSD,H1) OCL martices mul:         ROWS1 = 2000; COLSROWS = 2000; COLS2 = 2000
2012.06.07 18:50:04 vect_v2_all_devices (EURUSD,H1) CPUTime = 548.515
2012.06.07 18:50:04 vect_v2_all_devices (EURUSD,H1) ---------------
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) read = 4000000 elements
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) Device = 0: time = 15.975 sec.
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) CPUTime / GPUTotalTime = 34.336
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 1571,356 ) = 2.88011026;    thirdCPU[ 1571,356 ] = 2.88011026;    buf[ 1571,356 ] = 2.88010764
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 791,407 ) = 1.36050534;    thirdCPU[ 791,407 ] = 1.36050534;    buf[ 791,407 ] = 1.36050797
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 1920,1928 ) = 2.97455144;    thirdCPU[ 1920,1928 ] = 2.97455144;    buf[ 1920,1928 ] = 2.97455001
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 386,216 ) = -1.05270028;    thirdCPU[ 386,216 ] = -1.05270028;    buf[ 386,216 ] = -1.05269444
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 158,1896 ) = 2.30077577;    thirdCPU[ 158,1896 ] = 2.30077577;    buf[ 158,1896 ] = 2.30077529
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 1403,1477 ) = 5.44755507;    thirdCPU[ 1403,1477 ] = 5.44755507;    buf[ 1403,1477 ] = 5.44755411
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 190,97 ) = -0.19755134;    thirdCPU[ 190,97 ] = -0.19755134;    buf[ 190,97 ] = -0.19754831
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 694,1569 ) = 5.30565643;    thirdCPU[ 694,1569 ] = 5.30565643;    buf[ 694,1569 ] = 5.30566406
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 1084,703 ) = -0.40982622;    thirdCPU[ 1084,703 ] = -0.40982622;    buf[ 1084,703 ] = -0.40982300
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) sum( 613,1814 ) = -2.08050942;    thirdCPU[ 613,1814 ] = -2.08050942;    buf[ 613,1814 ] = -2.08050990
2012.06.07 18:50:22 vect_v2_all_devices (EURUSD,H1) ________________________
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) read = 4000000 elements
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) Device = 1: time = 14.868 sec.
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) CPUTime / GPUTotalTime = 36.892
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 726,1509 ) = -3.87149954;    thirdCPU[ 726,1509 ] = -3.87149954;    buf[ 726,1509 ] = -3.87148523
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 408,1551 ) = -3.54236746;    thirdCPU[ 408,1551 ] = -3.54236746;    buf[ 408,1551 ] = -3.54237366
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 837,1133 ) = -1.46401167;    thirdCPU[ 837,1133 ] = -1.46401167;    buf[ 837,1133 ] = -1.46400595
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 1885,1406 ) = 3.41383481;    thirdCPU[ 1885,1406 ] = 3.41383481;    buf[ 1885,1406 ] = 3.41383505
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 419,930 ) = -2.05204225;    thirdCPU[ 419,930 ] = -2.05204225;    buf[ 419,930 ] = -2.05204272
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 895,1065 ) = 2.29360199;    thirdCPU[ 895,1065 ] = 2.29360199;    buf[ 895,1065 ] = 2.29360104
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 1687,1449 ) = 2.12151670;    thirdCPU[ 1687,1449 ] = 2.12151670;    buf[ 1687,1449 ] = 2.12152243
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 1227,1863 ) = 4.48004580;    thirdCPU[ 1227,1863 ] = 4.48004580;    buf[ 1227,1863 ] = 4.48004818
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 1545,234 ) = 2.60638309;    thirdCPU[ 1545,234 ] = 2.60638309;    buf[ 1545,234 ] = 2.60638452
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) sum( 446,1500 ) = -8.61246967;    thirdCPU[ 446,1500 ] = -8.61246967;    buf[ 446,1500 ] = -8.61247253
2012.06.07 18:50:38 vect_v2_all_devices (EURUSD,H1) ________________________

É bom ou mau?

 
Manov: Isso é mau ou bom?

Bem, é um processador móvel de 2 núcleos, lançado há 4,5 anos atrás.

O progresso continua: parece que as novas instruções SSE e outras inovações arquitectónicas desempenham nela o papel principal. O meu cepo orçamental é 4-5 vezes mais rápido nesta tarefa :)

Mas dá um ganho muito bom no OpenCL. Não faz mal, é assim que deve ser.

 
Mathemat:

Bem, é um processador móvel de 2 núcleos lançado há 4,5 anos.

O progresso não está parado: parece que as novas instruções da SSE e outras inovações arquitectónicas desempenham um papel importante na mesma. O meu cepo orçamental é 4-5 vezes mais rápido nesta tarefa :)

Mas dá um ganho muito bom no OpenCL. Não faz mal, é assim que deve ser.

Muito obrigado!

Compreendo correctamente que para grandes cálculos matemáticos, se eu rastejar OpenCL, o tempo para calcular será 30+ vezes menos ?!?

 
Manov: Compreendo correctamente que se eu usar OpenCL para grandes cálculos matemáticos o tempo de execução será 30+ vezes menos?

Bem, sim, mais ou menos - num cartão discreto. De qualquer modo, o meu HD 4870 faz os mesmos cálculos em 0,5 segundos.

Mas deve compreender-se que nem todos os cálculos intensivos se prestam a uma aceleração decente.

 

Boa noite a todos.

Tentei compreender a utilização do OpenCL no Metatrader5, mas não consegui chegar ao fundo da questão.

Pode dizer-me se é possível utilizar a placa de vídeo para aceleração adicional de testes no MT5 Tester e o que fazer para isso.

Também tentei o script parallel_tester_00-01x_new_cycle, mas como é que funciona ?

 
vittt:

Boa noite a todos.

Tentou compreender o uso de OpenCL em Metatrader5, mas não conseguiu entrar na sua granulometria.

Pode dizer-me se é possível utilizar o cartão de vídeo para aceleração adicional de testes no MT5 Tester e o que fazer para isso.

Também experimentei o guião do ciclo paralelo_00-01x_novo_tester_00, mas como é que funciona ?

Há dois grandes artigos neste site sobre este tópico que descrevem tudo com grande detalhe:

Razão: