File: zel_performance_checker.cpp

package info (click to toggle)
level-zero 1.28.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,308 kB
  • sloc: cpp: 149,246; ansic: 16,655; python: 12,807; makefile: 5
file content (52 lines) | stat: -rw-r--r-- 2,392 bytes parent folder | download
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
/*
 * Copyright (C) 2026 Intel Corporation
 *
 * SPDX-License-Identifier: MIT
 *
 * @file zel_performance_checker.cpp
 *
 */
#include "zel_performance_checker.h"

namespace validation_layer
{
    class performanceChecker performance_checker;

    performanceChecker::performanceChecker() {
        enableperformance = getenv_tobool( "ZEL_ENABLE_PERFORMANCE_CHECKER" );
        if(enableperformance) {
            performanceChecker::ZEperformanceChecker *zeChecker = new performanceChecker::ZEperformanceChecker;
            performanceChecker::ZESperformanceChecker *zesChecker = new performanceChecker::ZESperformanceChecker;
            performanceChecker::ZETperformanceChecker *zetChecker = new performanceChecker::ZETperformanceChecker;
            performance_checker.zeValidation = zeChecker;
            performance_checker.zetValidation = zetChecker;
            performance_checker.zesValidation = zesChecker;
            validation_layer::context.validationHandlers.push_back(&performance_checker);
        }
    }

    performanceChecker::~performanceChecker() {
        if(enableperformance) {
            delete performance_checker.zeValidation;
            delete performance_checker.zetValidation;
            delete performance_checker.zesValidation;
        }
    }
    ze_result_t performanceChecker::ZEperformanceChecker::zeCommandListCreateImmediateEpilogue(ze_context_handle_t, ze_device_handle_t, const ze_command_queue_desc_t* descriptor, ze_command_list_handle_t*, ze_result_t result)
    {
        if (result == ZE_RESULT_SUCCESS) {
            if (descriptor->mode & ZE_COMMAND_QUEUE_MODE_SYNCHRONOUS) {
                context.logger->log_performance("Synchronous command queue may cause performance degradation. Consider using asynchronous mode.");
            }
            if (descriptor->flags & ZE_COMMAND_QUEUE_FLAG_IN_ORDER) {
                if (!(descriptor->flags & ZE_COMMAND_QUEUE_FLAG_COPY_OFFLOAD_HINT)) {
                    context.logger->log_performance("In-order command list created without copy offload hint. Consider using copy offload hint for better performance of copy operations.");
                }
            }
            else {
                context.logger->log_performance("Out-of-order command list created. Consider using in-order command lists for better performance.");
            }
        }
        return result;
    }
}