Initial support for oneAPI Level Zero

Change-Id: I221df8427b1844237a4d9d900c58512706b0be0f
This commit is contained in:
Brandon Fliflet
2020-03-06 11:09:57 +01:00
committed by ocldev
parent 612f47ced3
commit 27f4bce42f
277 changed files with 27508 additions and 1 deletions

View File

@@ -0,0 +1,57 @@
#
# Copyright (C) 2019-2020 Intel Corporation
#
# SPDX-License-Identifier: MIT
#
# DO NOT EDIT: Generated from "scripts/templates/CMakeLists.cpp.mako"
set(L0_SRCS_TOOLS_TRACING
${CMAKE_CURRENT_SOURCE_DIR}/tracing.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_barrier_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_barrier_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_cmdlist_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_cmdlist_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_cmdqueue_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_cmdqueue_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_cl_interop_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_cl_interop_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_copy_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_copy_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_device_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_device_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_driver_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_driver_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_event_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_event_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_fence_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_fence_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_global_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_global_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_sampler_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_sampler_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_residency_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_residency_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_image_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_image_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_memory_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_memory_imp.h
${CMAKE_CURRENT_SOURCE_DIR}/tracing_module_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tracing_module_imp.h
)
target_include_directories(${TARGET_NAME_L0}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/
)
target_sources(${TARGET_NAME_L0}
PRIVATE
${L0_SRCS_TOOLS_TRACING}
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
)
# Make our source files visible to parent
set_property(GLOBAL PROPERTY L0_SRCS_TOOLS_TRACING ${L0_SRCS_TOOLS_TRACING})

View File

@@ -0,0 +1,35 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include <level_zero/zet_api.h>
#include <level_zero/zet_tracing.h>
struct _zet_tracer_handle_t {};
namespace L0 {
struct APITracer : _zet_tracer_handle_t {
static APITracer *create();
virtual ~APITracer() = default;
static APITracer *fromHandle(zet_tracer_handle_t handle) { return static_cast<APITracer *>(handle); }
inline zet_tracer_handle_t toHandle() { return this; }
virtual ze_result_t destroyTracer(zet_tracer_handle_t phTracer) = 0;
virtual ze_result_t setPrologues(zet_core_callbacks_t *pCoreCbs) = 0;
virtual ze_result_t setEpilogues(zet_core_callbacks_t *pCoreCbs) = 0;
virtual ze_result_t enableTracer(ze_bool_t enable) = 0;
};
ze_result_t createAPITracer(zet_driver_handle_t hDriver, const zet_tracer_desc_t *desc, zet_tracer_handle_t *phTracer);
struct APITracerContext {
virtual ~APITracerContext() = default;
virtual void *getActiveTracersList() = 0;
virtual void releaseActivetracersList() = 0;
};
} // namespace L0

View File

@@ -0,0 +1,107 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeCommandListAppendBarrier_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendBarrier,
hCommandList,
hSignalEvent,
numWaitEvents,
phWaitEvents);
ze_command_list_append_barrier_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phSignalEvent = &hSignalEvent;
tracerParams.pnumWaitEvents = &numWaitEvents;
tracerParams.pphWaitEvents = &phWaitEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendBarrierCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendBarrierCb_t, CommandList, pfnAppendBarrierCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendBarrier,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phSignalEvent,
*tracerParams.pnumWaitEvents,
*tracerParams.pphWaitEvents);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryRangesBarrier_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numRanges,
const size_t *pRangeSizes,
const void **pRanges,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryRangesBarrier,
hCommandList,
numRanges,
pRangeSizes,
pRanges,
hSignalEvent,
numWaitEvents,
phWaitEvents);
ze_command_list_append_memory_ranges_barrier_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pnumRanges = &numRanges;
tracerParams.ppRangeSizes = &pRangeSizes;
tracerParams.ppRanges = &pRanges;
tracerParams.phSignalEvent = &hSignalEvent;
tracerParams.pnumWaitEvents = &numWaitEvents;
tracerParams.pphWaitEvents = &phWaitEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendMemoryRangesBarrierCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendMemoryRangesBarrierCb_t, CommandList, pfnAppendMemoryRangesBarrierCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryRangesBarrier,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pnumRanges,
*tracerParams.ppRangeSizes,
*tracerParams.ppRanges,
*tracerParams.phSignalEvent,
*tracerParams.pnumWaitEvents,
*tracerParams.pphWaitEvents);
}
__zedllexport ze_result_t __zecall
zeDeviceSystemBarrier_Tracing(ze_device_handle_t hDevice) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnSystemBarrier,
hDevice);
ze_device_system_barrier_params_t tracerParams;
tracerParams.phDevice = &hDevice;
L0::APITracerCallbackDataImp<ze_pfnDeviceSystemBarrierCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceSystemBarrierCb_t, Device, pfnSystemBarrierCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnSystemBarrier,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice);
}

View File

@@ -0,0 +1,27 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeCommandListAppendBarrier_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents);
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryRangesBarrier_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numRanges,
const size_t *pRangeSizes,
const void **pRanges,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents);
__zedllexport ze_result_t __zecall
zeDeviceSystemBarrier_Tracing(ze_device_handle_t hDevice);
}

View File

@@ -0,0 +1,107 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeDeviceRegisterCLMemory_Tracing(ze_device_handle_t hDevice,
cl_context context,
cl_mem mem,
void **ptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnRegisterCLMemory,
hDevice,
context,
mem,
ptr);
ze_device_register_cl_memory_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pcontext = &context;
tracerParams.pmem = &mem;
tracerParams.pptr = &ptr;
L0::APITracerCallbackDataImp<ze_pfnDeviceRegisterCLMemoryCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceRegisterCLMemoryCb_t, Device, pfnRegisterCLMemoryCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnRegisterCLMemory,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pcontext,
*tracerParams.pmem,
*tracerParams.pptr);
}
__zedllexport ze_result_t __zecall
zeDeviceRegisterCLProgram_Tracing(ze_device_handle_t hDevice,
cl_context context,
cl_program program,
ze_module_handle_t *phModule) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnRegisterCLProgram,
hDevice,
context,
program,
phModule);
ze_device_register_cl_program_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pcontext = &context;
tracerParams.pprogram = &program;
tracerParams.pphModule = &phModule;
L0::APITracerCallbackDataImp<ze_pfnDeviceRegisterCLProgramCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceRegisterCLProgramCb_t, Device, pfnRegisterCLProgramCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnRegisterCLProgram,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pcontext,
*tracerParams.pprogram,
*tracerParams.pphModule);
}
__zedllexport ze_result_t __zecall
zeDeviceRegisterCLCommandQueue_Tracing(ze_device_handle_t hDevice,
cl_context context,
cl_command_queue commandQueue,
ze_command_queue_handle_t *phCommandQueue) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnRegisterCLCommandQueue,
hDevice,
context,
commandQueue,
phCommandQueue);
ze_device_register_cl_command_queue_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pcontext = &context;
tracerParams.pcommand_queue = &commandQueue;
tracerParams.pphCommandQueue = &phCommandQueue;
L0::APITracerCallbackDataImp<ze_pfnDeviceRegisterCLCommandQueueCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceRegisterCLCommandQueueCb_t, Device, pfnRegisterCLCommandQueueCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnRegisterCLCommandQueue,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pcontext,
*tracerParams.pcommand_queue,
*tracerParams.pphCommandQueue);
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeDeviceRegisterCLMemory_Tracing(ze_device_handle_t hDevice,
cl_context context,
cl_mem mem,
void **ptr);
__zedllexport ze_result_t __zecall
zeDeviceRegisterCLProgram_Tracing(ze_device_handle_t hDevice,
cl_context context,
cl_program program,
ze_module_handle_t *phModule);
__zedllexport ze_result_t __zecall
zeDeviceRegisterCLCommandQueue_Tracing(ze_device_handle_t hDevice,
cl_context context,
cl_command_queue commandQueue,
ze_command_queue_handle_t *phCommandQueue);
}

View File

@@ -0,0 +1,128 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeCommandListCreate_Tracing(ze_device_handle_t hDevice,
const ze_command_list_desc_t *desc,
ze_command_list_handle_t *phCommandList) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnCreate,
hDevice,
desc,
phCommandList);
ze_command_list_create_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pdesc = &desc;
tracerParams.pphCommandList = &phCommandList;
L0::APITracerCallbackDataImp<ze_pfnCommandListCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListCreateCb_t, CommandList, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pdesc,
*tracerParams.pphCommandList);
}
__zedllexport ze_result_t __zecall
zeCommandListCreateImmediate_Tracing(
ze_device_handle_t hDevice,
const ze_command_queue_desc_t *altdesc,
ze_command_list_handle_t *phCommandList) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnCreateImmediate,
hDevice,
altdesc,
phCommandList);
ze_command_list_create_immediate_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.paltdesc = &altdesc;
tracerParams.pphCommandList = &phCommandList;
L0::APITracerCallbackDataImp<ze_pfnCommandListCreateImmediateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListCreateImmediateCb_t, CommandList, pfnCreateImmediateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnCreateImmediate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.paltdesc,
*tracerParams.pphCommandList);
}
__zedllexport ze_result_t __zecall
zeCommandListDestroy_Tracing(ze_command_list_handle_t hCommandList) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnDestroy, hCommandList);
ze_command_list_destroy_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
L0::APITracerCallbackDataImp<ze_pfnCommandListDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListDestroyCb_t, CommandList, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList);
}
__zedllexport ze_result_t __zecall
zeCommandListClose_Tracing(ze_command_list_handle_t hCommandList) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnClose, hCommandList);
ze_command_list_close_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
L0::APITracerCallbackDataImp<ze_pfnCommandListCloseCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListCloseCb_t, CommandList, pfnCloseCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnClose,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList);
}
__zedllexport ze_result_t __zecall
zeCommandListReset_Tracing(ze_command_list_handle_t hCommandList) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnReset,
hCommandList);
ze_command_list_reset_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
L0::APITracerCallbackDataImp<ze_pfnCommandListResetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListResetCb_t, CommandList, pfnResetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnReset,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList);
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeCommandListCreate_Tracing(ze_device_handle_t hDevice,
const ze_command_list_desc_t *desc,
ze_command_list_handle_t *phCommandList);
__zedllexport ze_result_t __zecall
zeCommandListCreateImmediate_Tracing(ze_device_handle_t hDevice,
const ze_command_queue_desc_t *altdesc,
ze_command_list_handle_t *phCommandList);
__zedllexport ze_result_t __zecall
zeCommandListDestroy_Tracing(ze_command_list_handle_t hCommandList);
__zedllexport ze_result_t __zecall
zeCommandListClose_Tracing(ze_command_list_handle_t hCommandList);
__zedllexport ze_result_t __zecall
zeCommandListReset_Tracing(ze_command_list_handle_t hCommandList);
__zedllexport ze_result_t __zecall
zeCommandListResetParameters_Tracing(ze_command_list_handle_t hCommandList);
}

View File

@@ -0,0 +1,111 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeCommandQueueCreate_Tracing(ze_device_handle_t hDevice,
const ze_command_queue_desc_t *desc,
ze_command_queue_handle_t *phCommandQueue) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandQueue.pfnCreate,
hDevice,
desc,
phCommandQueue);
ze_command_queue_create_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pdesc = &desc;
tracerParams.pphCommandQueue = &phCommandQueue;
L0::APITracerCallbackDataImp<ze_pfnCommandQueueCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandQueueCreateCb_t, CommandQueue, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandQueue.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pdesc,
*tracerParams.pphCommandQueue);
}
__zedllexport ze_result_t __zecall
zeCommandQueueDestroy_Tracing(ze_command_queue_handle_t hCommandQueue) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandQueue.pfnDestroy,
hCommandQueue);
ze_command_queue_destroy_params_t tracerParams;
tracerParams.phCommandQueue = &hCommandQueue;
L0::APITracerCallbackDataImp<ze_pfnCommandQueueDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandQueueDestroyCb_t, CommandQueue, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandQueue.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandQueue);
}
__zedllexport ze_result_t __zecall
zeCommandQueueExecuteCommandLists_Tracing(ze_command_queue_handle_t hCommandQueue,
uint32_t numCommandLists,
ze_command_list_handle_t *phCommandLists,
ze_fence_handle_t hFence) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandQueue.pfnExecuteCommandLists,
hCommandQueue,
numCommandLists,
phCommandLists,
hFence);
ze_command_queue_execute_command_lists_params_t tracerParams;
tracerParams.phCommandQueue = &hCommandQueue;
tracerParams.pnumCommandLists = &numCommandLists;
tracerParams.pphCommandLists = &phCommandLists;
tracerParams.phFence = &hFence;
L0::APITracerCallbackDataImp<ze_pfnCommandQueueExecuteCommandListsCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandQueueExecuteCommandListsCb_t, CommandQueue, pfnExecuteCommandListsCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandQueue.pfnExecuteCommandLists,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandQueue,
*tracerParams.pnumCommandLists,
*tracerParams.pphCommandLists,
*tracerParams.phFence);
}
__zedllexport ze_result_t __zecall
zeCommandQueueSynchronize_Tracing(ze_command_queue_handle_t hCommandQueue,
uint32_t timeout) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandQueue.pfnSynchronize,
hCommandQueue,
timeout);
ze_command_queue_synchronize_params_t tracerParams;
tracerParams.phCommandQueue = &hCommandQueue;
tracerParams.ptimeout = &timeout;
L0::APITracerCallbackDataImp<ze_pfnCommandQueueSynchronizeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandQueueSynchronizeCb_t, CommandQueue, pfnSynchronizeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandQueue.pfnSynchronize,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandQueue,
*tracerParams.ptimeout);
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeCommandQueueCreate_Tracing(ze_device_handle_t hDevice,
const ze_command_queue_desc_t *desc,
ze_command_queue_handle_t *phCommandQueue);
__zedllexport ze_result_t __zecall
zeCommandQueueDestroy_Tracing(ze_command_queue_handle_t hCommandQueue);
__zedllexport ze_result_t __zecall
zeCommandQueueExecuteCommandLists_Tracing(ze_command_queue_handle_t hCommandQueue,
uint32_t numCommandLists,
ze_command_list_handle_t *phCommandLists,
ze_fence_handle_t hFence);
__zedllexport ze_result_t __zecall
zeCommandQueueSynchronize_Tracing(ze_command_queue_handle_t hCommandQueue,
uint32_t timeout);
}

