Pergunta

Estou tentando aproveitar o poder da GPU (NVIDIA Quadro NVS140M) para acelerar alguns cálculos da matriz em meu projeto. Estou lendo alguma documentação (guia de programação, guia de práticas recomendadas e manual de referência), mas não tenho certeza de quais seções eu deveria me concentrar. Seria ótimo se eu pudesse receber alguns conselhos sobre isso.

Além disso, estou me perguntando se existem SDKs mantidos de terceiros, como o Cublas.net, que podem simplificar o processo de desenvolvimento do Cublas antes de me manter nos recursos do Cublas oferecido que me ajudariam a alcançar meus objetivos com meu projeto. Mais uma vez, agradecida antecipadamente pelos comentários.

Foi útil?

Solução

A maior parte da documentação que acompanha os downloads do CUDA Toolkit e SDK é sobre CUDA em geral, não especificamente Cublas. Comece com o CUBLAS_Library_2.3.pdf Arquivo Se você vai usar o Cublas-você não precisará escrever seus próprios kernels CUDA. Se você já está usando uma CPU blas, o Cublas não deve ser difícil de pegar. (E se você não estiver, considere tentar uma CPU otimizada antes do Cublas, pois será mais fácil programar).

Se você estiver codificando no .NET, a maneira mais fácil de usar o Cublas é provavelmente via chamadas de velozes da plataforma para o Cublas.dll. Certifique -se de manter reto quais matrizes estão na memória do host (CPU) e que estão na memória do dispositivo (GPU).

Lembre -se de que Cuda & Cublas não são balas mágicas. O desempenho depende de muitos fatores (especialmente transferências no barramento do PCIE), e simplesmente trocar as chamadas do Cublas para chamadas da CPU-BLAS pode não fornecer acelerações. Pode ser necessário fazer alterações mais substanciais em seu próprio código para obter melhorias no desempenho. Esses outros guias que você mencionam são muito úteis para entender a arquitetura CUDA e seus gargalos.

EDIT: Eu não estava claro sobre o limite entre o código do usuário e o código do kernel. Cublas é uma biblioteca de núcleos CUDA pré-construídos e otimizados. Se você precisar apenas da funcionalidade blas, não precisa escrever seus próprios kernels. Em vez disso, basta ligar para as funções do Cublas. Ao ajustar o desempenho, você não precisa ajustar os kernels do Cublas, mas pode ser necessário alterar como e quando você os chama e como usa a memória, para minimizar o número de transferências no barramento PCI Express.

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