Pergunta

Estou tentando otimizar um aplicativo na modelagem 3D em tempo real. A parte de compute da aplicação é quase inteiramente na GPU na CUDA. O aplicativo requer a solução de uma pequena (6x6) Double Precision Symmetric Positivo Sistema linear definido= B 500+ vezes por segundo. Atualmente, isso está sendo feito com uma biblioteca de álgebra linear baseada em CPU eficiente usando Cholesky, mas exige a cópia de dados da CPU - GPU e de volta para a GPU centenas de vezes por segundo e a sobrecarga do kernel é lançada a cada vez.

Como posso calcular a solução para o sistema linear na GPU apenas sem ter que tirar os dados na CPU? Eu li um pouco sobre a Biblioteca Magma, mas parece usar algoritmos híbridos em vez de GPU apenas algoritmos.

Estou preparado para o fato de que a solução de um sistema linear individual na GPU será muito mais lenta do que com a biblioteca baseada em CPU existente, mas eu quero ver se isso pode ser compensado removendo o A comunicação de dados entre o host e o dispositivo e a sobrecarga do kernel lança centenas de vezes por segundo. Se não há GPU apenas lapack - como alternativa lá fora, como eu iria implementar algo para resolver este caso de 6x6 específico na GPU apenas? Poderia ser feito sem um enorme investimento em tempo com bibliotecas GPU Blas, por exemplo?

Foi útil?

Solução

Nvidia postou código para um lotado Ax= B solucionador para o site do desenvolvedor registrado no ano passado. Este código funciona para matrizes genéricas, e deve funcionar bem o suficiente para suas necessidades, desde que você possa expandir as matrizes simétricas para matrizes completas (que não deve ser um problema para um 6x6?). Como o código executa girando, o que é desnecessário para matrizes positivas definidas, não é ideal para o seu caso, mas você pode modificá-lo para seus fins como o código está sob uma licença BSD.

O site do desenvolvedor padrão da NVIDIA está experimentando alguns problemas no momento. Aqui está como você pode baixar o código de solucionador em lotes neste momento:

(1) Ir para http://www.nvidia.com/content /cuda/cuda-toolkit.html

(2) Se você tiver uma conta NVDeveloper existente (por exemplo, por parceiros.nvidia.com), clique no link verde "Login to nvdeveloper" na metade direita da tela. Caso contrário, clique em "Junte-se ao NVDeveloper" para solicitar uma nova conta; solicitações de novas contas são normalmente aprovadas dentro de um dia útil.

(3) Faça o login no prompt com seu endereço de e-mail e senha

(4) Há uma seção no lado direito intitulado "Mais recentes downloads". O quinto item do topo é "solucionário em lotes". Clique nisso e ele trará você para a página de download para o código.

(5) Clique no link "Download" e clique em "Aceitar" para aceitar os termos da licença. Seu download deve começar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top