View File

@@ -0,0 +1,358 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryCopy_Tracing(ze_command_list_handle_t hCommandList,
void *dstptr,
const void *srcptr,
size_t size,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryCopy,
hCommandList,
dstptr,
srcptr,
size,
hEvent);
ze_command_list_append_memory_copy_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pdstptr = &dstptr;
tracerParams.psrcptr = &srcptr;
tracerParams.psize = &size;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendMemoryCopyCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendMemoryCopyCb_t, CommandList, pfnAppendMemoryCopyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryCopy,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pdstptr,
*tracerParams.psrcptr,
*tracerParams.psize,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryFill_Tracing(ze_command_list_handle_t hCommandList,
void *ptr,
const void *pattern,
size_t patternSize,
size_t size,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryFill,
hCommandList,
ptr,
pattern,
patternSize,
size,
hEvent);
ze_command_list_append_memory_fill_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pptr = &ptr;
tracerParams.ppattern = &pattern;
tracerParams.ppattern_size = &patternSize;
tracerParams.psize = &size;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendMemoryFillCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendMemoryFillCb_t, CommandList, pfnAppendMemoryFillCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryFill,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pptr,
*tracerParams.ppattern,
*tracerParams.ppattern_size,
*tracerParams.psize,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryCopyRegion_Tracing(ze_command_list_handle_t hCommandList,
void *dstptr,
const ze_copy_region_t *dstRegion,
uint32_t dstPitch,
uint32_t dstSlicePitch,
const void *srcptr,
const ze_copy_region_t *srcRegion,
uint32_t srcPitch,
uint32_t srcSlicePitch,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryCopyRegion,
hCommandList,
dstptr,
dstRegion,
dstPitch,
dstSlicePitch,
srcptr,
srcRegion,
srcPitch,
srcSlicePitch,
hEvent);
ze_command_list_append_memory_copy_region_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pdstptr = &dstptr;
tracerParams.pdstRegion = &dstRegion;
tracerParams.pdstPitch = &dstPitch;
tracerParams.pdstSlicePitch = &dstSlicePitch;
tracerParams.psrcptr = &srcptr;
tracerParams.psrcRegion = &srcRegion;
tracerParams.psrcPitch = &srcPitch;
tracerParams.psrcSlicePitch = &srcSlicePitch;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendMemoryCopyRegionCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendMemoryCopyRegionCb_t, CommandList, pfnAppendMemoryCopyRegionCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryCopyRegion,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pdstptr,
*tracerParams.pdstRegion,
*tracerParams.pdstPitch,
*tracerParams.pdstSlicePitch,
*tracerParams.psrcptr,
*tracerParams.psrcRegion,
*tracerParams.psrcPitch,
*tracerParams.psrcSlicePitch,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopy_Tracing(ze_command_list_handle_t hCommandList,
ze_image_handle_t hDstImage,
ze_image_handle_t hSrcImage,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopy,
hCommandList,
hDstImage,
hSrcImage,
hEvent);
ze_command_list_append_image_copy_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phDstImage = &hDstImage;
tracerParams.phSrcImage = &hSrcImage;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendImageCopyCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendImageCopyCb_t, CommandList, pfnAppendImageCopyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopy,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phDstImage,
*tracerParams.phSrcImage,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopyRegion_Tracing(
ze_command_list_handle_t hCommandList,
ze_image_handle_t hDstImage,
ze_image_handle_t hSrcImage,
const ze_image_region_t *pDstRegion,
const ze_image_region_t *pSrcRegion,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopyRegion,
hCommandList,
hDstImage,
hSrcImage,
pDstRegion,
pSrcRegion,
hEvent);
ze_command_list_append_image_copy_region_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phDstImage = &hDstImage;
tracerParams.phSrcImage = &hSrcImage;
tracerParams.ppDstRegion = &pDstRegion;
tracerParams.ppSrcRegion = &pSrcRegion;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendImageCopyRegionCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendImageCopyRegionCb_t, CommandList, pfnAppendImageCopyRegionCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopyRegion,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phDstImage,
*tracerParams.phSrcImage,
*tracerParams.ppDstRegion,
*tracerParams.ppSrcRegion,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopyToMemory_Tracing(ze_command_list_handle_t hCommandList,
void *dstptr,
ze_image_handle_t hSrcImage,
const ze_image_region_t *pSrcRegion,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopyToMemory,
hCommandList,
dstptr,
hSrcImage,
pSrcRegion,
hEvent);
ze_command_list_append_image_copy_to_memory_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pdstptr = &dstptr;
tracerParams.phSrcImage = &hSrcImage;
tracerParams.ppSrcRegion = &pSrcRegion;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendImageCopyToMemoryCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendImageCopyToMemoryCb_t, CommandList, pfnAppendImageCopyToMemoryCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopyToMemory,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pdstptr,
*tracerParams.phSrcImage,
*tracerParams.ppSrcRegion,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopyFromMemory_Tracing(ze_command_list_handle_t hCommandList,
ze_image_handle_t hDstImage,
const void *srcptr,
const ze_image_region_t *pDstRegion,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopyFromMemory,
hCommandList,
hDstImage,
srcptr,
pDstRegion,
hEvent);
ze_command_list_append_image_copy_from_memory_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phDstImage = &hDstImage;
tracerParams.psrcptr = &srcptr;
tracerParams.ppDstRegion = &pDstRegion;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendImageCopyFromMemoryCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendImageCopyFromMemoryCb_t, CommandList, pfnAppendImageCopyFromMemoryCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendImageCopyFromMemory,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phDstImage,
*tracerParams.psrcptr,
*tracerParams.ppDstRegion,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryPrefetch_Tracing(ze_command_list_handle_t hCommandList,
const void *ptr,
size_t size) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryPrefetch,
hCommandList,
ptr,
size);
ze_command_list_append_memory_prefetch_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pptr = &ptr;
tracerParams.psize = &size;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendMemoryPrefetchCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendMemoryPrefetchCb_t, CommandList, pfnAppendMemoryPrefetchCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemoryPrefetch,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pptr,
*tracerParams.psize);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendMemAdvise_Tracing(ze_command_list_handle_t hCommandList,
ze_device_handle_t hDevice,
const void *ptr,
size_t size,
ze_memory_advice_t advice) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemAdvise,
hCommandList,
hDevice,
ptr,
size,
advice);
ze_command_list_append_mem_advise_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phDevice = &hDevice;
tracerParams.pptr = &ptr;
tracerParams.psize = &size;
tracerParams.padvice = &advice;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendMemAdviseCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnCommandListAppendMemAdviseCb_t, CommandList, pfnAppendMemAdviseCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendMemAdvise,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phDevice,
*tracerParams.pptr,
*tracerParams.psize,
*tracerParams.padvice);
}

View File

@@ -0,0 +1,79 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryCopy_Tracing(ze_command_list_handle_t hCommandList,
void *dstptr,
const void *srcptr,
size_t size,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryFill_Tracing(ze_command_list_handle_t hCommandList,
void *ptr,
const void *pattern,
size_t patternSize,
size_t size,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryCopyRegion_Tracing(ze_command_list_handle_t hCommandList,
void *dstptr,
const ze_copy_region_t *dstRegion,
uint32_t dstPitch,
uint32_t dstSlicePitch,
const void *srcptr,
const ze_copy_region_t *srcRegion,
uint32_t srcPitch,
uint32_t srcSlicePitch,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopy_Tracing(ze_command_list_handle_t hCommandList,
ze_image_handle_t hDstImage,
ze_image_handle_t hSrcImage,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopyRegion_Tracing(ze_command_list_handle_t hCommandList,
ze_image_handle_t hDstImage,
ze_image_handle_t hSrcImage,
const ze_image_region_t *pDstRegion,
const ze_image_region_t *pSrcRegion,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopyToMemory_Tracing(ze_command_list_handle_t hCommandList,
void *dstptr,
ze_image_handle_t hSrcImage,
const ze_image_region_t *pSrcRegion,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendImageCopyFromMemory_Tracing(ze_command_list_handle_t hCommandList,
ze_image_handle_t hDstImage,
const void *srcptr,
const ze_image_region_t *pDstRegion,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendMemoryPrefetch_Tracing(ze_command_list_handle_t hCommandList,
const void *ptr,
size_t size);
__zedllexport ze_result_t __zecall
zeCommandListAppendMemAdvise_Tracing(ze_command_list_handle_t hCommandList,
ze_device_handle_t hDevice,
const void *ptr,
size_t size,
ze_memory_advice_t advice);
} // extern "C"

View File

@@ -0,0 +1,355 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeDeviceGet_Tracing(ze_driver_handle_t hDriver,
uint32_t *pCount,
ze_device_handle_t *phDevices) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGet,
hDriver,
pCount,
phDevices);
ze_device_get_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.ppCount = &pCount;
tracerParams.pphDevices = &phDevices;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetCb_t, Device, pfnGetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGet,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.ppCount,
*tracerParams.pphDevices);
}
__zedllexport ze_result_t __zecall
zeDeviceGetProperties_Tracing(ze_device_handle_t hDevice,
ze_device_properties_t *pDeviceProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetProperties,
hDevice,
pDeviceProperties);
ze_device_get_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppDeviceProperties = &pDeviceProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetPropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetPropertiesCb_t, Device, pfnGetPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppDeviceProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceGetComputeProperties_Tracing(ze_device_handle_t hDevice,
ze_device_compute_properties_t *pComputeProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetComputeProperties,
hDevice,
pComputeProperties);
ze_device_get_compute_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppComputeProperties = &pComputeProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetComputePropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetComputePropertiesCb_t, Device, pfnGetComputePropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetComputeProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppComputeProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceGetMemoryProperties_Tracing(ze_device_handle_t hDevice,
uint32_t *pCount,
ze_device_memory_properties_t *pMemProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetMemoryProperties,
hDevice,
pCount,
pMemProperties);
ze_device_get_memory_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppCount = &pCount;
tracerParams.ppMemProperties = &pMemProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetMemoryPropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetMemoryPropertiesCb_t, Device, pfnGetMemoryPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetMemoryProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppCount,
*tracerParams.ppMemProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceGetCacheProperties_Tracing(ze_device_handle_t hDevice,
ze_device_cache_properties_t *pCacheProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetCacheProperties,
hDevice,
pCacheProperties);
ze_device_get_cache_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppCacheProperties = &pCacheProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetCachePropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetCachePropertiesCb_t, Device, pfnGetCachePropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetCacheProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppCacheProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceGetImageProperties_Tracing(ze_device_handle_t hDevice,
ze_device_image_properties_t *pImageProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetImageProperties,
hDevice,
pImageProperties);
ze_device_get_image_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppImageProperties = &pImageProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetImagePropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetImagePropertiesCb_t, Device, pfnGetImagePropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetImageProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppImageProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceGetSubDevices_Tracing(ze_device_handle_t hDevice,
uint32_t *pCount,
ze_device_handle_t *phSubdevices) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetSubDevices,
hDevice,
pCount,
phSubdevices);
ze_device_get_sub_devices_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppCount = &pCount;
tracerParams.pphSubdevices = &phSubdevices;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetSubDevicesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetSubDevicesCb_t, Device, pfnGetSubDevicesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetSubDevices,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppCount,
*tracerParams.pphSubdevices);
}
__zedllexport ze_result_t __zecall
zeDeviceGetP2PProperties_Tracing(ze_device_handle_t hDevice,
ze_device_handle_t hPeerDevice,
ze_device_p2p_properties_t *pP2PProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetP2PProperties,
hDevice,
hPeerDevice,
pP2PProperties);
ze_device_get_p2_p_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.phPeerDevice = &hPeerDevice;
tracerParams.ppP2PProperties = &pP2PProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetP2PPropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetP2PPropertiesCb_t, Device, pfnGetP2PPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetP2PProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.phPeerDevice,
*tracerParams.ppP2PProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceCanAccessPeer_Tracing(ze_device_handle_t hDevice,
ze_device_handle_t hPeerDevice,
ze_bool_t *value) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnCanAccessPeer,
hDevice,
hPeerDevice,
value);
ze_device_can_access_peer_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.phPeerDevice = &hPeerDevice;
tracerParams.pvalue = &value;
L0::APITracerCallbackDataImp<ze_pfnDeviceCanAccessPeerCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceCanAccessPeerCb_t, Device, pfnCanAccessPeerCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnCanAccessPeer,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.phPeerDevice,
*tracerParams.pvalue);
}
__zedllexport ze_result_t __zecall
zeKernelSetIntermediateCacheConfig_Tracing(ze_kernel_handle_t hKernel,
ze_cache_config_t cacheConfig) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetIntermediateCacheConfig,
hKernel,
cacheConfig);
ze_kernel_set_intermediate_cache_config_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.pCacheConfig = &cacheConfig;
L0::APITracerCallbackDataImp<ze_pfnKernelSetIntermediateCacheConfigCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnKernelSetIntermediateCacheConfigCb_t, Kernel, pfnSetIntermediateCacheConfigCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetIntermediateCacheConfig,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.pCacheConfig);
}
__zedllexport ze_result_t __zecall
zeDeviceSetLastLevelCacheConfig_Tracing(ze_device_handle_t hDevice,
ze_cache_config_t cacheConfig) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnSetLastLevelCacheConfig,
hDevice,
cacheConfig);
ze_device_set_last_level_cache_config_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pCacheConfig = &cacheConfig;
L0::APITracerCallbackDataImp<ze_pfnDeviceSetLastLevelCacheConfigCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceSetLastLevelCacheConfigCb_t, Device, pfnSetLastLevelCacheConfigCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnSetLastLevelCacheConfig,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pCacheConfig);
}
__zedllexport ze_result_t __zecall
zeDeviceGetKernelProperties_Tracing(ze_device_handle_t hDevice,
ze_device_kernel_properties_t *pKernelProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetKernelProperties,
hDevice,
pKernelProperties);
ze_device_get_kernel_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppKernelProperties = &pKernelProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetKernelPropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetKernelPropertiesCb_t, Device,
pfnGetKernelPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetKernelProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppKernelProperties);
}
__zedllexport ze_result_t __zecall
zeDeviceGetMemoryAccessProperties_Tracing(ze_device_handle_t hDevice,
ze_device_memory_access_properties_t *pMemAccessProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnGetMemoryAccessProperties,
hDevice,
pMemAccessProperties);
ze_device_get_memory_access_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.ppMemAccessProperties = &pMemAccessProperties;
L0::APITracerCallbackDataImp<ze_pfnDeviceGetMemoryAccessPropertiesCb_t> api_callbackData;
ZE_GEN_PER_API_CALLBACK_STATE(api_callbackData, ze_pfnDeviceGetMemoryAccessPropertiesCb_t, Device,
pfnGetMemoryAccessPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnGetMemoryAccessProperties,
&tracerParams,
api_callbackData.apiOrdinal,
api_callbackData.prologCallbacks,
api_callbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.ppMemAccessProperties);
}

