Eis o que você pode fazer com OpenCL diretamente no MetaTrader 5 sem DLLs - página 15
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
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
beta 2545, versão 2560.
Sempre que o roteiroé executado pela primeira vez:
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
e agora mesmo isso 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 - resultado: positivo
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:
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.
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.
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.
Seu cartão não suporta dupla contagem
Vamos perguntar ao próprio dispositivo:
A resposta do tanque:
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.