Eis o que você pode fazer com OpenCL diretamente no MetaTrader 5 sem DLLs - página 15

 
Ilyas:
  1. Feche o terminal
  2. Remover o valor OpenCL da colmeia de registro "HKEY_CURRENT_USER\Software\MetaQuotes Software".
  3. Execute o terminal e teste

Removida a chave OpenCL antes de executá-la. O comportamento não mudou.

Ou seja, o primeiro lançamento do Expert Advisor com CLContextCreate(CL_USE_GPU_ONLY) produz os erros acima e o Expert Advisor não começa. A partir da segunda execução, o log de inicialização dos dispositivos OpenCL não é mais exibido, há apenas um erro no log da EA e a EA não funciona. Ao reiniciar o terminal, EA com um comandoCLContextCreate(0) corrigidofunciona - uma mega-paisagem marítima realista aparece. Ao mesmo tempo, os mesmos erros deteste de desempenho no registro de inicialização, mas silêncio no registro EA.

A chave é ligeiramente alterada:

[HKEY_CURRENT_USER\Software\MetaQuotes Software]

before - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,6c,2a,09,a4,b3,d8,e2,3f

после - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,98,6b,19,ab,41,5c,fd,3f

Em princípio, este comportamento não é crítico, se você corrigir EA/scripts e dispositivos de desvio endereçando-os explicitamente e verificando o sinal CL_DEVICE_TYPE. É ainda melhor distribuir tarefas de forma gerenciável aos dispositivos com sua própria classificação. É apenas frustrante ter erros de inicialização. Quem sabe como o OpenCL se comportará na próxima batalha.

Por favor, ajude-me a encontrar oIntel SDK original para aplicações OpenCL 2016 R2 para escrever e testar os kernels. É inútil escrever à Intel em russo ;)

Por que você não tenta usar o AMD SDK?

 
Tente atualizar para o beta 2543
 
directx é mais estável, mas você terá que fazer muito trabalho para os cálculos e não há dublagens.
 
Ilyas:
Tente atualizar para o beta 2543

beta 2545, versão 2560.

Sempre que o roteiroé executado pela primeira vez:

Scripts script Seascape (GBPUSD,H1) loaded successfully
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 4400 with OpenCL 1.2 (20 units, 400 MHz, 1425 Mb, version 10.18.14.5117)
OpenCL  device #1: CPU Intel(R) Corporation Intel(R) Core(TM) i7-4500 U CPU @ 1.80 GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
OpenCL  device performance test started
OpenCL  test compilation failed with error: 
':9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:20:4: error: use of type 'double' requires cl_khr_fp64 extension to b
                
OpenCL  device #0 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  device performance test finished with error(s)
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 4400 with OpenCL 1.2 (20 units, 400 MHz, 1425 Mb, version 10.18.14.5117)
OpenCL  device #1: CPU Intel(R) Corporation Intel(R) Core(TM) i7-4500 U CPU @ 1.80 GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
Scripts script Seascape (GBPUSD,H1) removed
Aoexecutaro script comCLContextCreate (CL_USE_GPU_ONLY):
Seascape (GBPUSD,H1)    OpenCL not found. Error=5114
 

Tenho erros semelhantes, mas há um ano atrás, em um comprimido mais fraco, estava funcionando bem

OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 400 with OpenCL 1.2 (12 units, 600 MHz, 1598 Mb, version 20.19.15.4364)
OpenCL  device #1: CPU Intel(R) Corporation  Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44 GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
OpenCL  device performance test started
OpenCL  test compilation failed with error: '1:9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:20:4: error: use of type 'double' requires cl_khr_fp64 extensio
OpenCL  device #0 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  test compilation failed with error: 'Compilation started 2:9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:20:4: error: use of type 'double' requires 
OpenCL  device #1 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  device performance test finished with error(s)
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 400 with OpenCL 1.2 (12 units, 600 MHz, 1598 Mb, version 20.19.15.4364)
OpenCL  device #1: CPU Intel(R) Corporation  Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44 GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
e agora mesmo isso não funciona:
void OnStart()
{
        Print(CLContextCreate( CL_USE_ANY ));
}