View File

@@ -0,0 +1,68 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeDeviceGet_Tracing(ze_driver_handle_t hDriver,
uint32_t *pCount,
ze_device_handle_t *phDevices);
__zedllexport ze_result_t __zecall
zeDeviceGetProperties_Tracing(ze_device_handle_t hDevice,
ze_device_properties_t *pDeviceProperties);
__zedllexport ze_result_t __zecall
zeDeviceGetComputeProperties_Tracing(ze_device_handle_t hDevice,
ze_device_compute_properties_t *pComputeProperties);
__zedllexport ze_result_t __zecall
zeDeviceGetMemoryProperties_Tracing(ze_device_handle_t hDevice,
uint32_t *pCount,
ze_device_memory_properties_t *pMemProperties);
__zedllexport ze_result_t __zecall
zeDeviceGetCacheProperties_Tracing(ze_device_handle_t hDevice,
ze_device_cache_properties_t *pCacheProperties);
__zedllexport ze_result_t __zecall
zeDeviceGetImageProperties_Tracing(ze_device_handle_t hDevice,
ze_device_image_properties_t *pImageProperties);
__zedllexport ze_result_t __zecall
zeDeviceGetSubDevices_Tracing(ze_device_handle_t hDevice,
uint32_t *pCount,
ze_device_handle_t *phSubdevices);
__zedllexport ze_result_t __zecall
zeDeviceGetP2PProperties_Tracing(ze_device_handle_t hDevice,
ze_device_handle_t hPeerDevice,
ze_device_p2p_properties_t *pP2PProperties);
__zedllexport ze_result_t __zecall
zeDeviceCanAccessPeer_Tracing(ze_device_handle_t hDevice,
ze_device_handle_t hPeerDevice,
ze_bool_t *value);
__zedllexport ze_result_t __zecall
zeKernelSetIntermediateCacheConfig_Tracing(ze_kernel_handle_t hKernel,
ze_cache_config_t cacheConfig);
__zedllexport ze_result_t __zecall
zeDeviceSetLastLevelCacheConfig_Tracing(ze_device_handle_t hDevice,
ze_cache_config_t cacheConfig);
__zedllexport ze_result_t __zecall
zeDeviceGetKernelProperties_Tracing(ze_device_handle_t hDevice,
ze_device_kernel_properties_t *pKernelProperties);
__zedllexport ze_result_t __zecall
zeDeviceGetMemoryAccessProperties_Tracing(ze_device_handle_t hDevice,
ze_device_memory_access_properties_t *pMemAccessProperties);
}

View File

@@ -0,0 +1,134 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeDriverGet_Tracing(uint32_t *pCount,
ze_driver_handle_t *phDrivers) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGet,
pCount,
phDrivers);
ze_driver_get_params_t tracerParams;
tracerParams.ppCount = &pCount;
tracerParams.pphDrivers = &phDrivers;
L0::APITracerCallbackDataImp<ze_pfnDriverGetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetCb_t, Driver, pfnGetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGet,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.ppCount,
*tracerParams.pphDrivers);
}
__zedllexport ze_result_t __zecall
zeDriverGetProperties_Tracing(ze_driver_handle_t hDriver,
ze_driver_properties_t *properties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetProperties,
hDriver,
properties);
ze_driver_get_properties_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.ppDriverProperties = &properties;
L0::APITracerCallbackDataImp<ze_pfnDriverGetPropertiesCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetPropertiesCb_t, Driver, pfnGetPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetProperties,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.ppDriverProperties);
}
__zedllexport ze_result_t __zecall
zeDriverGetApiVersion_Tracing(ze_driver_handle_t hDrivers,
ze_api_version_t *version) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetApiVersion, hDrivers, version);
ze_driver_get_api_version_params_t tracerParams;
tracerParams.phDriver = &hDrivers;
tracerParams.pversion = &version;
L0::APITracerCallbackDataImp<ze_pfnDriverGetApiVersionCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetApiVersionCb_t, Driver, pfnGetApiVersionCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetApiVersion,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pversion);
}
__zedllexport ze_result_t __zecall
zeDriverGetIPCProperties_Tracing(ze_driver_handle_t hDriver,
ze_driver_ipc_properties_t *pIPCProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetIPCProperties,
hDriver,
pIPCProperties);
ze_driver_get_ipc_properties_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.ppIPCProperties = &pIPCProperties;
L0::APITracerCallbackDataImp<ze_pfnDriverGetIPCPropertiesCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetIPCPropertiesCb_t, Driver, pfnGetIPCPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetIPCProperties,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.ppIPCProperties);
}
__zedllexport ze_result_t __zecall
zeDriverGetExtensionFunctionAddress_Tracing(ze_driver_handle_t hDriver,
const char *pFuncName,
void **pfunc) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetExtensionFunctionAddress,
hDriver,
pFuncName,
pfunc);
ze_driver_get_extension_function_address_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.ppFuncName = &pFuncName;
tracerParams.ppfunc = &pfunc;
L0::APITracerCallbackDataImp<ze_pfnDriverGetExtensionFunctionAddressCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetExtensionFunctionAddressCb_t, Driver, pfnGetExtensionFunctionAddressCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetExtensionFunctionAddress,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.ppFuncName,
*tracerParams.ppfunc);
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeDriverGet_Tracing(uint32_t *pCount,
ze_driver_handle_t *phDrivers);
__zedllexport ze_result_t __zecall
zeDriverGetProperties_Tracing(ze_driver_handle_t hDriver,
ze_driver_properties_t *properties);
__zedllexport ze_result_t __zecall
zeDriverGetApiVersion_Tracing(ze_driver_handle_t hDrivers,
ze_api_version_t *version);
__zedllexport ze_result_t __zecall
zeDriverGetIPCProperties_Tracing(ze_driver_handle_t hDriver,
ze_driver_ipc_properties_t *pIPCProperties);
__zedllexport ze_result_t __zecall
zeDriverGetExtensionFunctionAddress_Tracing(ze_driver_handle_t hDriver,
const char *pFuncName,
void **pfunc);
}

View File

@@ -0,0 +1,388 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeEventPoolCreate_Tracing(ze_driver_handle_t hDriver,
const ze_event_pool_desc_t *desc,
uint32_t numDevices,
ze_device_handle_t *phDevices,
ze_event_pool_handle_t *phEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnCreate,
hDriver,
desc,
numDevices,
phDevices,
phEventPool);
ze_event_pool_create_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pdesc = &desc;
tracerParams.pnumDevices = &numDevices;
tracerParams.pphDevices = &phDevices;
tracerParams.pphEventPool = &phEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolCreateCb_t, EventPool, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pdesc,
*tracerParams.pnumDevices,
*tracerParams.pphDevices,
*tracerParams.pphEventPool);
}
__zedllexport ze_result_t __zecall
zeEventPoolDestroy_Tracing(ze_event_pool_handle_t hEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnDestroy,
hEventPool);
ze_event_pool_destroy_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolDestroyCb_t, EventPool, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool);
}
__zedllexport ze_result_t __zecall
zeEventCreate_Tracing(ze_event_pool_handle_t hEventPool,
const ze_event_desc_t *desc,
ze_event_handle_t *phEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnCreate,
hEventPool,
desc,
phEvent);
ze_event_create_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
tracerParams.pdesc = &desc;
tracerParams.pphEvent = &phEvent;
L0::APITracerCallbackDataImp<ze_pfnEventCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventCreateCb_t, Event, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool,
*tracerParams.pdesc,
*tracerParams.pphEvent);
}
__zedllexport ze_result_t __zecall
zeEventDestroy_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnDestroy,
hEvent);
ze_event_destroy_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventDestroyCb_t, Event, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeEventPoolGetIpcHandle_Tracing(ze_event_pool_handle_t hEventPool,
ze_ipc_event_pool_handle_t *phIpc) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnGetIpcHandle,
hEventPool,
phIpc);
ze_event_pool_get_ipc_handle_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
tracerParams.pphIpc = &phIpc;
L0::APITracerCallbackDataImp<ze_pfnEventPoolGetIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolGetIpcHandleCb_t, EventPool, pfnGetIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnGetIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool,
*tracerParams.pphIpc);
}
__zedllexport ze_result_t __zecall
zeEventPoolOpenIpcHandle_Tracing(ze_driver_handle_t hDriver,
ze_ipc_event_pool_handle_t hIpc,
ze_event_pool_handle_t *phEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnOpenIpcHandle,
hDriver,
hIpc,
phEventPool);
ze_event_pool_open_ipc_handle_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.phIpc = &hIpc;
tracerParams.pphEventPool = &phEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolOpenIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolOpenIpcHandleCb_t, EventPool, pfnOpenIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnOpenIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.phIpc,
*tracerParams.pphEventPool);
}
__zedllexport ze_result_t __zecall
zeEventPoolCloseIpcHandle_Tracing(ze_event_pool_handle_t hEventPool) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.EventPool.pfnCloseIpcHandle,
hEventPool);
ze_event_pool_close_ipc_handle_params_t tracerParams;
tracerParams.phEventPool = &hEventPool;
L0::APITracerCallbackDataImp<ze_pfnEventPoolCloseIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventPoolCloseIpcHandleCb_t, EventPool, pfnCloseIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.EventPool.pfnCloseIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEventPool);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendSignalEvent_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendSignalEvent,
hCommandList,
hEvent);
ze_command_list_append_signal_event_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendSignalEventCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendSignalEventCb_t, CommandList, pfnAppendSignalEventCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendSignalEvent,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendWaitOnEvents_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numEvents,
ze_event_handle_t *phEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendWaitOnEvents,
hCommandList,
numEvents,
phEvents);
ze_command_list_append_wait_on_events_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pnumEvents = &numEvents;
tracerParams.pphEvents = &phEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendWaitOnEventsCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendWaitOnEventsCb_t, CommandList, pfnAppendWaitOnEventsCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendWaitOnEvents,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pnumEvents,
*tracerParams.pphEvents);
}
__zedllexport ze_result_t __zecall
zeEventHostSignal_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnHostSignal,
hEvent);
ze_event_host_signal_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventHostSignalCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventHostSignalCb_t, Event, pfnHostSignalCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnHostSignal,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeEventHostSynchronize_Tracing(ze_event_handle_t hEvent,
uint32_t timeout) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnHostSynchronize,
hEvent,
timeout);
ze_event_host_synchronize_params_t tracerParams;
tracerParams.phEvent = &hEvent;
tracerParams.ptimeout = &timeout;
L0::APITracerCallbackDataImp<ze_pfnEventHostSynchronizeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventHostSynchronizeCb_t, Event, pfnHostSynchronizeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnHostSynchronize,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent,
*tracerParams.ptimeout);
}
__zedllexport ze_result_t __zecall
zeEventQueryStatus_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnQueryStatus,
hEvent);
ze_event_query_status_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventQueryStatusCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventQueryStatusCb_t, Event, pfnQueryStatusCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnQueryStatus,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeEventHostReset_Tracing(ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnHostReset,
hEvent);
ze_event_host_reset_params_t tracerParams;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnEventHostResetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventHostResetCb_t, Event, pfnHostResetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnHostReset,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendEventReset_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hEvent) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendEventReset,
hCommandList,
hEvent);
ze_command_list_append_event_reset_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phEvent = &hEvent;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendEventResetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendEventResetCb_t,
CommandList, pfnAppendEventResetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendEventReset,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phEvent);
}
__zedllexport ze_result_t __zecall
zeEventGetTimestamp_Tracing(ze_event_handle_t hEvent,
ze_event_timestamp_type_t timestampType,
void *dstptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Event.pfnGetTimestamp,
hEvent,
timestampType,
dstptr);
ze_event_get_timestamp_params_t tracerParams;
tracerParams.phEvent = &hEvent;
tracerParams.ptimestampType = &timestampType;
tracerParams.pdstptr = &dstptr;
L0::APITracerCallbackDataImp<ze_pfnEventGetTimestampCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnEventGetTimestampCb_t, Event, pfnGetTimestampCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Event.pfnGetTimestamp,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phEvent,
*tracerParams.ptimestampType,
*tracerParams.pdstptr);
}

