erogol
erogol

Reputation: 13624

How to measure GPU vs CPU performance? Which time measurement functions?

What libraries or functions need to be used for an objective comparison of CPU and GPU performance? What caveat should be warned for the sake of an accurate evaluation?

I using an Ubuntu platform with a device having compute capability 2.1 and working with the CUDA 5 toolkit.

Upvotes: 7

Views: 3480

Answers (1)

Vitality
Vitality

Reputation: 21515

I'm using the following

CPU - return microseconds between tic and toc with 2 microseconds of resolution

#include <sys/time.h>
#include <time.h>

struct timespec  init;
struct timespec  after;

void tic() { clock_gettime(CLOCK_MONOTONIC,&init); }

double toc() {
    clock_gettime(CLOCK_MONOTONIC,&after);
    double us = (after.tv_sec-init.tv_sec)*1000000.0f;
    return us+(after.tv_nsec- init.tv_nsec)/1000.0f;
}

GPU

float time;
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start, 0);

// Instructions

cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);
cudaEventElapsedTime(&time, start, stop);
cout << setprecision (10) << "GPU Time [ms] " << time << endl;

EDIT

For a more complete answer, please see Timing CUDA operations.

Upvotes: 6

Related Questions