Usage Examples

The following show benchmarking library usage examples.

Enabling Data-Collection and Reporting

#include ”nvplayfair.h”
 
typedef struct {
    uint32_t fps;
    uint32_t numOfSamples;
    ...
} testArgs_t;
 
int main(int argc, char **argv)
{   
    NvpPerfData_t latencies;
    uint64_t startTimeMark, endTimeMark;
    testArgs_t *testArgs = parse_cli_args();
 
    /* Setup */
    NVP_CHECKERR_EXIT(NvpConstructPerfData(&latencies, testArgs->numOfSamples, "myLatencies.csv"));
    ...
 
    for (uint32_t i = 0U; i < testArgs->numOfSamples; ++i) {
        startTimeMark = NvpGetTimeMark();
 
        /* Perform required functions */
        ...
 
        endTimeMark = NvpGetTimeMark();
        NVP_CHECKERR_EXIT(NvpRecordSample(&latencies, startTimeMark, endTimeMark));
    }
 
    /* Print report */
    NVP_CHECKERR_EXIT(NvpPrintStats(&latencies, NULL, USEC, ”My Test Latencies”));
    NVP_CHECKERR_EXIT(NvpDumpData(&latencies));
 
    /* Cleanup */
    NVP_CHECKERR_EXIT(NvpDestroyPerfData(&latencies));
 
    return 0;
}

Adding Rate-Limit to a Benchmark

#include ”nvplayfair.h”
 
typedef struct {
    uint32_t fps;
    uint32_t numOfSamples;
    ...
} testArgs_t;
 
int main(int argc, char **argv)
{
    NvpRateLimitInfo_t rateLimitInfo;
    testArgs_t *testArgs = parse_cli_args();
 
    /* Setup */
    NVP_CHECKERR_EXIT(NvpRateLimitInit(&rateLimitInfo, testArgs->fps));
    ...
 
    NVP_CHECKERR_EXIT(NvpMarkPeriodicExecStart(&rateLimitInfo));
    for (uint32_t i = 0U; i < testArgs->numOfSamples; ++i) {
        /* Perform required functions */
        ...
 
        NVP_CHECKERR_EXIT(NvpRateLimitWait(&rateLimitInfo));
    }
 
    return 0;
}