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

 
Ashes: Não ajudou.

Diga-nos em pormenor o que fez. Começando com a forma como derrubou o AMD APP SDK.

A propósito, talvez não tenha inserido um parâmetro no script ParallelTester_00-01x na função CLContextCreate() igual a 0 (pode ser executado no host (ou seja, na CPU). Não foi escrito sobre isso no meu posto.

 
Mathemat:
Diga-nos em pormenor o que fez. Começando pela forma como derrubou o AMD APP SDK.

Desinstalou o AMD APP SDK executando o Setup.exe apropriado, Desinstalar. Reiniciado.

Instalado Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe), RunTime apenas. Reiniciado.

Executar MT5 - falhado. Registo fixo sobre o seu conselho. MT5 recarregado - chatice.

Adicionei o caminho seguindo o conselho do mql5 , experimentei-o com e sem aspas, com x64, e x32. Após cada modificação do registo - a minha utilização do MT5 novamente e a minha utilização - os mesmos ovos antigos, apenas uma vista lateral.

Agora o HKEY_LOCAL_MACHINE_MACHINE_SOFTWAREKhronos\OpenCL\Vendors tem este aspecto:

(Predefinição)REG_SZ (valor não atribuído)

C:\Arquivos de programa (x86)\Intel\OpenCL SDK1.5\bin\x86\intelocl.dll REG_DWORD 0x000000000000 (0)

 
Ashes: Neste momento o HKEY_LOCAL_MACHINE_MACHINE`SOFTWAREKhronos\OpenCL_Vendors tem este aspecto:

(Predefinição)REG_SZ (valor não atribuído)

C:\Arquivos de Programas (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

Já procurou lá dentro? Eu, por exemplo, não tenho nada neste caminho (mas descarreguei e instalei apenas o tempo de execução, talvez seja por isso que não).

E em segundo lugar, acabei de fazer intelocl.dll sem o caminho completo. De qualquer modo, foi provavelmente registado durante a instalação em tempo de execução.

P.S. Experimentado com caminhos completos. Metatrader não vê OpenCL com caminhos completos (ambos). Mas se eu definir apenas intelocl.dll como o nome, tudo se torna imediatamente visível, mesmo sem reiniciar o computador.

Não sei como escolher o ficheiro "certo" entre dois ficheiros existentes com o mesmo nome no sistema.

Por favor, informe aqui sobre o processo. Ainda assim, é interessante, talvez haja algumas nuances. Eu próprio tenho vindo a debater-me com isto há muito tempo, e "mexi" no resultado, o que me agrada muito.

P.P.S. A propósito, quando estava no recurso Intel, aconselharam-me a desinstalar o Intel SDK completo e a reinstalá-lo novamente. ou seja, não só desinstalar, mas também entrar no sistema de directórios32 e sysWOW64 e remover tudo o que está relacionado com o intelocl. Estes são intelocl*.dll, opencl*.dll e outros ficheiros. Algures por aqui está http://software.intel.com/en-us/forums/intel-opencl-sdk/. Quando o encontrar, introduzirei uma ligação mais precisa.

Ligações úteis: http://software.intel.com/en-us/articles/opencl-release-notes/

E aqui - especialmente útil: http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, ali os conselhos de Uri Levy (Intel) podem realmente ajudar. De qualquer modo, continua a ser um jogo de pandeiro.

 
MetaDriver (p. 53):

Isto está no CPU (no meu caso é o dispositivo 1):

Puxou o parâmetro CLContextCreate(dispositivo) para o parâmetro Script. Pode espreitar à volta de todas as opções.

O que é interessante é isto:

Este guião sobre o 630 construído de alguma forma não funciona assim. Nenhuma mensagem, entra num laço, carregando a pedra a 100%. E não vai além de um prazo razoável. Mas eu já tenho tempo de execução da Intel.

 
Mathemat:

O que é interessante é como:

Este guião sobre o 630 construído de alguma forma não funciona assim. Nenhuma mensagem, entra num laço, carregando a pedra a 100 por cento. E não vai além de um prazo razoável. Mas eu já tenho tempo de execução da Intel.

Recompilado. Funciona para mim.

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Arquivos anexados:
 
MetaDriver: Recompilei-o. Funciona para mim.

Isso está na CPU?! Se for, estás a assustar-me...

Fiquei entusiasmado demasiado cedo. Corri-o e não fazia qualquer sentido. Nem uma única entrada no diário de bordo da EA. Embora o guião tenha começado e enchido imediatamente toda a rocha. Por outras palavras, bateu em algo, mas não chegou a CLContextCreate() (teria dito algo se tivesse chegado lá, não teria?).

Isto é algo novo. Parece que o tempo de execução da Intel não compreende o código compilado no AMD SDK. Eu defino o OCL_Device para 0 e -1. Sem efeito.

Em geral, é inconveniente que não se possa escolher a plataforma. Quem me dera que fosse possível fazer isso. Estou farto de reinstalar.

 
Mathemat:

Isso está na CPU?! Se for, estás a assustar-me...

Não, no GPU. Mas o dispositivo OpenCL é seleccionável. Aqui na CPU:

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Fiquei entusiasmado demasiado cedo. Corri-o e não fazia qualquer sentido. Nem uma única entrada no diário de bordo da EA. Mas o guião arranca e enche imediatamente toda a rocha. Isto é, bate em algo, mas não chega a CLContextCreate() (se tivesse, diria algo, certo?).

Algo de novo. É como se a Intel não compreendesse o código compilado no AMD SDK. Eu defino o OCL_Device para 0 e -1. Sem efeito.

Em geral, é inconveniente que não se possa seleccionar a plataforma. Seria desejável ter uma tal oportunidade. Estou farto de reinstalar.

É um resgate).

Muito bem, aqui está o código fonte. Faça o que quiser com ele.

O código não é compilado no AMD SDK. Pelo menos o código do OCL faz. O programa OCL é compilado durante a execução do código mql. O ficheiro EX5 do encaixe do OCL apenas compila as funções mql/ocl-driver bridge. Não creio que sejam compilados para códigos de máquina diferentes, dependendo do fabricante do condutor. Embora apenas os criadores possam esclarecer completamente este ponto.

Arquivos anexados:
 
MetaDriver: O código não é compilado no AMD SDK.
É compreensível, eu estava a falar mal (bem, eu não sou um codificador-profissional). Mas ainda depende do fornecedor da "biblioteca" OpenCL (funções internas propriamente ditas, não API).
 
Mathemat:

Já o verificou lá? Eu, por exemplo, não tenho nada do género neste caminho (mas apenas descarreguei e instalei tempo de execução, talvez seja por isso que não há nenhum).

E em segundo lugar, acabei de fazer intelocl.dll sem o caminho completo. Provavelmente foi registado aquando da instalação do runtime de qualquer forma.

...

A intelocl.dll "descoberta" foi uma das primeiras a ser verificada. Há um ficheiro com esse nome tanto em pastas x64 como x86.

 
Ashes: A intelocl.dll "descoberta" foi uma das primeiras a ser verificada. Há um ficheiro com esse nome tanto em pastas x64 como x86.

Não sei o que fazer então. Tenho-me torturado à procura de uma solução até que a Equipa de Apoio me deu uma dica. Provavelmente não é uma solução completa, mas funcionou no meu computador.

Provavelmente a primeira coisa a aprender é como remover limpos vestígios dos SDKs anteriores.