View File

@@ -0,0 +1,72 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeEventPoolCreate_Tracing(ze_driver_handle_t hDriver,
const ze_event_pool_desc_t *desc,
uint32_t numDevices,
ze_device_handle_t *phDevices,
ze_event_pool_handle_t *phEventPool);
__zedllexport ze_result_t __zecall
zeEventPoolDestroy_Tracing(ze_event_pool_handle_t hEventPool);
__zedllexport ze_result_t __zecall
zeEventCreate_Tracing(ze_event_pool_handle_t hEventPool,
const ze_event_desc_t *desc,
ze_event_handle_t *phEvent);
__zedllexport ze_result_t __zecall
zeEventDestroy_Tracing(ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeEventPoolGetIpcHandle_Tracing(ze_event_pool_handle_t hEventPool,
ze_ipc_event_pool_handle_t *phIpc);
__zedllexport ze_result_t __zecall
zeEventPoolOpenIpcHandle_Tracing(ze_driver_handle_t hDriver,
ze_ipc_event_pool_handle_t hIpc,
ze_event_pool_handle_t *phEventPool);
__zedllexport ze_result_t __zecall
zeEventPoolCloseIpcHandle_Tracing(ze_event_pool_handle_t hEventPool);
__zedllexport ze_result_t __zecall
zeCommandListAppendSignalEvent_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendWaitOnEvents_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numEvents,
ze_event_handle_t *phEvents);
__zedllexport ze_result_t __zecall
zeEventHostSignal_Tracing(ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeEventHostSynchronize_Tracing(ze_event_handle_t hEvent,
uint32_t timeout);
__zedllexport ze_result_t __zecall
zeEventQueryStatus_Tracing(ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeEventHostReset_Tracing(ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeCommandListAppendEventReset_Tracing(ze_command_list_handle_t hCommandList,
ze_event_handle_t hEvent);
__zedllexport ze_result_t __zecall
zeEventGetTimestamp_Tracing(ze_event_handle_t hEvent,
ze_event_timestamp_type_t timestampType,
void *dstptr);
}

View File

@@ -0,0 +1,124 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeFenceCreate_Tracing(ze_command_queue_handle_t hCommandQueue,
const ze_fence_desc_t *desc,
ze_fence_handle_t *phFence) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Fence.pfnCreate,
hCommandQueue,
desc,
phFence);
ze_fence_create_params_t tracerParams;
tracerParams.phCommandQueue = &hCommandQueue;
tracerParams.pdesc = &desc;
tracerParams.pphFence = &phFence;
L0::APITracerCallbackDataImp<ze_pfnFenceCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnFenceCreateCb_t, Fence, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Fence.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandQueue,
*tracerParams.pdesc,
*tracerParams.pphFence);
}
__zedllexport ze_result_t __zecall
zeFenceDestroy_Tracing(ze_fence_handle_t hFence) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Fence.pfnDestroy,
hFence);
ze_fence_destroy_params_t tracerParams;
tracerParams.phFence = &hFence;
L0::APITracerCallbackDataImp<ze_pfnFenceDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnFenceDestroyCb_t, Fence, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Fence.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phFence);
}
__zedllexport ze_result_t __zecall
zeFenceHostSynchronize_Tracing(ze_fence_handle_t hFence,
uint32_t timeout) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Fence.pfnHostSynchronize,
hFence,
timeout);
ze_fence_host_synchronize_params_t tracerParams;
tracerParams.phFence = &hFence;
tracerParams.ptimeout = &timeout;
L0::APITracerCallbackDataImp<ze_pfnFenceHostSynchronizeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnFenceHostSynchronizeCb_t, Fence, pfnHostSynchronizeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Fence.pfnHostSynchronize,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phFence,
*tracerParams.ptimeout);
}
__zedllexport ze_result_t __zecall
zeFenceQueryStatus_Tracing(ze_fence_handle_t hFence) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Fence.pfnQueryStatus,
hFence);
ze_fence_query_status_params_t tracerParams;
tracerParams.phFence = &hFence;
L0::APITracerCallbackDataImp<ze_pfnFenceQueryStatusCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnFenceQueryStatusCb_t, Fence, pfnQueryStatusCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Fence.pfnQueryStatus,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phFence);
}
__zedllexport ze_result_t __zecall
zeFenceReset_Tracing(ze_fence_handle_t hFence) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Fence.pfnReset,
hFence);
ze_fence_reset_params_t tracerParams;
tracerParams.phFence = &hFence;
L0::APITracerCallbackDataImp<ze_pfnFenceResetCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnFenceResetCb_t, Fence, pfnResetCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Fence.pfnReset,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phFence);
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeFenceCreate_Tracing(ze_command_queue_handle_t hCommandQueue,
const ze_fence_desc_t *desc,
ze_fence_handle_t *phFence);
__zedllexport ze_result_t __zecall
zeFenceDestroy_Tracing(ze_fence_handle_t hFence);
__zedllexport ze_result_t __zecall
zeFenceHostSynchronize_Tracing(ze_fence_handle_t hFence,
uint32_t timeout);
__zedllexport ze_result_t __zecall
zeFenceQueryStatus_Tracing(ze_fence_handle_t hFence);
__zedllexport ze_result_t __zecall
zeFenceReset_Tracing(ze_fence_handle_t hFence);
}

View File

@@ -0,0 +1,28 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeInit_Tracing(ze_init_flag_t flags) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Global.pfnInit,
flags);
ze_init_params_t tracerParams;
tracerParams.pflags = &flags;
L0::APITracerCallbackDataImp<ze_pfnInitCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnInitCb_t, Global, pfnInitCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Global.pfnInit,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.pflags);
}

View File

@@ -0,0 +1,14 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeInit_Tracing(ze_init_flag_t flags);
}

View File

@@ -0,0 +1,87 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeImageGetProperties_Tracing(ze_device_handle_t hDevice,
const ze_image_desc_t *desc,
ze_image_properties_t *pImageProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Image.pfnGetProperties,
hDevice,
desc,
pImageProperties);
ze_image_get_properties_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pdesc = &desc;
tracerParams.ppImageProperties = &pImageProperties;
L0::APITracerCallbackDataImp<ze_pfnImageGetPropertiesCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnImageGetPropertiesCb_t, Image, pfnGetPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Image.pfnGetProperties,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pdesc,
*tracerParams.ppImageProperties);
}
__zedllexport ze_result_t __zecall
zeImageCreate_Tracing(ze_device_handle_t hDevice,
const ze_image_desc_t *desc,
ze_image_handle_t *phImage) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Image.pfnCreate,
hDevice,
desc,
phImage);
ze_image_create_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pdesc = &desc;
tracerParams.pphImage = &phImage;
L0::APITracerCallbackDataImp<ze_pfnImageCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnImageCreateCb_t, Image, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Image.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pdesc,
*tracerParams.pphImage);
}
__zedllexport ze_result_t __zecall
zeImageDestroy_Tracing(ze_image_handle_t hImage) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Image.pfnDestroy,
hImage);
ze_image_destroy_params_t tracerParams;
tracerParams.phImage = &hImage;
L0::APITracerCallbackDataImp<ze_pfnImageDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnImageDestroyCb_t, Image, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Image.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phImage);
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeImageGetProperties_Tracing(ze_device_handle_t hDevice,
const ze_image_desc_t *desc,
ze_image_properties_t *pImageProperties);
__zedllexport ze_result_t __zecall
zeImageCreate_Tracing(ze_device_handle_t hDevice,
const ze_image_desc_t *desc,
ze_image_handle_t *phImage);
__zedllexport ze_result_t __zecall
zeImageDestroy_Tracing(ze_image_handle_t hImage);
}

View File

