File size: 4,505 Bytes
563c80f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <nvperf_host.h>

#define RETURN_IF_NVPW_ERROR(retval, actual)                                        \
do {                                                                                \
    NVPA_Status status = actual;                                                    \
    if (NVPA_STATUS_SUCCESS != status) {                                            \
        fprintf(stderr, "FAILED: %s with error %s\n", #actual, NV::Metric::Utils::GetNVPWResultString(status)); \
        return retval;                                                              \
    }                                                                               \
} while (0)

namespace NV {
    namespace Metric {
        namespace Utils {

            static const char* GetNVPWResultString(NVPA_Status status) {
                const char* errorMsg = NULL;
                switch (status)
                {
                case NVPA_STATUS_ERROR:
                    errorMsg = "NVPA_STATUS_ERROR";
                    break;
                case NVPA_STATUS_INTERNAL_ERROR:
                    errorMsg = "NVPA_STATUS_INTERNAL_ERROR";
                    break;
                case NVPA_STATUS_NOT_INITIALIZED:
                    errorMsg = "NVPA_STATUS_NOT_INITIALIZED";
                    break;
                case NVPA_STATUS_NOT_LOADED:
                    errorMsg = "NVPA_STATUS_NOT_LOADED";
                    break;
                case NVPA_STATUS_FUNCTION_NOT_FOUND:
                    errorMsg = "NVPA_STATUS_FUNCTION_NOT_FOUND";
                    break;
                case NVPA_STATUS_NOT_SUPPORTED:
                    errorMsg = "NVPA_STATUS_NOT_SUPPORTED";
                    break;
                case NVPA_STATUS_NOT_IMPLEMENTED:
                    errorMsg = "NVPA_STATUS_NOT_IMPLEMENTED";
                    break;
                case NVPA_STATUS_INVALID_ARGUMENT:
                    errorMsg = "NVPA_STATUS_INVALID_ARGUMENT";
                    break;
                case NVPA_STATUS_INVALID_METRIC_ID:
                    errorMsg = "NVPA_STATUS_INVALID_METRIC_ID";
                    break;
                case NVPA_STATUS_DRIVER_NOT_LOADED:
                    errorMsg = "NVPA_STATUS_DRIVER_NOT_LOADED";
                    break;
                case NVPA_STATUS_OUT_OF_MEMORY:
                    errorMsg = "NVPA_STATUS_OUT_OF_MEMORY";
                    break;
                case NVPA_STATUS_INVALID_THREAD_STATE:
                    errorMsg = "NVPA_STATUS_INVALID_THREAD_STATE";
                    break;
                case NVPA_STATUS_FAILED_CONTEXT_ALLOC:
                    errorMsg = "NVPA_STATUS_FAILED_CONTEXT_ALLOC";
                    break;
                case NVPA_STATUS_UNSUPPORTED_GPU:
                    errorMsg = "NVPA_STATUS_UNSUPPORTED_GPU";
                    break;
                case NVPA_STATUS_INSUFFICIENT_DRIVER_VERSION:
                    errorMsg = "NVPA_STATUS_INSUFFICIENT_DRIVER_VERSION";
                    break;
                case NVPA_STATUS_OBJECT_NOT_REGISTERED:
                    errorMsg = "NVPA_STATUS_OBJECT_NOT_REGISTERED";
                    break;
                case NVPA_STATUS_INSUFFICIENT_PRIVILEGE:
                    errorMsg = "NVPA_STATUS_INSUFFICIENT_PRIVILEGE";
                    break;
                case NVPA_STATUS_INVALID_CONTEXT_STATE:
                    errorMsg = "NVPA_STATUS_INVALID_CONTEXT_STATE";
                    break;
                case NVPA_STATUS_INVALID_OBJECT_STATE:
                    errorMsg = "NVPA_STATUS_INVALID_OBJECT_STATE";
                    break;
                case NVPA_STATUS_RESOURCE_UNAVAILABLE:
                    errorMsg = "NVPA_STATUS_RESOURCE_UNAVAILABLE";
                    break;
                case NVPA_STATUS_DRIVER_LOADED_TOO_LATE:
                    errorMsg = "NVPA_STATUS_DRIVER_LOADED_TOO_LATE";
                    break;
                case NVPA_STATUS_INSUFFICIENT_SPACE:
                    errorMsg = "NVPA_STATUS_INSUFFICIENT_SPACE";
                    break;
                case NVPA_STATUS_OBJECT_MISMATCH:
                    errorMsg = "NVPA_STATUS_OBJECT_MISMATCH";
                    break;
                case NVPA_STATUS_VIRTUALIZED_DEVICE_NOT_SUPPORTED:
                    errorMsg = "NVPA_STATUS_VIRTUALIZED_DEVICE_NOT_SUPPORTED";
                    break;
                default:
                    break;
                }

                return errorMsg;
            }
        }
    }
}