ABERTO CL, Python e paralelização

votos
0

Como entrada em Abrir CL, eu tenho uma pergunta simples compreensão para otimizar computação GPU.

Tanto quanto eu entendi que eu posso fazer isto é uma matriz de 1000 X 1000 e colocar um código em cada pixel, ao mesmo tempo usando uma GPU. E sobre a opção a seguir:

  • Eu tenho 100 vezes de 100 x 100 matrizes e precisa calcular de forma diferente. Então eu preciso
    fazer o serial ou eu posso começar a 100 casos, ou seja, eu começar a 100 Python multiprocesses e cada atirar um cálculo de matriz para a GPU (assumning thetre há recursos suficientes).

  • Contrário, tenho uma matriz de 1000 X 1000 e 100 instância diferente para calcular, eu posso fazer isso como o mesmo tempo ou processamento de série?

Qualquer conselho ou conceito como resolver isso a maneira mais rápida é apreciada

graças Adrian

Publicado 23/04/2014 em 20:15
usuário
Em outras línguas...                            


1 respostas

votos
1

O modelo de execução OpenCL gira em torno de núcleos, que são apenas funções que executam para cada ponto em seu domínio problema. Quando você inicia um kernel para execução no seu dispositivo OpenCL, você define um espaço de índice 1, 2 ou 3-dimensional para este domínio (aka o NDRange ou o tamanho do trabalho global). É inteiramente até você como você mapear o NDRange para o seu problema real.

Por exemplo, você poderia lançar um NDRange que é 100x100x100, a fim de processar 100 conjuntos de 100x100 matrizes (assumindo que eles são todos independentes). Seu kernel, em seguida, define o cálculo para um único elemento de uma dessas matrizes. Alternativamente, você pode lançar 100 núcleos, cada um com 100x100 NDRange para conseguir a mesma coisa. O primeiro é provavelmente mais rápido, uma vez que evita a sobrecarga de lançar vários kernels.

Eu recomendo fortemente tendo um olhar para a especificação OpenCL para mais informações sobre o modelo de execução OpenCL. Especificamente, a seção 3.2 tem uma grande descrição dos principais conceitos que cercam a execução do kernel.

Respondeu 23/04/2014 em 20:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more