@@ -0,0 +1,345 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
#include "shared/source/helpers/debug_helpers.h"
namespace L0 {
thread_local ze_bool_t tracingInProgress = 0;
bool tracingIsEnabled = false;
struct APITracerContextImp GLOBAL_APITracerContextImp;
struct APITracerContextImp *PGLOBAL_APITracerContextImp = &GLOBAL_APITracerContextImp;
APITracer *APITracer::create() {
APITracerImp *tracer = new APITracerImp;
tracer->tracingState = disabledState;
tracer->tracerFunctions = {};
UNRECOVERABLE_IF(tracer == nullptr);
return tracer;
}
ze_result_t createAPITracer(zet_driver_handle_t hDriver, const zet_tracer_desc_t *desc, zet_tracer_handle_t *phTracer) {
if (!PGLOBAL_APITracerContextImp->isTracingEnabled()) {
return ZE_RESULT_ERROR_UNINITIALIZED;
}
APITracerImp *tracer = static_cast<APITracerImp *>(APITracer::create());
tracer->tracerFunctions.pUserData = desc->pUserData;
*phTracer = tracer->toHandle();
return ZE_RESULT_SUCCESS;
}
ze_result_t APITracerImp::destroyTracer(zet_tracer_handle_t phTracer) {
APITracerImp *tracer = static_cast<APITracerImp *>(phTracer);
ze_result_t result = PGLOBAL_APITracerContextImp->finalizeDisableImpTracingWait(tracer);
if (result == ZE_RESULT_SUCCESS) {
delete L0::APITracer::fromHandle(phTracer);
}
return result;
}
ze_result_t APITracerImp::setPrologues(zet_core_callbacks_t *pCoreCbs) {
if (this->tracingState != disabledState) {
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
}
this->tracerFunctions.corePrologues = *pCoreCbs;
return ZE_RESULT_SUCCESS;
}
ze_result_t APITracerImp::setEpilogues(zet_core_callbacks_t *pCoreCbs) {
if (this->tracingState != disabledState) {
return ZE_RESULT_ERROR_INVALID_ARGUMENT;
}
this->tracerFunctions.coreEpilogues = *pCoreCbs;
return ZE_RESULT_SUCCESS;
}
ze_result_t APITracerImp::enableTracer(ze_bool_t enable) {
return PGLOBAL_APITracerContextImp->enableTracingImp(this, enable);
}
static std::mutex perThreadTracerDataMutex;
static std::list<per_thread_tracer_data_t *> perThreadTracerDataList;
void ThreadPrivateTracerData::allocatePerThreadPublicTracerData() {
if (myThreadPublicTracerData == nullptr) {
myThreadPublicTracerData = new per_thread_tracer_data_t;
myThreadPublicTracerData->tracerArrayPointer.store(NULL, std::memory_order_relaxed);
myThreadPublicTracerData->thread_id = std::this_thread::get_id();
std::lock_guard<std::mutex> lock(perThreadTracerDataMutex);
perThreadTracerDataList.push_back(myThreadPublicTracerData);
}
}
void ThreadPrivateTracerData::freePerThreadPublicTracerData() {
//
// There is no need to hold a mutex when testing
// my_thread_tracer_data is a thread_local object.
// my_threadd_tracer_data for nullptr since it can only be done
// within the current thread's context.
// So there can be no other racing threads.
//
if (myThreadPublicTracerData != nullptr) {
std::lock_guard<std::mutex> lock(perThreadTracerDataMutex);
perThreadTracerDataList.remove(myThreadPublicTracerData);
delete myThreadPublicTracerData;
myThreadPublicTracerData = nullptr;
}
}
ThreadPrivateTracerData::ThreadPrivateTracerData() {
myThreadPublicTracerData = nullptr;
}
ThreadPrivateTracerData::~ThreadPrivateTracerData() {
freePerThreadPublicTracerData();
}
thread_local ThreadPrivateTracerData myThreadPrivateTracerData;
//
// This thread_local allows for an optimisation of the test_for_tracer_array_references()
// function. The optimization adds a test and branch, but it allows the common code path
// to avoid TWO out of line function calls.
//
// One function call is to call the constructor for the thread_private_tracer_data class.
// Note that this call is probably pretty heavy-weight, because it needs to be thread safe.
// It MUST include a mutex.
//
// The second function call we avoid is the call to the thread_private_tracer_data class's
// allocate memory member. It appears that at least with the Linux g++ compiler,
// the "inline" annotation on a member function is accepted at compile time, but does not
// change the code that is generated.
//
static thread_local bool myThreadPrivateTracerDataIsInitialized = false;
void APITracerContextImp::apiTracingEnable(ze_init_flag_t flag) {
if (driver_ddiTable.enableTracing) {
tracingIsEnabled = true;
}
}
void APITracerContextImp::enableTracing() { tracingIsEnabled = true; }
void APITracerContextImp::disableTracing() { tracingIsEnabled = false; }
bool APITracerContextImp::isTracingEnabled() { return tracingIsEnabled; }
//
// Walk the list of per-thread private data structures, testing
// whether any of them reference this array.
//
// Return 1 if a reference is found. Otherwise return 0.
//
ze_bool_t APITracerContextImp::testForTracerArrayReferences(tracer_array_t *tracerArray) {
std::list<per_thread_tracer_data_t *>::iterator itr;
for (itr = perThreadTracerDataList.begin();
itr != perThreadTracerDataList.end();
itr++) {
if ((*itr)->tracerArrayPointer.load(std::memory_order_relaxed) == tracerArray)
return 1;
}
return 0;
}
//
// Walk the retiring_tracer_array_list, checking each member of the list for
// references by per thread tracer array pointer. Delete and free
// each tracer array that has no per-thread references.
//
// Return the number of entries on the retiring tracer array list.
//
size_t APITracerContextImp::testAndFreeRetiredTracers() {
std::list<tracer_array_t *>::iterator itr = this->retiringTracerArrayList.begin();
while (itr != this->retiringTracerArrayList.end()) {
tracer_array_t *retiringTracerArray = *itr;
itr++;
if (testForTracerArrayReferences(retiringTracerArray))
continue;
this->retiringTracerArrayList.remove(retiringTracerArray);
delete[] retiringTracerArray->tracerArrayEntries;
delete retiringTracerArray;
}
return this->retiringTracerArrayList.size();
}
int APITracerContextImp::updateTracerArrays() {
tracer_array_t *newTracerArray;
size_t newTracerArrayCount = this->enabledTracerImpList.size();
if (newTracerArrayCount != 0) {
newTracerArray = new tracer_array_t;
newTracerArray->tracerArrayCount = newTracerArrayCount;
newTracerArray->tracerArrayEntries = new tracer_array_entry_t[newTracerArrayCount];
//
// iterate over the list of enabled tracers, copying their entries into the
// new tracer array
//
size_t i = 0;
std::list<struct APITracerImp *>::iterator itr;
for (itr = enabledTracerImpList.begin(); itr != enabledTracerImpList.end(); itr++) {
newTracerArray->tracerArrayEntries[i] = (*itr)->tracerFunctions;
i++;
}
} else {
newTracerArray = &emptyTracerArray;
}
//
// active_tracer_array.load can use memory_order_relaxed here because
// there is logically no transfer of other memory context between
// threads in this case.
//
tracer_array_t *active_tracer_array_shadow = activeTracerArray.load(std::memory_order_relaxed);
if (active_tracer_array_shadow != &emptyTracerArray) {
retiringTracerArrayList.push_back(active_tracer_array_shadow);
}
//
// This active_tracer_array.store must use memory_order_release.
// This store DOES signal a logical transfer of tracer state information
// from this thread to the tracing threads.
//
activeTracerArray.store(newTracerArray, std::memory_order_release);
testAndFreeRetiredTracers();
return 0;
}
ze_result_t APITracerContextImp::enableTracingImp(struct APITracerImp *tracerImp, ze_bool_t enable) {
std::lock_guard<std::mutex> lock(traceTableMutex);
ze_result_t result;
switch (tracerImp->tracingState) {
case disabledState:
if (enable) {
enabledTracerImpList.push_back(tracerImp);
tracerImp->tracingState = enabledState;
updateTracerArrays();
}
result = ZE_RESULT_SUCCESS;
break;
case enabledState:
if (!enable) {
enabledTracerImpList.remove(tracerImp);
tracerImp->tracingState = disabledWaitingState;
updateTracerArrays();
}
result = ZE_RESULT_SUCCESS;
break;
case disabledWaitingState:
result = ZE_RESULT_ERROR_UNINITIALIZED;
break;
default:
result = ZE_RESULT_ERROR_UNINITIALIZED;
UNRECOVERABLE_IF(true);
break;
}
return result;
}
// This is called by the destroy tracer method.
//
// This routine will return ZE_RESULT_SUCCESS
// state if either it has never been enabled,
// or if it has been enabled and then disabled.
//
// On ZE_RESULT_SUCESS, the destroy tracer method
// can free the tracer's memory.
//
// ZE_RESULT_ERROR_UNINITIALIZED is returned
// if the tracer has been enabled but not
// disabled. The destroy tracer method
// should NOT free this tracer's memory.
//
ze_result_t APITracerContextImp::finalizeDisableImpTracingWait(struct APITracerImp *tracerImp) {
std::lock_guard<std::mutex> lock(traceTableMutex);
ze_result_t result;
switch (tracerImp->tracingState) {
case disabledState:
result = ZE_RESULT_SUCCESS;
break;
case enabledState:
result = ZE_RESULT_ERROR_UNINITIALIZED;
break;
case disabledWaitingState:
while (testAndFreeRetiredTracers() != 0) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
tracerImp->tracingState = disabledState;
result = ZE_RESULT_SUCCESS;
break;
default:
result = ZE_RESULT_ERROR_UNINITIALIZED;
UNRECOVERABLE_IF(true);
break;
}
return result;
}
//
// For an explanation of this function and the reason for its while loop,
// see the comments at the top of this file.
//
void *APITracerContextImp::getActiveTracersList() {
tracer_array_t *stableTracerArray = NULL;
//
// This test and branch allows us to avoid TWO function calls. One call is for the
// constructor for my_thread_private_tracer_data. The other is to avoid the function
// call to allocate_per_thread_tracer_data().
//
// Since my_thread_private_tracer_data_is_initialized and my_thread_private_tracer_data are
// thread_local, there is no thread safety issue here. Each thread will find
// my_thread_private_tracer_data_is_initialized to be "false" at most once.
//
if (!myThreadPrivateTracerDataIsInitialized) {
myThreadPrivateTracerData.allocatePerThreadPublicTracerData();
myThreadPrivateTracerDataIsInitialized = true;
}
do {
//
// This read of active_tracer_array DOES logically signal a transfer
// of tracer structure information from the threader enable/disable/destroy
// thread to this tracing thread. So it must use memory_order_acquire
//
stableTracerArray = PGLOBAL_APITracerContextImp->activeTracerArray.load(std::memory_order_acquire);
myThreadPrivateTracerData.myThreadPublicTracerData->tracerArrayPointer.store(stableTracerArray, std::memory_order_relaxed);
//
// This read of active_tracer_array does NOT transfer any information
// that was not already transferred by the previous read within this loop.
// So it can use memory_order_relaxed.
//
} while (stableTracerArray !=
PGLOBAL_APITracerContextImp->activeTracerArray.load(std::memory_order_relaxed));
return (void *)stableTracerArray;
}
void APITracerContextImp::releaseActivetracersList() {
myThreadPrivateTracerData.myThreadPublicTracerData->tracerArrayPointer.store(NULL, std::memory_order_relaxed);
}
} // namespace L0

View File

