Eis o que você pode fazer com OpenCL diretamente no MetaTrader 5 sem DLLs - página 5
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
Neste contexto, a AMD parece vantajosa não apenas devido aos cálculos matemáticos obviamente mais rápidos (as fazendas de mineração são geralmente construídas sobre a AMD), mas também por sua estratégia de padrões abertos (elas se abriram e estão promovendo muito para o público). A introdução do OpenCL 2.0 nos cartões AMD aproximou muito esta especificação das capacidades da CUDA e agora não vale a pena lançar as bases para a CUDA.
Essa é uma informação útil, enquanto há cerca de 7 anos eu brincava com a CUDA e achava que ela ainda governava o jogo.
Minha pergunta é: e quanto aos depuradores para OpenCL hoje em dia? Não estou me referindo ao terminal MT5, mas ao terminal MT5 em geral. Até agora, eu só vi um depurador da Intel como plugin do Visual Studio e um depurador autônomo (depricated) da mesma empresa. Mas parece que são os processadores e gráficos incorporados da Intel que se destinam a esta finalidade. Eu não entendo bem como depurar código paralelo - para mim, ainda é apenas uma caixa preta.
Você só pode trabalhar com a CUDA para si mesmo ou para áreas específicas onde você pode exigir a presença explícita de cartões Nvidia.
Sim, a CUDA costumava ter mais características. Entretanto, com o hardware da AMD saindo com OpenCL 2.0 e a nova versão do OpenCL 2.1, não faz sentido ficar sentado sob o bloqueio do fornecedor. Especialmente quando esse fornecedor também diminui a funcionalidade.
Em termos de cobertura máxima, há apenas uma opção - OpenCL, que também funciona bem em processadores normais. Ou seja, você não precisa exigir a presença incondicional da GPU ou escrever duas versões de código para a GPU e a CPU. Uma vez escrito, o código OpenCL funcionará em diferentes configurações.
A CUDA/OpenCL só pode ser depurada em depuradores especializados. Aqui não pode haver milagre.
no exemplo
Nas configurações com um dispositivo disponível para CPU, é exibido "OpenCL não encontrado".
Caso contrário.
obras
*O problema é a seleção padrão do dispositivo
Podemos ter tudo isso de uma forma agradável, sem todas as citações? É muito inconveniente para a percepção e a criação.
E para redes neurais devemos ter classes padrão, e é possível usar o opcl instantaneamente) como o wellslab
"#define HL2Count " + (string)hl2NeuronCount + " \r\n"
//------------------------------------------------------------------------------------
"#define NeuronSensitivity " + (string)NeuronSensitivity_P + " \r\n"
//------------------------------------------------------------------------------------
"#define sampleCount " + (string)sampleCount + " \r\n"
//------------------------------------------------------------------------------------
"#define signalCount " + (string)signalCount + " \r\n"
//------------------------------------------------------------------------------------
"#define StrArrSaSize " + (string)(sizeof(ArrSample) / sizeof(float)) + "\r\n"
"typedef struct{float C[StrArrSaSize];} ArrSa; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrWeSize " + (string)(sizeof(ArrWe) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrWeSize];} ArrWe; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrCrSize " + (string)(sizeof(ArrCr) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrCrSize];}ArrCr; \r\n"
//------------------------------------------------------------------------------------
"#define Spread " + (string)(Spread_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
"#define Point " + (string)Point() + " \r\n"
"#define SL " + (string)(StopLoss_P * Point()) + " \r\n"
"#define TP " + (string)(TakeProfit_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
" \r\n"
"__kernel void Work(__global ArrSa *Sample, \r\n"
" __global ArrWe *Weights, \r\n"
" __global ArrCr *Result) \r\n"
"{ \r\n"
" int thread = get_global_id(0); \r\n"
" \r\n"
" //------------------Переменные нейронной сети---------------------------------\r\n"
Podemos ter tudo isso de uma forma agradável, sem todas as citações? É constrangedor para a percepção e criação.
E para redes neurais devemos ter classes padrão, e é possível usar o opcl instantaneamente) como o wellslab
Esta é uma demonstração não só dos cálculos da GPU no código MQL5, mas também das capacidades gráficas do terminal:
O código-fonte completo como um roteiro está anexado. O erro no OpenCL 1.2 foi corrigido.
Irá para a nuvem para os agentes?
Irá para a nuvem para os agentes?
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Aqui está o que você pode fazer com OpenCL diretamente no terminal MetaTrader 5 sem nenhuma DLL
Renat Fatkhullin, 2016.12.10 14:49
Em breve permitiremos o OpenCL em MQL5 Cloud Network pelo menos para implementações de CPU.Tudo ótimo, mas! Há um grande problema com OCL e em geral com todos os meios de paralelização - muito poucos algoritmos podem ser efetivamente paralelizados. Por que nos exemplos de computação paralela tão populares estão a simulação de ondas, bola caindo sobre uma pirâmide com sua destruição, ou seja, tudo que pode ser quebrado em pequenos pedaços e computado em seu próprio processador.
Para os foros/urso, é claro, estas são redes neurais, várias transformações de Fourier, wavelets, filtros, etc., todos perfeitamente paralelos. Mas existem algoritmos lineares que não podem ser paralelos de forma alguma. Como regra, é quando o resultado da próxima etapa do algoritmo é baseado no resultado da etapa anterior.
Escrevi isto para aqueles que estão pensando que eu vou comprar duas placas de vídeo legais e tudo vai funcionar bem no meu testador.