Eu já vi muitas publicações em periódicos de Física Computacional usarem métricas diferentes para o desempenho de seu código. Especialmente para o código GPGPU, parece haver uma grande variedade de resultados de tempo publicados pelas pessoas. Em particular, eu já vi:
- Comparações de (essencialmente) executando
time
nas versões GPU e CPU e relatando uma média - Comparações de dados de criação de perfil em cada função de GPU / CPU chamada (portanto, cronometrando a execução
main
e todas as funções chamadas a partir dele, mas ignorando o tempo de inicialização do driver) - Comparações de dados de criação de perfil para várias funções relevantes, ignorando coisas como transferências de memória (no barramento PCI-E, neste caso), E / S para o disco, transformando os dados de um formato para outro, etc.
- Comparações de dados de criação de perfil para apenas uma função (por exemplo, comparando apenas o tempo para fazer atualizações de rotação em uma CPU versus GPU Quantum Monte Carlo) e ignorando coisas como tempo de transferência de memória, E / S para disco, configurando o Hamiltoniano / diagonalizando-o etc
Meu sentimento é que a primeira opção é a mais 'honesta' das quatro, embora eu possa ver os méritos da segunda e terceira também. É um pouco ridículo relatar uma diferença de tempo de execução de 5s quando 4,99s eram a diferença nas implementações de E / S entre idiomas ou Infiniband vs Gigabit. A última opção parece um pouco "superficial" para mim, pois, a menos que essa função seja o ponto problemático de todo o programa que relata informações sobre ela, não refletirá o desempenho que alguém que replicaria meus resultados veria. Qual dessas abordagens é mais direta? Idealmente, um artigo conteria tudo isso, mas no caso de uma limitação de figuras / comprimento, qual é / é mais valiosa, honesta e relevante para fornecer?
matlab
ainda relatados,flops
contagem após cada comando ... Atualmente, temos CPUS, GPGPUS, clusters, nuvens multicore, caches L1 / L2 / L3, ... Eficiência é determinada pela capacidade de mapear um algoritmo à arquitetura hw / sw fornecida. É tolice tentar condensar tudo em uma única figura, mas, no entanto, devemos ser capazes de introduzir uma ordem e dizer, em algumas condições determinadas e bem definidas, quem é mais rápido.Geralmente, é possível relatar a ponta do iceberg de todo o trabalho e compromissos que foram inseridos em um software. O desempenho dos relatórios é bom, mas o verdadeiro problema é quando o código é acessado livremente na Internet, assim, qualquer pessoa interessada pode avaliar e reproduzir os resultados.
Idealmente, se você lançar o software, também poderá disponibilizar os testes que geram os dados apresentados em um documento.
fonte