@@ -0,0 +1,212 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "level_zero/tools/source/tracing/tracing.h"
#include "level_zero/tools/source/tracing/tracing_barrier_imp.h"
#include "level_zero/tools/source/tracing/tracing_cl_interop_imp.h"
#include "level_zero/tools/source/tracing/tracing_cmdlist_imp.h"
#include "level_zero/tools/source/tracing/tracing_cmdqueue_imp.h"
#include "level_zero/tools/source/tracing/tracing_copy_imp.h"
#include "level_zero/tools/source/tracing/tracing_device_imp.h"
#include "level_zero/tools/source/tracing/tracing_driver_imp.h"
#include "level_zero/tools/source/tracing/tracing_event_imp.h"
#include "level_zero/tools/source/tracing/tracing_fence_imp.h"
#include "level_zero/tools/source/tracing/tracing_global_imp.h"
#include "level_zero/tools/source/tracing/tracing_image_imp.h"
#include "level_zero/tools/source/tracing/tracing_memory_imp.h"
#include "level_zero/tools/source/tracing/tracing_module_imp.h"
#include "level_zero/tools/source/tracing/tracing_residency_imp.h"
#include "level_zero/tools/source/tracing/tracing_sampler_imp.h"
#include <level_zero/ze_api.h>
#include <level_zero/ze_ddi.h>
#include "ze_ddi_tables.h"
#include <atomic>
#include <chrono>
#include <list>
#include <mutex>
#include <thread>
#include <vector>
extern ze_gpu_driver_dditable_t driver_ddiTable;
namespace L0 {
extern thread_local ze_bool_t tracingInProgress;
extern struct APITracerContextImp *PGLOBAL_APITracerContextImp;
typedef struct tracer_array_entry {
zet_core_callbacks_t corePrologues;
zet_core_callbacks_t coreEpilogues;
zet_device_handle_t hDevice;
void *pUserData;
} tracer_array_entry_t;
typedef struct tracerArray {
size_t tracerArrayCount;
tracer_array_entry_t *tracerArrayEntries;
} tracer_array_t;
typedef struct per_thread_public_tracer_data {
std::atomic<tracer_array_t *> tracerArrayPointer;
std::thread::id thread_id;
} per_thread_tracer_data_t;
class ThreadPrivateTracerData {
public:
per_thread_tracer_data_t *myThreadPublicTracerData;
void allocatePerThreadPublicTracerData();
void freePerThreadPublicTracerData();
ThreadPrivateTracerData();
~ThreadPrivateTracerData();
private:
ThreadPrivateTracerData(const ThreadPrivateTracerData &);
ThreadPrivateTracerData &operator=(const ThreadPrivateTracerData &);
};
extern thread_local ThreadPrivateTracerData myThreadPrivateTracerData;
typedef enum tracingState {
disabledState, // tracing has never been enabled
enabledState, // tracing is enabled.
disabledWaitingState, // tracing has been disabled, but not waited for
} tracingState_t;
struct APITracerImp : APITracer {
ze_result_t destroyTracer(zet_tracer_handle_t phTracer) override;
ze_result_t setPrologues(zet_core_callbacks_t *pCoreCbs) override;
ze_result_t setEpilogues(zet_core_callbacks_t *pCoreCbs) override;
ze_result_t enableTracer(ze_bool_t enable) override;
tracer_array_entry_t tracerFunctions;
tracingState_t tracingState;
private:
};
struct APITracerContextImp : APITracerContext {
public:
APITracerContextImp() {
activeTracerArray.store(&emptyTracerArray, std::memory_order_relaxed);
};
~APITracerContextImp() override {}
static void apiTracingEnable(ze_init_flag_t flag);
void *getActiveTracersList() override;
void releaseActivetracersList() override;
ze_result_t enableTracingImp(struct APITracerImp *newTracer, ze_bool_t enable);
ze_result_t finalizeDisableImpTracingWait(struct APITracerImp *oldTracer);
void enableTracing();
void disableTracing();
bool isTracingEnabled();
private:
std::mutex traceTableMutex;
tracer_array_t emptyTracerArray = {0, NULL};
std::atomic<tracer_array_t *> activeTracerArray;
//
// a list of tracer arrays that were once active, but
// have been replaced by a new active array. These
// once-active tracer arrays may continue for some time
// to have references to them among the per-thread
// tracer array pointers.
//
std::list<tracer_array_t *> retiringTracerArrayList;
std::list<struct APITracerImp *> enabledTracerImpList;
ze_bool_t testForTracerArrayReferences(tracer_array_t *tracerArray);
size_t testAndFreeRetiredTracers();
int updateTracerArrays();
};
template <class T>
class APITracerCallbackStateImp {
public:
T current_api_callback;
void *pUserData;
};
template <class T>
class APITracerCallbackDataImp {
public:
T apiOrdinal = {};
std::vector<L0::APITracerCallbackStateImp<T>> prologCallbacks;
std::vector<L0::APITracerCallbackStateImp<T>> epilogCallbacks;
};
#define ZE_HANDLE_TRACER_RECURSION(ze_api_ptr, ...) \
do { \
if (L0::tracingInProgress) { \
return ze_api_ptr(__VA_ARGS__); \
} \
L0::tracingInProgress = 1; \
} while (0)
#define ZE_GEN_TRACER_ARRAY_ENTRY(callbackPtr, tracerArray, tracerArrayIndex, callbackType, callbackCategory, callbackFunction) \
do { \
callbackPtr = tracerArray->tracerArrayEntries[tracerArrayIndex].callbackType.callbackCategory.callbackFunction; \
} while (0)
#define ZE_GEN_PER_API_CALLBACK_STATE(perApiCallbackData, tracerType, callbackCategory, callbackFunctionType) \
L0::tracer_array_t *currentTracerArray; \
currentTracerArray = (L0::tracer_array_t *)L0::PGLOBAL_APITracerContextImp->getActiveTracersList(); \
for (size_t i = 0; i < currentTracerArray->tracerArrayCount; i++) { \
tracerType prologueCallbackPtr; \
tracerType epilogue_callback_ptr; \
ZE_GEN_TRACER_ARRAY_ENTRY(prologueCallbackPtr, currentTracerArray, i, corePrologues, callbackCategory, callbackFunctionType); \
ZE_GEN_TRACER_ARRAY_ENTRY(epilogue_callback_ptr, currentTracerArray, i, coreEpilogues, callbackCategory, callbackFunctionType); \
\
L0::APITracerCallbackStateImp<tracerType> prologCallback; \
prologCallback.current_api_callback = prologueCallbackPtr; \
prologCallback.pUserData = currentTracerArray->tracerArrayEntries[i].pUserData; \
perApiCallbackData.prologCallbacks.push_back(prologCallback); \
\
L0::APITracerCallbackStateImp<tracerType> epilogCallback; \
epilogCallback.current_api_callback = epilogue_callback_ptr; \
epilogCallback.pUserData = currentTracerArray->tracerArrayEntries[i].pUserData; \
perApiCallbackData.epilogCallbacks.push_back(epilogCallback); \
}
template <typename TFunction_pointer, typename TParams, typename TTracer, typename TTracerPrologCallbacks, typename TTracerEpilogCallbacks, typename... Args>
ze_result_t APITracerWrapperImp(TFunction_pointer zeApiPtr,
TParams paramsStruct,
TTracer apiOrdinal,
TTracerPrologCallbacks prologCallbacks,
TTracerEpilogCallbacks epilogCallbacks,
Args &&... args) {
ze_result_t ret = ZE_RESULT_SUCCESS;
std::vector<APITracerCallbackStateImp<TTracer>> *callbacks_prologs = &prologCallbacks;
std::vector<void *> ppTracerInstanceUserData;
ppTracerInstanceUserData.resize(callbacks_prologs->size());
for (size_t i = 0; i < callbacks_prologs->size(); i++) {
if (callbacks_prologs->at(i).current_api_callback != nullptr)
callbacks_prologs->at(i).current_api_callback(paramsStruct, ret, callbacks_prologs->at(i).pUserData, &ppTracerInstanceUserData[i]);
}
ret = zeApiPtr(args...);
std::vector<APITracerCallbackStateImp<TTracer>> *callbacksEpilogs = &epilogCallbacks;
for (size_t i = 0; i < callbacksEpilogs->size(); i++) {
if (callbacksEpilogs->at(i).current_api_callback != nullptr)
callbacksEpilogs->at(i).current_api_callback(paramsStruct, ret, callbacksEpilogs->at(i).pUserData, &ppTracerInstanceUserData[i]);
}
L0::tracingInProgress = 0;
L0::PGLOBAL_APITracerContextImp->releaseActivetracersList();
return ret;
}
} // namespace L0

View File

@@ -0,0 +1,308 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeDriverAllocSharedMem_Tracing(ze_driver_handle_t hDriver,
const ze_device_mem_alloc_desc_t *deviceDesc,
const ze_host_mem_alloc_desc_t *hostDesc,
size_t size,
size_t alignment,
ze_device_handle_t hDevice,
void **pptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnAllocSharedMem,
hDriver,
deviceDesc,
hostDesc,
size,
alignment,
hDevice,
pptr);
ze_driver_alloc_shared_mem_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pdevice_desc = &deviceDesc;
tracerParams.phost_desc = &hostDesc;
tracerParams.psize = &size;
tracerParams.palignment = &alignment;
tracerParams.phDevice = &hDevice;
tracerParams.ppptr = &pptr;
L0::APITracerCallbackDataImp<ze_pfnDriverAllocSharedMemCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverAllocSharedMemCb_t, Driver, pfnAllocSharedMemCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnAllocSharedMem,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pdevice_desc,
*tracerParams.phost_desc,
*tracerParams.psize,
*tracerParams.palignment,
*tracerParams.phDevice,
*tracerParams.ppptr);
}
__zedllexport ze_result_t __zecall
zeDriverAllocDeviceMem_Tracing(ze_driver_handle_t hDriver,
const ze_device_mem_alloc_desc_t *deviceDesc,
size_t size,
size_t alignment,
ze_device_handle_t hDevice,
void **pptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnAllocDeviceMem,
hDriver,
deviceDesc,
size,
alignment,
hDevice,
pptr);
ze_driver_alloc_device_mem_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pdevice_desc = &deviceDesc;
tracerParams.psize = &size;
tracerParams.palignment = &alignment;
tracerParams.phDevice = &hDevice;
tracerParams.ppptr = &pptr;
L0::APITracerCallbackDataImp<ze_pfnDriverAllocDeviceMemCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverAllocDeviceMemCb_t, Driver, pfnAllocDeviceMemCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnAllocDeviceMem,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pdevice_desc,
*tracerParams.psize,
*tracerParams.palignment,
*tracerParams.phDevice,
*tracerParams.ppptr);
}
__zedllexport ze_result_t __zecall
zeDriverAllocHostMem_Tracing(ze_driver_handle_t hDriver,
const ze_host_mem_alloc_desc_t *hostDesc,
size_t size,
size_t alignment,
void **pptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnAllocHostMem,
hDriver,
hostDesc,
size,
alignment,
pptr);
ze_driver_alloc_host_mem_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.phost_desc = &hostDesc;
tracerParams.psize = &size;
tracerParams.palignment = &alignment;
tracerParams.ppptr = &pptr;
L0::APITracerCallbackDataImp<ze_pfnDriverAllocHostMemCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverAllocHostMemCb_t, Driver, pfnAllocHostMemCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnAllocHostMem,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.phost_desc,
*tracerParams.psize,
*tracerParams.palignment,
*tracerParams.ppptr);
}
__zedllexport ze_result_t __zecall
zeDriverFreeMem_Tracing(ze_driver_handle_t hDriver,
void *ptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnFreeMem,
hDriver,
ptr);
ze_driver_free_mem_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pptr = &ptr;
L0::APITracerCallbackDataImp<ze_pfnDriverFreeMemCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverFreeMemCb_t, Driver, pfnFreeMemCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnFreeMem,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pptr);
}
__zedllexport ze_result_t __zecall
zeDriverGetMemAllocProperties_Tracing(ze_driver_handle_t hDriver,
const void *ptr,
ze_memory_allocation_properties_t *pMemAllocProperties,
ze_device_handle_t *phDevice) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetMemAllocProperties,
hDriver,
ptr,
pMemAllocProperties,
phDevice);
ze_driver_get_mem_alloc_properties_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pptr = &ptr;
tracerParams.ppMemAllocProperties = &pMemAllocProperties;
tracerParams.pphDevice = &phDevice;
L0::APITracerCallbackDataImp<ze_pfnDriverGetMemAllocPropertiesCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetMemAllocPropertiesCb_t, Driver, pfnGetMemAllocPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetMemAllocProperties,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pptr,
*tracerParams.ppMemAllocProperties,
*tracerParams.pphDevice);
}
__zedllexport ze_result_t __zecall
zeDriverGetMemAddressRange_Tracing(ze_driver_handle_t hDriver,
const void *ptr,
void **pBase,
size_t *pSize) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetMemAddressRange,
hDriver,
ptr,
pBase,
pSize);
ze_driver_get_mem_address_range_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pptr = &ptr;
tracerParams.ppBase = &pBase;
tracerParams.ppSize = &pSize;
L0::APITracerCallbackDataImp<ze_pfnDriverGetMemAddressRangeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetMemAddressRangeCb_t, Driver, pfnGetMemAddressRangeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetMemAddressRange,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pptr,
*tracerParams.ppBase,
*tracerParams.ppSize);
}
__zedllexport ze_result_t __zecall
zeDriverGetMemIpcHandle_Tracing(ze_driver_handle_t hDriver,
const void *ptr,
ze_ipc_mem_handle_t *pIpcHandle) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnGetMemIpcHandle,
hDriver,
ptr,
pIpcHandle);
ze_driver_get_mem_ipc_handle_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pptr = &ptr;
tracerParams.ppIpcHandle = &pIpcHandle;
L0::APITracerCallbackDataImp<ze_pfnDriverGetMemIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverGetMemIpcHandleCb_t, Driver, pfnGetMemIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnGetMemIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pptr,
*tracerParams.ppIpcHandle);
}
__zedllexport ze_result_t __zecall
zeDriverOpenMemIpcHandle_Tracing(ze_driver_handle_t hDriver,
ze_device_handle_t hDevice,
ze_ipc_mem_handle_t handle,
ze_ipc_memory_flag_t flags,
void **pptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnOpenMemIpcHandle, hDriver, hDevice, handle, flags, pptr);
ze_driver_open_mem_ipc_handle_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.phDevice = &hDevice;
tracerParams.phandle = &handle;
tracerParams.pflags = &flags;
tracerParams.ppptr = &pptr;
L0::APITracerCallbackDataImp<ze_pfnDriverOpenMemIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverOpenMemIpcHandleCb_t, Driver, pfnOpenMemIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnOpenMemIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.phDevice,
*tracerParams.phandle,
*tracerParams.pflags,
*tracerParams.ppptr);
}
__zedllexport ze_result_t __zecall
zeDriverCloseMemIpcHandle_Tracing(ze_driver_handle_t hDriver,
const void *ptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Driver.pfnCloseMemIpcHandle,
hDriver,
ptr);
ze_driver_close_mem_ipc_handle_params_t tracerParams;
tracerParams.phDriver = &hDriver;
tracerParams.pptr = &ptr;
L0::APITracerCallbackDataImp<ze_pfnDriverCloseMemIpcHandleCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDriverCloseMemIpcHandleCb_t, Driver, pfnCloseMemIpcHandleCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Driver.pfnCloseMemIpcHandle,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDriver,
*tracerParams.pptr);
}

View File

@@ -0,0 +1,67 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeDriverAllocSharedMem_Tracing(ze_driver_handle_t hDriver,
const ze_device_mem_alloc_desc_t *deviceDesc,
const ze_host_mem_alloc_desc_t *hostDesc,
size_t size,
size_t alignment,
ze_device_handle_t hDevice,
void **pptr);
__zedllexport ze_result_t __zecall
zeDriverAllocDeviceMem_Tracing(ze_driver_handle_t hDriver,
const ze_device_mem_alloc_desc_t *deviceDesc,
size_t size,
size_t alignment,
ze_device_handle_t hDevice,
void **pptr);
__zedllexport ze_result_t __zecall
zeDriverAllocHostMem_Tracing(ze_driver_handle_t hDriver,
const ze_host_mem_alloc_desc_t *hostDesc,
size_t size,
size_t alignment,
void **pptr);
__zedllexport ze_result_t __zecall
zeDriverFreeMem_Tracing(ze_driver_handle_t hDriver,
void *ptr);
__zedllexport ze_result_t __zecall
zeDriverGetMemAllocProperties_Tracing(ze_driver_handle_t hDriver,
const void *ptr,
ze_memory_allocation_properties_t *pMemAllocProperties,
ze_device_handle_t *phDevice);
__zedllexport ze_result_t __zecall
zeDriverGetMemAddressRange_Tracing(ze_driver_handle_t hDriver,
const void *ptr,
void **pBase,
size_t *pSize);
__zedllexport ze_result_t __zecall
zeDriverGetMemIpcHandle_Tracing(ze_driver_handle_t hDriver,
const void *ptr,
ze_ipc_mem_handle_t *pIpcHandle);
__zedllexport ze_result_t __zecall
zeDriverOpenMemIpcHandle_Tracing(ze_driver_handle_t hDriver,
ze_device_handle_t hDevice,
ze_ipc_mem_handle_t handle,
ze_ipc_memory_flag_t flags,
void **pptr);
__zedllexport ze_result_t __zecall
zeDriverCloseMemIpcHandle_Tracing(ze_driver_handle_t hDriver,
const void *ptr);
}

