Por que Mike Pound mede a capacidade computacional de seu computador por suas placas gráficas, e não por seus processadores?

17

Eu estava assistindo recentemente um ótimo vídeo da Computerphile sobre senhas, em que Mike Pound se gabava do supercomputador de sua empresa ter 4 placas gráficas (Titan X, para ser exato).

Como entusiasta da simulação numérica, sonho em construir uma área de trabalho exclusivamente para o trabalho de simulação. Por que Mike Pound mede a capacidade computacional de seu computador por suas placas gráficas e não por seus processadores? Se eu estivesse construindo um computador, com qual item devo me preocupar mais?

Ra31513
fonte
11
Eu não acho que isso seja necessariamente uma questão de gorila x tubarão ... Há uma pergunta simples: "Por que Mike Pound mede a capacidade computacional de seu computador por suas placas gráficas, e não por seus processadores?" que pode ser respondido e sua resposta tem valor construtivo para futuros leitores.
precisa saber é o seguinte
6
@gnat: nem mesmo perto. Obviamente, a questão, na sua forma atual, não é realmente sobre engenharia de software. Mas acho que poderia ser interpretado como uma pergunta sobre a engenharia de sistemas, em que system = "combinação de hardware + software".
Doc Brown
10
Um computador com 4 placas gráficas não equivale a um supercomputador (nem um cluster de 10 Raspberry Pis).
Matti Virkkunen 5/10
10
Isso é apenas uma configuração de PC muito caro, não um supercomputador ...
Bakuriu
3
Não é a resposta simples para "Por que Mike Pound mede a capacidade computacional de seu computador por suas placas gráficas" porque o contexto é quebra de senha? Se o problema do espaço é outra coisa, o que você precisa se preocupar pode ser algo totalmente diferente.
21717 JimmyJames

Respostas:

32

Mike Pound obviamente valoriza a capacidade computacional das placas gráficas mais alta que a capacidade computacional das CPUs.

Por quê? Uma placa de vídeo é basicamente composta de MUITOS processadores simplificados, todos rodando em paralelo. Para alguns trabalhos de simulação, grande parte da computação pode ser facilmente paralelizada e processada em paralelo nos milhares de núcleos disponíveis nas placas gráficas, reduzindo o tempo total de processamento.

qual item devo me preocupar mais? Realmente depende da carga de trabalho de que você gosta e como essa carga de trabalho pode / é paralelizada para uso em uma placa gráfica. Se sua carga de trabalho for um conjunto embaraçosamente paralelo de cálculos simples, e o software for escrito para aproveitar as placas gráficas disponíveis, mais placas gráficas terão um impacto no desempenho muito maior do que mais CPUs (dólar por dólar).

Maybe_Factor
fonte
5
Adicionando alguns números. Digamos que seu computador principal seja um servidor AMD Epyc, 64 núcleos, 128 com Hyperthreading. Digamos também que o "núcleo" da placa gráfica é apenas 10% mais rápido. O ONE TitanX ainda possui 3072 núcleos cuda, aproximadamente 12000 para a instalação. Entendeu a ideia? Se você puder executar o problema na placa de vídeo, ela não será "mais rápida" - é como comparar a velocidade de uma carruagem de cavalos com uma de fórmula 1.
TomTom
3
+1 para 'conjunto embaraçosamente paralelo de cálculos simples', muito bem escrito. Curto e direto ao ponto.
Michael Viktor Starberg
11
@ TomTom: Na verdade, minha comparação preferida é comparar um carro de fórmula 1 (sua CPU) com um trem-bala. Claro, o trem e o carro têm aproximadamente a mesma velocidade. Mas o trem pode transportar 1000 pessoas de A a B mais rápido que o carro de Fórmula 1.
Slebetman 5/10
2
@slebetman o ponto é que a CPU normalmente é muito mais rápida no desempenho de núcleo único (não aproximadamente a mesma velocidade). Talvez possamos comprometer e comparar um avião a jato supersônico com uma locomotiva a vapor.
Darren Ringer
2
Se eu tiver que escolher uma analogia baseada no veículo, diria que a CPU é como um avião de caça (é muito mais rápido para o transporte ponto a ponto e tem muitos truques na manga que outros veículos não podem, mas podem apenas transportar carga muito pequena) enquanto a GPU é como um navio de carga (pode transportar significativamente mais carga em paralelo, mas tem uma rotação muito mais lenta).
Lie Ryan
5

