Medição de tempo

Freqüentemente precisamos medir o tempo de execução de um programa, especialmente quando queremos mostrar que um programa em GPU é mais rápido que um em CPU. A maioria das funções que a linguagem C oferece não servem a esse propósito, já que medem o tempo em segundos, e um programa para GPU raramente completa um segundo de execução. As bibliotecas CUDA oferecem um recurso simples para fazer essa medição, em unidades de milissegundos. Eis um exemplo de código:

# include <stdlib.h>

# include <stdio.h>

# include <cutil.h>

int main()

{

float tempo;

unsigned int timer = 0;

CUT_SAFE_CALL( cutCreateTimer( &timer));

CUT_SAFE_CALL( cutStartTimer( timer));

// Região de execução: aqui vai o trecho de código cujo

// tempo de execução queremos medir.

tempo = CUT_SAFE_CALL( cutGetTimerValue(timer));

printf(“A execução durou %5.3f milissegundos\n”, tempo);

CUT_SAFE_CALL(cutDeleteTimer(timer));

}

Parte ou todo esse roteiro não funcionou pra você? Deixe comentário!

2 Respostas para Medição de tempo

  1. Alexsander disse:

    Mas para medir e comparar os tempos de execução na CPU e na GPU, precisamos medir o tempo da MESMA forma, senão a comparação não é válida.
    Essa medição não pode ser baseado no tempo global do sistema, pois o sistema operacional pode escalonar outras tarefas durante a execução do seu kernel/programa, e medindo o tempo global, o tempo de execução destas outras tarefas será contabilizado no tempo de execução do seu kernel/programa, certo?
    Como vocês costumam resolver isto?
    Como vocês costumam medir o tempo na CPU?

  2. Se você deseja medir o tempo em CPU e GPU da mesma forma, então basta garantir a sincronização de threads após lançamento do kernel e medir normalmente com sua estratégia de métrica em CPU.

    Chamada cudaThreadSynchronize()

    Cuidado que isso pode gerar stall em GPU e conseguinte perda de desempenho.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Gravatar
WordPress.com Logo

Please log in to WordPress.com to post a comment to your blog.

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.