- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
Trabalhando com OpenCL
Programas em OpenCLsão utilizados para a realização de cálculos sobre placas de vídeo que suportam OpenCL 1.1 ou superior. Placas de vídeo modernas contêm centenas de pequenos processadores especializados que podem executar simultaneamente operações matemáticas simples, com fluxos de dados de entrada. A linguagem OpenCL organiza computação paralela e proporciona maior velocidade para uma certa classe de tarefas.
Em algumas placas de vídeo, o modo com números de tipo double está desativado por padrão, o que leva a o erro de compilação 5105. Para ativar o modo de suporte de números double, no texto do programa OpenCl, é preciso adicionar a diretiva #pragma OPENCL EXTENSION cl_khr_fp64 : enable. No entanto, se a placa de vídeo não suportar double, a desativação dessa diretiva não irá ajudar.
É recomendado escrever o código-fonte OpenCL em arquivos CL separados, que podem então ser ligados ao programa MQL5 usando variáveis de recursos.
Processamento de erros em programas OpenCL
Para obter informações sobre o erro mais recente no OpenCL, use as funções CLGetInfoInteger e CLGetInfoString, que proporcionam um código de erro e uma descrição de texto.
Código do último erro OpenCL: Para obter o erro OpenCL mais recente, use a chamada CLGetInfoInteger. Aqui o parâmetro handle é ignorado, ou seja, não importa (você pode especificar zero). Descrição de erros: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Para o código de erro desconhecido, "unknown OpenCL error N" é retornado, aqui N é o código de erro. Exemplo:
//--- o primeiro identificador de parâmetro é ignorado ao receber o código do último erro
|
Descrição de texto do erro OpenCL: Para obter o erro OpenCL mais recente, use a chamada CLGetInfoString. Aqui é necessário passa o código de erro como parâmetro handle.
Descrição de erros: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Se for passado CL_LAST_ERROR no lugar do código do erro, então a função retornará a descrição do último erro. Exemplo:
//--- obtém o código do último erro OpenCL
|
Atualmente, como explicação do erro, é fornecido o nome da enumeração interna cuja decodificação pode ser encontrada na página https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Por exemplo, se o valor CL_INVALID_KERNEL_ARGS for recebido, a descrição dele será "Returned when enqueuing a kernel when some kernel arguments have not been set or are invalid."
Funções para os programas em execução em OpenCL:
Função |
Ação |
---|---|
Retorna o tipo do manipulador de OpenCL como valor da enumeração ENUM_OPENCL_HANDLE_TYPE |
|
Retorna o valor da propriedade de uma integer para um objeto ou dispositivo OpenCL |
|
Cria um contexto OpenCL |
|
Remove um contexto OpenCL |
|
Receives device property from OpenCL driver |
|
Cria um programa OpenCL a partir de um código fonte |
|
Remove um programa OpenCL |
|
Cria uma função de partida OpenCL |
|
Remove uma função de partida OpenCL |
|
Define um parâmetro para a função OpenCL |
|
Define um buffer OpenCL como um parâmetro da função OpenCL |
|
|
|
Cria um buffer OpenCL |
|
Exclui um buffer OpenCL |
|
Grava um array num buffer OpenCL |
|
Lê um buffer de OpenCL num array |
|
Executa um programa OpenCL |
|
|
Também Veja