Eu sou muito novo na programação GPGPU, então, desculpe-me se a pergunta não for particularmente apropriada. Pelo que entendi, a programação da GPU é um trabalho muito complicado de engenharia, quando comparado à programação usual da CPU. É preciso ter muito cuidado com questões de divergência, lado a lado, alocação de memória fixada e sobreposição de comunicação / computação de dispositivo host.
Depois de fazer um pouco de pesquisa, encontrei a biblioteca de empuxo que parece tentar imitar o C ++ STL. Isso é bem legal. No entanto, com base em minha experiência muito limitada e tendo visto todo o microgerenciamento necessário para obter um bom desempenho, sou um pouco cético em relação ao desempenho. O impulso pode lidar com toda a parte intricada da programação de maneira eficiente? Algumas bibliotecas muito conhecidas, como o PETSc, parecem usar este pacote, o que me faz acreditar que de alguma forma deveria.
Eu queria saber se pessoas com mais experiência em CUDA e impulso poderiam dizer uma palavra ou duas sobre o desempenho do pacote quando comparado à programação CUDA de baixo nível. Quando posso usar o impulso e quando devo voltar para o CUDA?