Discussão do artigo "Como instalar e utilizar o OpenCL para realizar cálculos" - página 5

 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Discussão do artigo "Como instalar e usar o OpenCL em cálculos"

MetaDriver, 2013.11.27 23:23

...

Algumas classificações são malucas para você. ou contadas de forma errada. Aqui estão as minhas classificações de hoje:

2013.11.28 00:04:42     OpenCL  Device #1:  CPU AuthenticAMD AMD Phenom(tm) II X6 1100 T Processor with OpenCL 1.1 (6 units, 3840 MHz, 16345 Mb, version 2.0, rating 17)
2013.11.28 00:04:42     OpenCL  Device #0:  GPU Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1703 (VM), rating 171)

Não acredito em uma diferença tão grande nas classificações. Há algo errado aqui.

Reinstalei os drivers e agora a diferença é ainda maior. No registro do terminal, a classificação da CPU é de até 130 (a placa de vídeo também é praticamente a mesma). Mas no perfil, na seção Agents (agentes conectados à nuvem), a classificação é de ~170 em média em todos os núcleos (máximo de 183).

Não sei por que essa diferença...

 
tol64:

Reinstalei os drivers e agora a diferença é ainda maior. No registro do terminal, a classificação da CPU é de até 130 (na placa de vídeo também é praticamente a mesma). Mas no perfil, na seção Agents (agentes conectados à nuvem), a classificação é de ~170 em média em todos os núcleos (máximo de 183).

Não sei por que essa diferença...

Não, bem, os agentes são uma música diferente, as classificações para cálculos normais (não OpenCL) são calculadas lá, ou seja, são calculadas em outras unidades relativas em geral.

Entendo a questão dos drivers. Ainda estou demorando para reinstalar os meus - tive problemas no ano passado ao reinstalar os drivers. Mal consegui fazer isso sem reinstalar o sistema.

 

Intel® SDK para aplicativos OpenCL* 2013 - não está instalado no meu PC:

Por favor, me diga onde clicar :) - Win 7 x64

 
MigVRN:

Intel® SDK para aplicativos OpenCL* 2013 - não está instalado no meu PC:

Por favor, me diga onde clicar :) - Win 7 x64

Primeiro, faça o download no site da Intel e, em seguida, instale este arquivo: intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi.
 
tol64:
Baixe primeiro do site da Intel e depois instale este arquivo: intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi.
Muito obrigado - isso ajudou!
 
Você pode me dizer como usar a GPU como um agente para testes, pois tudo está instalado (drivers OpenCL), o terminal encontra a GPU, mas na lista de agentes no testador ela não está, apenas 2 núcleos de CPU?
 

Eu ainda não entendi muito bem o recurso MetaTrader e OpenCL.......
Até onde eu sei, a função do OpenCL é compartilhar o processador do PC com o processador da GPU VGA. (principalmente para jogos/edição de fotos).... o objetivo é fazer com que o processador do PC não trabalhe muito.

Li algumas referências sobre OpenCL e MetaTrader 5, mas a maioria contém scripts,
infelizmente não sei nada sobre codificação,,,,, e quanto mais leio, mais fico tonto.


Minha pergunta:....
1. Eu não uso nenhum EA e só uso o indicador BollingerBand & Stochastic.....
Se o meu MetaTrader 5 com seu recurso OpenCL ativado, ele é capaz de diminuir o uso do processador do PC para cerca de 50%?

2. Se estiver executando 8 diferentes 'MetaTrader 5' (com OpenCL ativo), é realmente sentir mais leve e não abrandar o PC?

Se alguém souber a resposta, por favor, explique com um inglês simples.

 
stivy007:
Você poderia me dizer como usar a GPU como um agente para testes, porque tudo está instalado (drivers OpenCL), o terminal encontra a GPU, mas na lista de agentes no testador ela não está presente, apenas 2 núcleos de CPU?
De jeito nenhum. Devem ser apenas consultores especialmente escritos com suporte.
 

Alguém sabe por que um código simples para OpenCL funciona no processador, mas o driver de vídeo falha na placa de vídeo?

Se você remover o loop interno, ele funcionará na placa de vídeo sem nenhum problema.

#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs;

input int _device = 0;        /// Número do dispositivo OpenCL 

string d2s( double arg, int dig )         { return DoubleToString( arg, dig ); }
//+------------------------------------------------------------------+

string i2s( int arg )                     { return IntegerToString( arg ); }
//+------------------------------------------------------------------+

const string clSrc =
      "#pragma  OPENCL EXTENSION cl_khr_fp64 : enable                      \r\n"
      "                                                                    \r\n"
      "__kernel void test( __global double *out )                          \r\n"                 
      "{                                                                   \r\n"                  
      "  double x = 0.0;  double x1 = 0.0;                                 \r\n"                      
      "  for( long j = 0; j < 1000000; j ++ )                              \r\n"
      "  {                                                                 \r\n"
      "     x =x+0.01;                                                     \r\n"     
      "     for( long n = 1; n < 10000; n ++ ) x1=x1+0.01;                 \r\n"
      "  }                                                                 \r\n"
      "  out[ 0 ] = x;                                                     \r\n"
      "}                                                                   \r\n";
      

int OnStart()
{
   int clCtx = CLContextCreate( _device );
   
   int clPrg = CLProgramCreate( clCtx, clSrc );
   int clKrn = CLKernelCreate( clPrg, "test" );

   uint st = GetTickCount( );

   int clMem = CLBufferCreate( clCtx,  sizeof( double ), CL_MEM_READ_WRITE );            
   CLSetKernelArgMem( clKrn, 0, clMem );
   Print (i2s(clCtx)+";"+i2s(clPrg)+";"+i2s(clKrn));
   bool ex = CLExecute( clKrn ); 
                       
   double buf[1];                                                
   uint read = CLBufferRead( clMem, buf );                                                 
   
   Print( "out = " + d2s( buf[0], 12 ) );
      
   CLBufferFree( clMem );
   CLKernelFree( clKrn );
   CLProgramFree( clPrg );
   CLContextFree( clCtx );
   
   double gone = ( GetTickCount( ) - st ) / 1000.;
   Print( "OpenCl: gone = " + d2s( gone, 3 ) + " sec." );
   Print( "________________________" );
   
   return( 0 );
}//+------------------------------------------------------------------+
 

Você pode passar o indicador, a vela ou qualquer propriedade encontrada no gráfico para a GPU?

Por exemplo, obter o RSI, o estocástico, o ichimoku ou o OHLC da vela?