View File

@@ -0,0 +1,685 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeModuleCreate_Tracing(ze_device_handle_t hDevice,
const ze_module_desc_t *desc,
ze_module_handle_t *phModule,
ze_module_build_log_handle_t *phBuildLog) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnCreate,
hDevice,
desc,
phModule,
phBuildLog);
ze_module_create_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pdesc = &desc;
tracerParams.pphModule = &phModule;
tracerParams.pphBuildLog = &phBuildLog;
L0::APITracerCallbackDataImp<ze_pfnModuleCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleCreateCb_t, Module, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pdesc,
*tracerParams.pphModule,
*tracerParams.pphBuildLog);
}
__zedllexport ze_result_t __zecall
zeModuleDestroy_Tracing(ze_module_handle_t hModule) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnDestroy,
hModule);
ze_module_destroy_params_t tracerParams;
tracerParams.phModule = &hModule;
L0::APITracerCallbackDataImp<ze_pfnModuleDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleDestroyCb_t, Module, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModule);
}
__zedllexport ze_result_t __zecall
zeModuleBuildLogDestroy_Tracing(ze_module_build_log_handle_t hModuleBuildLog) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnDestroy,
hModuleBuildLog);
ze_module_build_log_destroy_params_t tracerParams;
tracerParams.phModuleBuildLog = &hModuleBuildLog;
L0::APITracerCallbackDataImp<ze_pfnModuleBuildLogDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleBuildLogDestroyCb_t, ModuleBuildLog, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModuleBuildLog);
}
__zedllexport ze_result_t __zecall
zeModuleBuildLogGetString_Tracing(ze_module_build_log_handle_t hModuleBuildLog,
size_t *pSize,
char *pBuildLog) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnGetString,
hModuleBuildLog,
pSize,
pBuildLog);
ze_module_build_log_get_string_params_t tracerParams;
tracerParams.phModuleBuildLog = &hModuleBuildLog;
tracerParams.ppSize = &pSize;
tracerParams.ppBuildLog = &pBuildLog;
L0::APITracerCallbackDataImp<ze_pfnModuleBuildLogGetStringCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleBuildLogGetStringCb_t, ModuleBuildLog, pfnGetStringCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.ModuleBuildLog.pfnGetString,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModuleBuildLog,
*tracerParams.ppSize,
*tracerParams.ppBuildLog);
}
__zedllexport ze_result_t __zecall
zeModuleGetNativeBinary_Tracing(ze_module_handle_t hModule,
size_t *pSize,
uint8_t *pModuleNativeBinary) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetNativeBinary,
hModule,
pSize,
pModuleNativeBinary);
ze_module_get_native_binary_params_t tracerParams;
tracerParams.phModule = &hModule;
tracerParams.ppSize = &pSize;
tracerParams.ppModuleNativeBinary = &pModuleNativeBinary;
L0::APITracerCallbackDataImp<ze_pfnModuleGetNativeBinaryCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetNativeBinaryCb_t, Module, pfnGetNativeBinaryCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetNativeBinary,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModule,
*tracerParams.ppSize,
*tracerParams.ppModuleNativeBinary);
}
__zedllexport ze_result_t __zecall
zeModuleGetGlobalPointer_Tracing(ze_module_handle_t hModule,
const char *pGlobalName,
void **pptr) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetGlobalPointer,
hModule,
pGlobalName,
pptr);
ze_module_get_global_pointer_params_t tracerParams;
tracerParams.phModule = &hModule;
tracerParams.ppGlobalName = &pGlobalName;
tracerParams.ppptr = &pptr;
L0::APITracerCallbackDataImp<ze_pfnModuleGetGlobalPointerCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetGlobalPointerCb_t, Module, pfnGetGlobalPointerCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetGlobalPointer,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModule,
*tracerParams.ppGlobalName,
*tracerParams.ppptr);
}
__zedllexport ze_result_t __zecall
zeKernelCreate_Tracing(ze_module_handle_t hModule,
const ze_kernel_desc_t *desc,
ze_kernel_handle_t *phKernel) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnCreate,
hModule,
desc,
phKernel);
ze_kernel_create_params_t tracerParams;
tracerParams.phModule = &hModule;
tracerParams.pdesc = &desc;
tracerParams.pphKernel = &phKernel;
L0::APITracerCallbackDataImp<ze_pfnKernelCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelCreateCb_t, Kernel, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModule,
*tracerParams.pdesc,
*tracerParams.pphKernel);
}
__zedllexport ze_result_t __zecall
zeKernelDestroy_Tracing(ze_kernel_handle_t hKernel) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnDestroy,
hKernel);
ze_kernel_destroy_params_t tracerParams;
tracerParams.phKernel = &hKernel;
L0::APITracerCallbackDataImp<ze_pfnKernelDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelDestroyCb_t, Kernel, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel);
}
__zedllexport ze_result_t __zecall
zeModuleGetFunctionPointer_Tracing(ze_module_handle_t hModule,
const char *pKernelName,
void **pfnFunction) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetFunctionPointer,
hModule,
pKernelName,
pfnFunction);
ze_module_get_function_pointer_params_t tracerParams;
tracerParams.phModule = &hModule;
tracerParams.ppFunctionName = &pKernelName;
tracerParams.ppfnFunction = &pfnFunction;
L0::APITracerCallbackDataImp<ze_pfnModuleGetFunctionPointerCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetFunctionPointerCb_t, Module, pfnGetFunctionPointerCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetFunctionPointer,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModule,
*tracerParams.ppFunctionName,
*tracerParams.ppfnFunction);
}
__zedllexport ze_result_t __zecall
zeKernelSetGroupSize_Tracing(ze_kernel_handle_t hKernel,
uint32_t groupSizeX,
uint32_t groupSizeY,
uint32_t groupSizeZ) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetGroupSize,
hKernel,
groupSizeX,
groupSizeY,
groupSizeZ);
ze_kernel_set_group_size_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.pgroupSizeX = &groupSizeX;
tracerParams.pgroupSizeY = &groupSizeY;
tracerParams.pgroupSizeZ = &groupSizeZ;
L0::APITracerCallbackDataImp<ze_pfnKernelSetGroupSizeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSetGroupSizeCb_t, Kernel, pfnSetGroupSizeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetGroupSize,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.pgroupSizeX,
*tracerParams.pgroupSizeY,
*tracerParams.pgroupSizeZ);
}
__zedllexport ze_result_t __zecall
zeKernelSuggestGroupSize_Tracing(ze_kernel_handle_t hKernel,
uint32_t globalSizeX,
uint32_t globalSizeY,
uint32_t globalSizeZ,
uint32_t *groupSizeX,
uint32_t *groupSizeY,
uint32_t *groupSizeZ) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestGroupSize,
hKernel,
globalSizeX,
globalSizeY,
globalSizeZ,
groupSizeX,
groupSizeY,
groupSizeZ);
ze_kernel_suggest_group_size_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.pglobalSizeX = &globalSizeX;
tracerParams.pglobalSizeY = &globalSizeY;
tracerParams.pglobalSizeZ = &globalSizeZ;
tracerParams.pgroupSizeX = &groupSizeX;
tracerParams.pgroupSizeY = &groupSizeY;
tracerParams.pgroupSizeZ = &groupSizeZ;
L0::APITracerCallbackDataImp<ze_pfnKernelSuggestGroupSizeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSuggestGroupSizeCb_t, Kernel, pfnSuggestGroupSizeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestGroupSize,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.pglobalSizeX,
*tracerParams.pglobalSizeY,
*tracerParams.pglobalSizeZ,
*tracerParams.pgroupSizeX,
*tracerParams.pgroupSizeY,
*tracerParams.pgroupSizeZ);
}
__zedllexport ze_result_t __zecall
zeKernelSetArgumentValue_Tracing(ze_kernel_handle_t hKernel,
uint32_t argIndex,
size_t argSize,
const void *pArgValue) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetArgumentValue,
hKernel,
argIndex,
argSize,
pArgValue);
ze_kernel_set_argument_value_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.pargIndex = &argIndex;
tracerParams.pargSize = &argSize;
tracerParams.ppArgValue = &pArgValue;
L0::APITracerCallbackDataImp<ze_pfnKernelSetArgumentValueCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSetArgumentValueCb_t, Kernel, pfnSetArgumentValueCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetArgumentValue,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.pargIndex,
*tracerParams.pargSize,
*tracerParams.ppArgValue);
}
__zedllexport ze_result_t __zecall
zeKernelSetAttribute_Tracing(ze_kernel_handle_t hKernel,
ze_kernel_attribute_t attr,
uint32_t size,
const void *pValue) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSetAttribute,
hKernel,
attr,
size,
pValue);
ze_kernel_set_attribute_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.pattr = &attr;
tracerParams.psize = &size;
tracerParams.ppValue = &pValue;
L0::APITracerCallbackDataImp<ze_pfnKernelSetAttributeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSetAttributeCb_t, Kernel, pfnSetAttributeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSetAttribute,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.pattr,
*tracerParams.psize,
*tracerParams.ppValue);
}
__zedllexport ze_result_t __zecall
zeKernelGetProperties_Tracing(ze_kernel_handle_t hKernel,
ze_kernel_properties_t *pKernelProperties) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnGetProperties,
hKernel,
pKernelProperties);
ze_kernel_get_properties_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.ppKernelProperties = &pKernelProperties;
L0::APITracerCallbackDataImp<ze_pfnKernelGetPropertiesCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelGetPropertiesCb_t, Kernel, pfnGetPropertiesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnGetProperties,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.ppKernelProperties);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchKernel_Tracing(ze_command_list_handle_t hCommandList,
ze_kernel_handle_t hKernel,
const ze_group_count_t *pLaunchFuncArgs,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernel,
hCommandList,
hKernel,
pLaunchFuncArgs,
hSignalEvent,
numWaitEvents,
phWaitEvents);
ze_command_list_append_launch_kernel_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phKernel = &hKernel;
tracerParams.ppLaunchFuncArgs = &pLaunchFuncArgs;
tracerParams.phSignalEvent = &hSignalEvent;
tracerParams.pnumWaitEvents = &numWaitEvents;
tracerParams.pphWaitEvents = &phWaitEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchKernelCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchKernelCb_t,
CommandList,
pfnAppendLaunchKernelCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernel,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phKernel,
*tracerParams.ppLaunchFuncArgs,
*tracerParams.phSignalEvent,
*tracerParams.pnumWaitEvents,
*tracerParams.pphWaitEvents);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchKernelIndirect_Tracing(ze_command_list_handle_t hCommandList,
ze_kernel_handle_t hKernel,
const ze_group_count_t *pLaunchArgumentsBuffer,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernelIndirect,
hCommandList,
hKernel,
pLaunchArgumentsBuffer,
hSignalEvent,
numWaitEvents,
phWaitEvents);
ze_command_list_append_launch_kernel_indirect_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phKernel = &hKernel;
tracerParams.ppLaunchArgumentsBuffer = &pLaunchArgumentsBuffer;
tracerParams.phSignalEvent = &hSignalEvent;
tracerParams.pnumWaitEvents = &numWaitEvents;
tracerParams.pphWaitEvents = &phWaitEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchKernelIndirectCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchKernelIndirectCb_t,
CommandList,
pfnAppendLaunchKernelIndirectCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchKernelIndirect,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phKernel,
*tracerParams.ppLaunchArgumentsBuffer,
*tracerParams.phSignalEvent,
*tracerParams.pnumWaitEvents,
*tracerParams.pphWaitEvents);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchMultipleKernelsIndirect_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numKernels,
ze_kernel_handle_t *phKernels,
const uint32_t *pCountBuffer,
const ze_group_count_t *pLaunchArgumentsBuffer,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchMultipleKernelsIndirect,
hCommandList,
numKernels,
phKernels,
pCountBuffer,
pLaunchArgumentsBuffer,
hSignalEvent,
numWaitEvents,
phWaitEvents);
ze_command_list_append_launch_multiple_kernels_indirect_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.pnumKernels = &numKernels;
tracerParams.pphKernels = &phKernels;
tracerParams.ppCountBuffer = &pCountBuffer;
tracerParams.ppLaunchArgumentsBuffer = &pLaunchArgumentsBuffer;
tracerParams.phSignalEvent = &hSignalEvent;
tracerParams.pnumWaitEvents = &numWaitEvents;
tracerParams.pphWaitEvents = &phWaitEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchMultipleKernelsIndirectCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchMultipleKernelsIndirectCb_t,
CommandList,
pfnAppendLaunchMultipleKernelsIndirectCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchMultipleKernelsIndirect,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.pnumKernels,
*tracerParams.pphKernels,
*tracerParams.ppCountBuffer,
*tracerParams.ppLaunchArgumentsBuffer,
*tracerParams.phSignalEvent,
*tracerParams.pnumWaitEvents,
*tracerParams.pphWaitEvents);
}
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchCooperativeKernel_Tracing(ze_command_list_handle_t hCommandList,
ze_kernel_handle_t hKernel,
const ze_group_count_t *pLaunchFuncArgs,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchCooperativeKernel,
hCommandList,
hKernel,
pLaunchFuncArgs,
hSignalEvent,
numWaitEvents,
phWaitEvents);
ze_command_list_append_launch_cooperative_kernel_params_t tracerParams;
tracerParams.phCommandList = &hCommandList;
tracerParams.phKernel = &hKernel;
tracerParams.ppLaunchFuncArgs = &pLaunchFuncArgs;
tracerParams.phSignalEvent = &hSignalEvent;
tracerParams.pnumWaitEvents = &numWaitEvents;
tracerParams.pphWaitEvents = &phWaitEvents;
L0::APITracerCallbackDataImp<ze_pfnCommandListAppendLaunchCooperativeKernelCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnCommandListAppendLaunchCooperativeKernelCb_t,
CommandList, pfnAppendLaunchCooperativeKernelCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.CommandList.pfnAppendLaunchCooperativeKernel,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phCommandList,
*tracerParams.phKernel,
*tracerParams.ppLaunchFuncArgs,
*tracerParams.phSignalEvent,
*tracerParams.pnumWaitEvents,
*tracerParams.pphWaitEvents);
}
__zedllexport ze_result_t __zecall
zeModuleGetKernelNames_Tracing(ze_module_handle_t hModule,
uint32_t *pCount,
const char **pNames) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Module.pfnGetKernelNames,
hModule,
pCount,
pNames);
ze_module_get_kernel_names_params_t tracerParams;
tracerParams.phModule = &hModule;
tracerParams.ppCount = &pCount;
tracerParams.ppNames = &pNames;
L0::APITracerCallbackDataImp<ze_pfnModuleGetKernelNamesCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnModuleGetKernelNamesCb_t, Module, pfnGetKernelNamesCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Module.pfnGetKernelNames,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phModule,
*tracerParams.ppCount,
*tracerParams.ppNames);
}
__zedllexport ze_result_t __zecall
zeKernelSuggestMaxCooperativeGroupCount_Tracing(ze_kernel_handle_t hKernel,
uint32_t *totalGroupCount) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestMaxCooperativeGroupCount,
hKernel,
totalGroupCount);
ze_kernel_suggest_max_cooperative_group_count_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.ptotalGroupCount = &totalGroupCount;
L0::APITracerCallbackDataImp<ze_pfnKernelSuggestMaxCooperativeGroupCountCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelSuggestMaxCooperativeGroupCountCb_t,
Kernel, pfnSuggestMaxCooperativeGroupCountCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnSuggestMaxCooperativeGroupCount,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.ptotalGroupCount);
}
__zedllexport ze_result_t __zecall
zeKernelGetAttribute_Tracing(ze_kernel_handle_t hKernel,
ze_kernel_attribute_t attr,
uint32_t *pSize,
void *pValue) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Kernel.pfnGetAttribute,
hKernel,
attr,
pSize,
pValue);
ze_kernel_get_attribute_params_t tracerParams;
tracerParams.phKernel = &hKernel;
tracerParams.pattr = &attr;
tracerParams.ppSize = &pSize;
tracerParams.ppValue = &pValue;
L0::APITracerCallbackDataImp<ze_pfnKernelGetAttributeCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnKernelGetAttributeCb_t, Kernel, pfnGetAttributeCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Kernel.pfnGetAttribute,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phKernel,
*tracerParams.pattr,
*tracerParams.ppSize,
*tracerParams.ppValue);
}