Confira https://developer.nvidia.com/cuda-zone (e google cuda nvidia para muito mais informações). A arquitetura cuda e as placas gráficas topo de linha são bastante usadas para supercomputadores de desktop. Normalmente, você pode montar uma caixa de vários Tflop por menos de US $ 10.000 (usd) usando componentes de caixa branca disponíveis no mercado.

Então...

Como entusiasta de simulação numérica, sonho em construir uma área de trabalho exclusivamente para trabalhos de simulação

... cuda é de longe o melhor jogo da cidade para você. Talvez tente perguntar novamente em /scicomp// ou em outro site da stackexchange, mais diretamente envolvido com esse tipo de coisa.

(A propósito, suponho que você se sinta à vontade com a idéia de que estamos falando de programação massivamente paralela aqui, portanto, talvez você precise se familiarizar com esse paradigma para o design de algoritmos.)

John Forkosh
fonte
E estamos de volta a Ordos, como sempre.
Michael Viktor Starberg 5/10
2
@MichaelViktorStarberg Eu sou o único que não está entendendo a referência do Ordos?
precisa saber antes de começar
Receio que você seja ...: /
Ismael Miguel
4
@MarnixKlooster: Eu tive que procurar no Google "Ordos". Não tenho certeza do que uma "cidade fantasma" na China tem a ver com supercomputadores ou teraflops.
Robert Harvey
@MarnixKlooster Você realmente não é.
precisa saber é o seguinte
2

Se eu estava construindo um computador, com qual item devo me preocupar mais?

Do ponto de vista prático, você provavelmente deve prestar bastante atenção à placa-mãe e à CPU, dada a relativa dificuldade de atualização em comparação à GPU. Após a compra, é um momento terrível para descobrir que você não tem espaço para quatro GPUs ou um processador rápido o suficiente para mantê-los todos ocupados.

Você também deve estar ciente de que o desempenho da GPU é mais frequentemente relatado em FLOPs de precisão única e diminui bastante na precisão dupla. Se você precisar de precisão extra em suas simulações, acabará bem abaixo da velocidade anunciada.

Para as corridas de engenharia de software

Na verdade, existem duas preocupações principais do ponto de vista de software, o gargalo de Von Neumann e o modelo de programação. A CPU possui um acesso bastante bom à memória principal, a GPU possui uma grande quantidade de memória mais rápida integrada. Não é de se estranhar que o tempo em que os dados entram e saem da GPU nega completamente qualquer ganho de velocidade. Em geral, a CPU é vencedora em computação moderada em grandes quantidades de dados, enquanto a GPU se destaca em computação pesada em quantidades menores. Tudo isso nos leva ao modelo de programação.

Em um nível alto, o problema é o antigo e honrado debate MIMD / SIMD. Os sistemas de instrução múltipla / dados múltiplos têm sido os grandes vencedores na computação geral e comercial. Nesse modelo, que inclui o SMP, existem vários processadores, cada um executando seu próprio fluxo de instruções individual. É o equivalente a computador de uma cozinha francesa, onde você direciona um pequeno número de cozinheiros qualificados para concluir tarefas relativamente complicadas.

Os sistemas de instrução única / dados múltiplos, por outro lado, se assemelham mais a uma enorme sala cheia de funcionários acorrentados às suas mesas, seguindo as instruções de um controlador mestre. "Todo mundo ADICIONA as linhas 3 e 5!" Foi usado em sua forma pura no ILLIAC e em alguns sistemas "mini-super", mas perdeu no mercado. As GPUs atuais são primos próximos, são mais flexíveis, mas compartilham a mesma filosofia geral.

Resumir brevemente:

  • Para qualquer operação, a CPU será mais rápida, enquanto a GPU pode executar várias simultaneamente. A diferença é mais aparente com flutuadores de 64 bits.
  • Os núcleos da CPU podem operar em qualquer endereço de memória; os dados da GPU devem ser compactados em uma área menor. Você só ganha se estiver fazendo cálculos suficientes para compensar o tempo de transferência.
  • Código pesado em condicionais normalmente será mais feliz na CPU.
Matthew Gauthier
fonte