12

Prática de Análise Comparativa de Eficiência Computacional

AI999第4课:现代计算底座与张量化并行演化
00:00

Esta página põe a «comparação de eficiência computacional» em prática de forma reproduzível:comparar, numa mesma tarefa evolutiva, a eficiência ponta a ponta da iteração serial indivíduo a indivíduo em CPU tradicional com o processamento em lote tensorial na GPU via EvoX. O objetivo não é memorizar a conclusão de que «a GPU é mais rápida», mas compreender de onde vem exatamente o ganho de velocidade trazido pelo paralelismo tensorial, qual é o seu custo e onde estão os seus limites.

Duas linhas de base, uma mesma tarefa

  • Linha de base serial em CPU: utiliza um laço para chamar a função de avaliação indivíduo a indivíduo, exigindo N agendamentos independentes, atualizações de estado e agregação de resultados por geração. O controle do laço, a sobrecarga do interpretador e os acessos dispersos à memória diluem o poder computacional efetivo; quanto mais indivíduos, maior a proporção desses custos «não computacionais».
  • Implementação de comparação com tensores na GPU: o EvoX organiza a população, as entradas de avaliação e o estado de execução como tensores, executando avaliações e operadores em lote na GPU, de modo que uma única chamada cobre todo o conjunto de candidatos, reduzindo drasticamente os laços seriais e o número de agendamentos.
Comparação de eficiência computacional: laço serial em CPU vs. processamento em lote tensorial na GPUProtocolo de medição: problema, tamanho da população, gerações e semente aleatória fixos · aquecimento + sincronização do dispositivo antes de cronometrarCPU serialProcessamento em lote na GPU1,000,750,500,250Tempo por geração (valor relativo)Base 1,0×Aceleração ≈2,2×Aceleração ≈4,5×Aceleração ≈7,1×Laço serial em CPUProcessamento em lote na GPU b=64Processamento em lote na GPU b=256Processamento em lote na GPU b=1024Ganhos: paralelismo em lote · operadores tensoriais · paralelismo no dispositivoRestrições: tamanho do lote · custos de cópia e de lançamento de kernelsCom lotes muito pequenos, a proporção de custos fixos aumenta e a aceleração é comprimida; confirme primeiro se a função de avaliação pode ser vetorizada em lote e só depois compare as implementações em CPU e GPU.

Protocolo de medição: tornar a comparação reproduzível

Uma comparação reproduzível devefixar o problema, o tamanho da população, o número de gerações e a semente aleatória, e então registrar: o tempo real (wall-clock) por geração, o tempo total, a taxa de transferência (avaliações/segundo), a aceleração, além da utilização da GPU e do uso de memória de vídeo. Antes de cronometrar, é necessárioaquecimentopara eliminar o efeito da primeira compilação e da alocação de memória de vídeo, e realizar, nos pontos de medição,sincronização do dispositivo, contabilizando separadamente o tempo de computação e o tempo de transferência de dados entre host e dispositivo. A ausência de qualquer uma dessas etapas pode distorcer a aceleração obtida.

De onde vem a diferença e a que restrições está sujeita

  • Origem dos ganhos: o paralelismo em lote, os operadores tensoriais e o paralelismo no dispositivo permitem que uma única chamada processe todo o conjunto de candidatos, concluindo mais avaliações por unidade de tempo.
  • Condições restritivas: o tamanho do lote, a dimensionalidade do problema, o grau de vetorização da função de avaliação, o custo de cópia host–dispositivo e o custo de lançamento de kernels afetam todos a aceleração final. Lotes muito pequenos têm os ganhos consumidos pelo custo de lançamento; se a função de avaliação não puder ser vetorizada, o processamento em lote dificilmente terá efeito.

Conclusões práticas

A ordem correta é:primeiro verificar se a função de avaliação pode ser processada em lote e só depois comparar as implementações em CPU e GPU. A vantagem de eficiência deve, em última análise, traduzir-se em «obter mais gerações ou mais soluções candidatas com o mesmo orçamento computacional», e, com base nisso, decidir a forma de implantação e o desenho experimental, em vez de simplesmente perseguir um número de aceleração vistoso.