View File

@@ -0,0 +1,131 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeModuleCreate_Tracing(ze_device_handle_t hDevice,
const ze_module_desc_t *desc,
ze_module_handle_t *phModule,
ze_module_build_log_handle_t *phBuildLog);
__zedllexport ze_result_t __zecall
zeModuleDestroy_Tracing(ze_module_handle_t hModule);
__zedllexport ze_result_t __zecall
zeModuleBuildLogDestroy_Tracing(ze_module_build_log_handle_t hModuleBuildLog);
__zedllexport ze_result_t __zecall
zeModuleBuildLogGetString_Tracing(ze_module_build_log_handle_t hModuleBuildLog,
size_t *pSize,
char *pBuildLog);
__zedllexport ze_result_t __zecall
zeModuleGetNativeBinary_Tracing(ze_module_handle_t hModule,
size_t *pSize,
uint8_t *pModuleNativeBinary);
__zedllexport ze_result_t __zecall
zeModuleGetGlobalPointer_Tracing(ze_module_handle_t hModule,
const char *pGlobalName,
void **pptr);
__zedllexport ze_result_t __zecall
zeKernelCreate_Tracing(ze_module_handle_t hModule,
const ze_kernel_desc_t *desc,
ze_kernel_handle_t *phFunction);
__zedllexport ze_result_t __zecall
zeKernelDestroy_Tracing(ze_kernel_handle_t hFunction);
__zedllexport ze_result_t __zecall
zeModuleGetFunctionPointer_Tracing(ze_module_handle_t hModule,
const char *pKernelName,
void **pfnFunction);
__zedllexport ze_result_t __zecall
zeKernelSetGroupSize_Tracing(ze_kernel_handle_t hFunction,
uint32_t groupSizeX,
uint32_t groupSizeY,
uint32_t groupSizeZ);
__zedllexport ze_result_t __zecall
zeKernelSuggestGroupSize_Tracing(ze_kernel_handle_t hFunction,
uint32_t globalSizeX,
uint32_t globalSizeY,
uint32_t globalSizeZ,
uint32_t *groupSizeX,
uint32_t *groupSizeY,
uint32_t *groupSizeZ);
__zedllexport ze_result_t __zecall
zeKernelSetArgumentValue_Tracing(ze_kernel_handle_t hFunction,
uint32_t argIndex,
size_t argSize,
const void *pArgValue);
__zedllexport ze_result_t __zecall
zeKernelSetAttribute_Tracing(ze_kernel_handle_t hKernel,
ze_kernel_attribute_t attr,
uint32_t size,
const void *pValue);
__zedllexport ze_result_t __zecall
zeKernelGetProperties_Tracing(ze_kernel_handle_t hKernel,
ze_kernel_properties_t *pKernelProperties);
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchKernel_Tracing(ze_command_list_handle_t hCommandList,
ze_kernel_handle_t hFunction,
const ze_group_count_t *pLaunchFuncArgs,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents);
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchKernelIndirect_Tracing(ze_command_list_handle_t hCommandList,
ze_kernel_handle_t hFunction,
const ze_group_count_t *pLaunchArgumentsBuffer,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents);
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchMultipleKernelsIndirect_Tracing(ze_command_list_handle_t hCommandList,
uint32_t numFunctions,
ze_kernel_handle_t *phFunctions,
const uint32_t *pCountBuffer,
const ze_group_count_t *pLaunchArgumentsBuffer,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents);
__zedllexport ze_result_t __zecall
zeCommandListAppendLaunchCooperativeKernel_Tracing(ze_command_list_handle_t hCommandList,
ze_kernel_handle_t hKernel,
const ze_group_count_t *pLaunchFuncArgs,
ze_event_handle_t hSignalEvent,
uint32_t numWaitEvents,
ze_event_handle_t *phWaitEvents);
__zedllexport ze_result_t __zecall
zeModuleGetKernelNames_Tracing(ze_module_handle_t hModule,
uint32_t *pCount,
const char **pNames);
__zedllexport ze_result_t __zecall
zeKernelSuggestMaxCooperativeGroupCount_Tracing(ze_kernel_handle_t hKernel,
uint32_t *totalGroupCount);
__zedllexport ze_result_t __zecall
zeKernelGetAttribute_Tracing(ze_kernel_handle_t hKernel,
ze_kernel_attribute_t attr,
uint32_t *pSize,
void *pValue);
}

View File

@@ -0,0 +1,114 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeDeviceMakeMemoryResident_Tracing(ze_device_handle_t hDevice,
void *ptr,
size_t size) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnMakeMemoryResident,
hDevice,
ptr,
size);
ze_device_make_memory_resident_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pptr = &ptr;
tracerParams.psize = &size;
L0::APITracerCallbackDataImp<ze_pfnDeviceMakeMemoryResidentCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceMakeMemoryResidentCb_t, Device, pfnMakeMemoryResidentCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnMakeMemoryResident,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pptr,
*tracerParams.psize);
}
__zedllexport ze_result_t __zecall
zeDeviceEvictMemory_Tracing(ze_device_handle_t hDevice,
void *ptr,
size_t size) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnEvictMemory,
hDevice,
ptr,
size);
ze_device_evict_memory_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pptr = &ptr;
tracerParams.psize = &size;
L0::APITracerCallbackDataImp<ze_pfnDeviceEvictMemoryCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceEvictMemoryCb_t, Device, pfnEvictMemoryCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnEvictMemory,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pptr,
*tracerParams.psize);
}
__zedllexport ze_result_t __zecall
zeDeviceMakeImageResident_Tracing(ze_device_handle_t hDevice,
ze_image_handle_t hImage) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnMakeImageResident, hDevice, hImage);
ze_device_make_image_resident_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.phImage = &hImage;
L0::APITracerCallbackDataImp<ze_pfnDeviceMakeImageResidentCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceMakeImageResidentCb_t, Device, pfnMakeImageResidentCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnMakeImageResident,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.phImage);
}
__zedllexport ze_result_t __zecall
zeDeviceEvictImage_Tracing(ze_device_handle_t hDevice,
ze_image_handle_t hImage) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Device.pfnEvictImage,
hDevice,
hImage);
ze_device_evict_image_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.phImage = &hImage;
L0::APITracerCallbackDataImp<ze_pfnDeviceEvictImageCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnDeviceEvictImageCb_t, Device, pfnEvictImageCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Device.pfnEvictImage,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.phImage);
}

View File

@@ -0,0 +1,30 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeDeviceMakeMemoryResident_Tracing(ze_device_handle_t hDevice,
void *ptr,
size_t size);
__zedllexport ze_result_t __zecall
zeDeviceEvictMemory_Tracing(ze_device_handle_t hDevice,
void *ptr,
size_t size);
__zedllexport ze_result_t __zecall
zeDeviceMakeImageResident_Tracing(ze_device_handle_t hDevice,
ze_image_handle_t hImage);
__zedllexport ze_result_t __zecall
zeDeviceEvictImage_Tracing(ze_device_handle_t hDevice,
ze_image_handle_t hImage);
} // extern "C"

View File

@@ -0,0 +1,58 @@
/*
* Copyright (C) 2019-2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "level_zero/tools/source/tracing/tracing_imp.h"
__zedllexport ze_result_t __zecall
zeSamplerCreate_Tracing(ze_device_handle_t hDevice,
const ze_sampler_desc_t *pDesc,
ze_sampler_handle_t *phSampler) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Sampler.pfnCreate,
hDevice,
pDesc,
phSampler);
ze_sampler_create_params_t tracerParams;
tracerParams.phDevice = &hDevice;
tracerParams.pdesc = &pDesc;
tracerParams.pphSampler = &phSampler;
L0::APITracerCallbackDataImp<ze_pfnSamplerCreateCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnSamplerCreateCb_t, Sampler, pfnCreateCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Sampler.pfnCreate,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phDevice,
*tracerParams.pdesc,
*tracerParams.pphSampler);
}
__zedllexport ze_result_t __zecall
zeSamplerDestroy_Tracing(ze_sampler_handle_t hSampler) {
ZE_HANDLE_TRACER_RECURSION(driver_ddiTable.core_ddiTable.Sampler.pfnDestroy,
hSampler);
ze_sampler_destroy_params_t tracerParams;
tracerParams.phSampler = &hSampler;
L0::APITracerCallbackDataImp<ze_pfnSamplerDestroyCb_t> apiCallbackData;
ZE_GEN_PER_API_CALLBACK_STATE(apiCallbackData, ze_pfnSamplerDestroyCb_t, Sampler, pfnDestroyCb);
return L0::APITracerWrapperImp(driver_ddiTable.core_ddiTable.Sampler.pfnDestroy,
&tracerParams,
apiCallbackData.apiOrdinal,
apiCallbackData.prologCallbacks,
apiCallbackData.epilogCallbacks,
*tracerParams.phSampler);
}

View File

@@ -0,0 +1,19 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern "C" {
__zedllexport ze_result_t __zecall
zeSamplerCreate_Tracing(ze_device_handle_t hDevice,
const ze_sampler_desc_t *desc,
ze_sampler_handle_t *phSampler);
__zedllexport ze_result_t __zecall
zeSamplerDestroy_Tracing(ze_sampler_handle_t hSampler);
}