Exemplos de algoritmos de uso geral que se beneficiaram da execução em uma GPU? [fechadas]


10

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.


Concatenação de strings, tipo de suspensão
Job

Respostas:


10

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.


Vários clientes BOINC têm suporte a GPU. O SETI @ Home é outro.
Brian Knoblauch

De fato. Existem muitos desses projetos, mas eu não queria fazer disso uma lista abrangente de projetos - apenas para apontar o que eles têm em comum.
greyfade

8

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.


O OP está pedindo exemplos não relacionados a gráficos.
kiamlaluno

6
@kiamlaluno A transcodificação de um vídeo não está relacionada a gráficos, e a transcodificação de áudio, na maioria das vezes, não está. É a conversão de um formato de arquivo para outro. Um exemplo é MPEG-2 a H.264. Não requer a exibição de gráficos para executar.
Thomas Owens

2
@kiamlaluno: 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.
DeadMG

3

Mineração Bitcoins usando uma GPU tornou-se muito popular.

... sistema de dinheiro eletrônico ponto a ponto. A criação e transferência de Bitcoin é baseada em um protocolo criptográfico de código aberto e não é gerenciado por nenhuma autoridade central. Cada bitcoin é subdividido em oito casas decimais, formando 100 milhões de unidades menores chamadas satoshis. Bitcoins podem ser transferidos através de um computador ou smartphone sem uma instituição financeira intermediária.

O processamento de transações de bitcoin é protegido por servidores chamados mineradores de Bitcoin. Esses servidores se comunicam por uma rede baseada na Internet e confirmam as transações adicionando-as a um razão que é atualizado e arquivado periodicamente. Além de arquivar transações, cada nova atualização do razão cria alguns bitcoins recém-criados ...

Outra aplicação é nos mercados financeiros para negociação em tempo real usando modelos como o Black-Scholes .

... Um requisito essencial para a utilização de opções é o cálculo do valor justo. Encontrar maneiras de resolver com eficiência esse problema de preços tem sido um campo ativo de pesquisa há mais de trinta anos e continua sendo o foco da moderna engenharia financeira. À medida que mais computação é aplicada a problemas relacionados a finanças, encontrar maneiras eficientes de implementar esses algoritmos em arquiteturas modernas se torna mais importante.

Este capítulo descreve como as opções podem ser precificadas com eficiência usando a GPU. Realizamos nossas avaliações usando dois modelos de precificação diferentes: o modelo Black-Scholes e os modelos de treliça. Ambas as abordagens são bem mapeadas para a GPU e são substancialmente mais rápidas na GPU do que nas CPUs modernas. Embora ambos também tenham mapeamentos diretos para a GPU, a implementação de modelos de treliça exige trabalho adicional devido às interdependências nos cálculos ...


2

O Jogo da Vida de Conway é um bom exemplo acadêmico.

... O universo do Jogo da Vida é uma grade ortogonal bidimensional infinita de células quadradas, cada uma das quais está em um dos dois estados possíveis, vivos ou mortos. Cada célula interage com seus oito vizinhos, que são as células que são horizontal, vertical ou diagonalmente adjacentes. A cada etapa, ocorrem as seguintes transições:

  1. Qualquer célula viva com menos de dois vizinhos vivos morre, como se causada por subpopulação.
  2. Qualquer célula viva com dois ou três vizinhos vivos vive para a próxima geração.
  3. Qualquer célula viva com mais de três vizinhos vivos morre, como se estivesse superlotada.
  4. Qualquer célula morta com exatamente três vizinhos vivos se torna uma célula viva, como se fosse reprodução.

O padrão inicial constitui a semente do sistema. A primeira geração é criada aplicando as regras acima simultaneamente a todas as células da semente - nascimentos e mortes ocorrem simultaneamente, e o momento discreto em que isso acontece às vezes é chamado de carrapato (em outras palavras, cada geração é uma função pura da anterior). As regras continuam a ser aplicadas repetidamente para criar gerações futuras ...


1

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)


-3

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.