Estou procurando exemplos de algoritmos de uso geral (significando não relacionados a gráficos) que comprovadamente executam uma ordem de magnitude mais rapidamente em uma GPU do que em uma CPU. Usarei esses exemplos para pensar criativamente sobre outros algoritmos que eu poderia implementar em uma GPU.
algorithms
performance
gpu
David
fonte
fonte
Respostas:
Algumas coisas vêm imediatamente à mente:
Um cliente Bitcoin especializado foi escrito para usar a GPU para executar os hashes criptográficos. O cliente GPU geralmente executa mais de 10 vezes melhor que o cliente de CPU SMP em um sistema típico de 4 núcleos. O Bitcoin depende da computação de um grande número de hashes criptográficos não relacionados, que podem ser calculados em paralelo.
O projeto Folding @ Home oferece um cliente GPU para suas simulações de dinâmica molecular. Esses cálculos são realizados nas ligações individuais entre átomos em vários ambientes e condições. A matemática é relativamente simples, mas deve ser calculada bilhões de vezes para cada vínculo para simular meros nanossegundos de atividade.
O exemplo popular de "brinquedo" usado pelos proponentes da computação em GPU é o problema do corpo n .
O que essas coisas têm em comum é que elas são embaraçosamente paralelas . Ou seja, o problema pode ser decomposto em um pequeno número de cálculos discretos que são executados várias vezes em um grande conjunto de dados. Esse é o tipo de cálculo em que a GPU é boa.
Cálculos complexos que dependem dos resultados de cálculos anteriores não são adequados para a GPU.
fonte
A transcodificação de vídeo e áudio é um ótimo exemplo. É a conversão de um formato de arquivo para outro. Um exemplo é MPEG-2 a H.264.
Observe que a transcodificação de vídeo não está relacionada aos gráficos 3D. Você não pode codificar um vídeo usando um sombreador de vértice e pixel.
fonte
Mineração Bitcoins usando uma GPU tornou-se muito popular.
Outra aplicação é nos mercados financeiros para negociação em tempo real usando modelos como o Black-Scholes .
fonte
O Jogo da Vida de Conway é um bom exemplo acadêmico.
fonte
Problemas que exigem muita matemática que podem ser feitos simultaneamente. Onde eu trabalhava, queríamos brincar com as GPUs para adicionar / subtrair / multiplicar 2 matrizes para calcular a correlação genética. A primeira vez que ouvi falar de GPUs foi que elas estavam sendo usadas por uma empresa de software finacial para fazer parte de sua modelagem (monte carlo e assim por diante). Seria útil na quebra de código.
As GPUs provavelmente não ajudarão muito com seus problemas de programação mais regulares, onde alguns núcleos da CPU são suficientes, porque a maioria dos programas regulares só precisa executar alguns processos simultâneos. (pode ser diferente com a memória / disco muito mais rápido do que atualmente)
fonte
Talvez eu esteja sendo muito específico em computação matemática / científica / engenharia, mas um que vem à mente é o algoritmo FFT.
Eu já vi esse benchmark da FFT antes e, embora tenha alguns anos, acho que foi bem feito para o que é: http://www.sharcnet.ca/~merz/CUDA_benchFFT
fonte