com os parâmetros: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - resultado: -1 com código de erro: 5115

com parâmetros: 0, 1 - resultado: positivo

 
aim-1:

beta 2545, versão 2560.

Sempre quevocê executa o roteiro pela primeira vez:

Aoexecutaro script com CLContextCreate(CL_USE_GPU_ONLY):

Seu cartão não suporta cálculos duplos:

use of type 'double' requires cl_khr_fp64 extension to be enabled

Você não pode usar matemática flutuante nos cálculos financeiros por causa de enormes arredondamentos e, portanto, requeremos explicitamente apoio para cálculos duplos.

Anteriormente, permitimos ativar o OpenCL sem dobrar, mas isso não fazia sentido.

Agora limitamo-lo explicitamente.

 
A100:

Tenho erros semelhantes, mas há um ano atrás, em um comprimido mais fraco, estava funcionando bem

E agora mesmo isto não funciona:

com os parâmetros: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - resultado: -1 com código de erro: 5115

com parâmetros: 0, 1 - o resultado é positivo

É muito estranho que o Átomo produza o mesmo erro cerca do dobro.

Teremos que verificar isso.

 
Renat Fatkhullin:

Que Atom dê o mesmo erro sobre o dobro é muito estranho.

Também não suporta o dobro.

É estranho, por si só, exigir tal apoio do terminal. Meu arquivo .cl não tem o dobro e eu não estou usando OpenCL para cálculos científicos precisos.

Além disso, não é um Átomo antigo, mas um moderno com uma GPU separada.

 
Renat Fatkhullin:

Seu cartão não suporta dupla contagem

Vamos perguntar ao próprio dispositivo:

void OnStart() {
   int clCtx=CLContextCreate(0);
   if(clCtx == -1) Print("ERROR in CLContextCreate");
   string str;
   if(CLGetInfoString(clCtx,CL_DEVICE_NAME,str))       Print("OpenCL device name: ",str);
   if(CLGetInfoString(clCtx,CL_DEVICE_EXTENSIONS,str)) Print("OpenCL device ext: ",str);
   CLContextFree(clCtx); }

A resposta do tanque:


Nome do dispositivo OpenCL: Intel(R) HD Graphics 4400

Dispositivo OpenCL externo: cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_ctz cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_gl_gl_sharing cl_khr_gl_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir


De fato, não há apoio para cl_khr_fp64

Não consigo encontrar a folha de dados oficial daIntel HD Graphics 4400 com informações sobre a falta de dupla precisão na rede para ter certeza de que não se trata de um problema de driver.

 

A única maneira de determinar se uma placa de vídeo tem FP64 é usar benchmarks esquerdinos:

https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400

A propósito, o coprocessador gráfico de Renata também parece estar sem o apoio da FP64:

https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630

Renat, você pode executar meu script acima para determinar se seu IGP suporta dupla precisão?

Se sim, então ficará claro por que seu teste de desempenho foi bem sucedido.

Talvez, então, tente a opção de converter matrizes mqlrates para int int na CPU antes de enviá-las ao OpenCL, multiplicando-as por Dígitos. O consumo de memória é reduzido pela metade. Depois disso, brincar com vetores ou tentar não errar ao usar flutuadores. Em princípio, a precisão dos Dígitos+1 indicadores deve ser mais que suficiente.

A data também pode ser facilmente convertida em int, se 1440 minutos no dia estiverem nos primeiros 12 bits (ou nos primeiros 2 bytes), e os dias estiverem em bits altos. O ganho de int vs. duplicação de velocidade deve ser suficiente para cobrir as funções personalizadas do iTim em kernels.

Главная
Главная
  • askgeek.io
Сравнительный анализ видеокарт Intel HD Graphics 515 и Intel UHD Graphics 630 по всем известным характеристикам в категориях: Общая информация, Технические характеристики, Видеовыходы и порты, Совместимость, размеры, требования, Поддержка API, Память, Поддержка технологий. Анализ производительности видеокарт по бенчмаркам: PassMark - G2D Mark...
Razão: