From ec1e39bab869350c93812231d6583f3267df9f2c Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Fri, 8 Oct 2021 11:02:35 +0000 Subject: [PATCH] Move OCL specific part of FileLogger to ClFileLogger Signed-off-by: Mateusz Jablonski --- opencl/source/api/api.cpp | 153 +++++++++--------- opencl/source/command_queue/enqueue_common.h | 3 +- .../source/os_interface/windows/api_win.cpp | 33 ++-- .../source/sharings/gl/windows/cl_gl_api.cpp | 9 +- opencl/source/sharings/va/cl_va_api.cpp | 13 +- opencl/source/utilities/CMakeLists.txt | 3 +- opencl/source/utilities/cl_logger.cpp | 136 ++++++++++++++++ opencl/source/utilities/cl_logger.h | 34 ++++ .../unit_test/utilities/file_logger_tests.cpp | 85 +++++++--- .../unit_test/utilities/file_logger_tests.h | 5 + shared/source/utilities/CMakeLists.txt | 1 + .../source/utilities/logger.cpp | 124 +------------- shared/source/utilities/logger.h | 5 - 13 files changed, 353 insertions(+), 251 deletions(-) create mode 100644 opencl/source/utilities/cl_logger.cpp create mode 100644 opencl/source/utilities/cl_logger.h rename {opencl => shared}/source/utilities/logger.cpp (65%) diff --git a/opencl/source/api/api.cpp b/opencl/source/api/api.cpp index 9a2ea4e0ba..810c49f0d8 100644 --- a/opencl/source/api/api.cpp +++ b/opencl/source/api/api.cpp @@ -50,6 +50,7 @@ #include "opencl/source/sharings/sharing_factory.h" #include "opencl/source/tracing/tracing_api.h" #include "opencl/source/tracing/tracing_notify.h" +#include "opencl/source/utilities/cl_logger.h" #include "CL/cl.h" #include "config.h" @@ -1974,7 +1975,7 @@ cl_int CL_API_CALL clWaitForEvents(cl_uint numEvents, auto retVal = CL_SUCCESS; API_ENTER(&retVal); - DBG_LOG_INPUTS("eventList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventList), numEvents)); + DBG_LOG_INPUTS("eventList", getClFileLogger().getEvents(reinterpret_cast(eventList), numEvents)); for (unsigned int i = 0; i < numEvents && retVal == CL_SUCCESS; i++) retVal = validateObjects(eventList[i]); @@ -2282,8 +2283,8 @@ cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue commandQueue, DBG_LOG_INPUTS("commandQueue", commandQueue, "buffer", buffer, "blockingRead", blockingRead, "offset", offset, "cb", cb, "ptr", ptr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (CL_SUCCESS == retVal) { @@ -2311,7 +2312,7 @@ cl_int CL_API_CALL clEnqueueReadBuffer(cl_command_queue commandQueue, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueReadBuffer, &retVal); return retVal; } @@ -2351,8 +2352,8 @@ cl_int CL_API_CALL clEnqueueReadBufferRect(cl_command_queue commandQueue, "hostSlicePitch", hostSlicePitch, "ptr", ptr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pBuffer = nullptr; @@ -2425,8 +2426,8 @@ cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue commandQueue, DBG_LOG_INPUTS("commandQueue", commandQueue, "buffer", buffer, "blockingWrite", blockingWrite, "offset", offset, "cb", cb, "ptr", ptr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pBuffer = nullptr; @@ -2462,7 +2463,7 @@ cl_int CL_API_CALL clEnqueueWriteBuffer(cl_command_queue commandQueue, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueWriteBuffer, &retVal); return retVal; } @@ -2492,8 +2493,8 @@ cl_int CL_API_CALL clEnqueueWriteBufferRect(cl_command_queue commandQueue, "bufferRowPitch", bufferRowPitch, "bufferSlicePitch", bufferSlicePitch, "hostRowPitch", hostRowPitch, "hostSlicePitch", hostSlicePitch, "ptr", ptr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pBuffer = nullptr; @@ -2568,8 +2569,8 @@ cl_int CL_API_CALL clEnqueueFillBuffer(cl_command_queue commandQueue, "pattern", NEO::FileLoggerInstance().infoPointerToString(pattern, patternSize), "patternSize", patternSize, "offset", offset, "size", size, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pBuffer = nullptr; @@ -2618,8 +2619,8 @@ cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue commandQueue, DBG_LOG_INPUTS("commandQueue", commandQueue, "srcBuffer", srcBuffer, "dstBuffer", dstBuffer, "srcOffset", srcOffset, "dstOffset", dstOffset, "cb", cb, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pSrcBuffer = nullptr; @@ -2655,7 +2656,7 @@ cl_int CL_API_CALL clEnqueueCopyBuffer(cl_command_queue commandQueue, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueCopyBuffer, &retVal); return retVal; } @@ -2684,8 +2685,8 @@ cl_int CL_API_CALL clEnqueueCopyBufferRect(cl_command_queue commandQueue, "srcRowPitch", srcRowPitch, "srcSlicePitch", srcSlicePitch, "dstRowPitch", dstRowPitch, "dstSlicePitch", dstSlicePitch, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pSrcBuffer = nullptr; @@ -2736,7 +2737,7 @@ cl_int CL_API_CALL clEnqueueCopyBufferRect(cl_command_queue commandQueue, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueCopyBufferRect, &retVal); return retVal; } @@ -2768,8 +2769,8 @@ cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue commandQueue, "region[0]", NEO::FileLoggerInstance().getInput(region, 0), "region[1]", NEO::FileLoggerInstance().getInput(region, 1), "region[2]", NEO::FileLoggerInstance().getInput(region, 2), "rowPitch", rowPitch, "slicePitch", slicePitch, "ptr", ptr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (CL_SUCCESS == retVal) { @@ -2810,7 +2811,7 @@ cl_int CL_API_CALL clEnqueueReadImage(cl_command_queue commandQueue, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueReadImage, &retVal); return retVal; } @@ -2842,8 +2843,8 @@ cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue commandQueue, "region[0]", NEO::FileLoggerInstance().getInput(region, 0), "region[1]", NEO::FileLoggerInstance().getInput(region, 1), "region[2]", NEO::FileLoggerInstance().getInput(region, 2), "inputRowPitch", inputRowPitch, "inputSlicePitch", inputSlicePitch, "ptr", ptr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (CL_SUCCESS == retVal) { if (pImage->writeMemObjFlagsInvalid()) { @@ -2883,7 +2884,7 @@ cl_int CL_API_CALL clEnqueueWriteImage(cl_command_queue commandQueue, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueWriteImage, &retVal); return retVal; } @@ -2913,8 +2914,8 @@ cl_int CL_API_CALL clEnqueueFillImage(cl_command_queue commandQueue, "origin[0]", NEO::FileLoggerInstance().getInput(origin, 0), "origin[1]", NEO::FileLoggerInstance().getInput(origin, 1), "origin[2]", NEO::FileLoggerInstance().getInput(origin, 2), "region[0]", NEO::FileLoggerInstance().getInput(region, 0), "region[1]", NEO::FileLoggerInstance().getInput(region, 1), "region[2]", NEO::FileLoggerInstance().getInput(region, 2), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (CL_SUCCESS == retVal) { retVal = Image::validateRegionAndOrigin(origin, region, dstImage->getImageDesc()); @@ -2938,7 +2939,7 @@ cl_int CL_API_CALL clEnqueueFillImage(cl_command_queue commandQueue, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueFillImage, &retVal); return retVal; } @@ -2969,8 +2970,8 @@ cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue commandQueue, "dstOrigin[0]", NEO::FileLoggerInstance().getInput(dstOrigin, 0), "dstOrigin[1]", NEO::FileLoggerInstance().getInput(dstOrigin, 1), "dstOrigin[2]", NEO::FileLoggerInstance().getInput(dstOrigin, 2), "region[0]", region ? region[0] : 0, "region[1]", region ? region[1] : 0, "region[2]", region ? region[2] : 0, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (CL_SUCCESS == retVal) { if (memcmp(&pSrcImage->getImageFormat(), &pDstImage->getImageFormat(), sizeof(cl_image_format))) { @@ -3025,7 +3026,7 @@ cl_int CL_API_CALL clEnqueueCopyImage(cl_command_queue commandQueue, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueCopyImage, &retVal); return retVal; } @@ -3048,8 +3049,8 @@ cl_int CL_API_CALL clEnqueueCopyImageToBuffer(cl_command_queue commandQueue, "region[0]", NEO::FileLoggerInstance().getInput(region, 0), "region[1]", NEO::FileLoggerInstance().getInput(region, 1), "region[2]", NEO::FileLoggerInstance().getInput(region, 2), "dstOffset", dstOffset, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Image *pSrcImage = nullptr; @@ -3091,7 +3092,7 @@ cl_int CL_API_CALL clEnqueueCopyImageToBuffer(cl_command_queue commandQueue, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueCopyImageToBuffer, &retVal); return retVal; } @@ -3113,8 +3114,8 @@ cl_int CL_API_CALL clEnqueueCopyBufferToImage(cl_command_queue commandQueue, "dstOrigin[0]", NEO::FileLoggerInstance().getInput(dstOrigin, 0), "dstOrigin[1]", NEO::FileLoggerInstance().getInput(dstOrigin, 1), "dstOrigin[2]", NEO::FileLoggerInstance().getInput(dstOrigin, 2), "region[0]", NEO::FileLoggerInstance().getInput(region, 0), "region[1]", NEO::FileLoggerInstance().getInput(region, 1), "region[2]", NEO::FileLoggerInstance().getInput(region, 2), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Buffer *pSrcBuffer = nullptr; @@ -3156,7 +3157,7 @@ cl_int CL_API_CALL clEnqueueCopyBufferToImage(cl_command_queue commandQueue, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueCopyBufferToImage, &retVal); return retVal; } @@ -3179,8 +3180,8 @@ void *CL_API_CALL clEnqueueMapBuffer(cl_command_queue commandQueue, DBG_LOG_INPUTS("commandQueue", commandQueue, "buffer", buffer, "blockingMap", blockingMap, "mapFlags", mapFlags, "offset", offset, "cb", cb, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); do { auto pCommandQueue = castToObject(commandQueue); @@ -3219,7 +3220,7 @@ void *CL_API_CALL clEnqueueMapBuffer(cl_command_queue commandQueue, } while (false); err.set(retVal); - DBG_LOG_INPUTS("retPtr", retPtr, "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("retPtr", retPtr, "event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueMapBuffer, &retPtr); return retPtr; @@ -3253,8 +3254,8 @@ void *CL_API_CALL clEnqueueMapImage(cl_command_queue commandQueue, "imageRowPitch", NEO::FileLoggerInstance().getInput(imageRowPitch, 0), "imageSlicePitch", NEO::FileLoggerInstance().getInput(imageSlicePitch, 0), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); do { Image *pImage = nullptr; @@ -3304,7 +3305,7 @@ void *CL_API_CALL clEnqueueMapImage(cl_command_queue commandQueue, } while (false); err.set(retVal); - DBG_LOG_INPUTS("retPtr", retPtr, "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("retPtr", retPtr, "event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueMapImage, &retPtr); return retPtr; @@ -3331,8 +3332,8 @@ cl_int CL_API_CALL clEnqueueUnmapMemObject(cl_command_queue commandQueue, "memObj", memObj, "mappedPtr", mappedPtr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal == CL_SUCCESS) { cl_command_queue_capabilities_intel requiredCapability = 0u; @@ -3363,7 +3364,7 @@ cl_int CL_API_CALL clEnqueueUnmapMemObject(cl_command_queue commandQueue, retVal = pCommandQueue->enqueueUnmapMemObject(pMemObj, mappedPtr, numEventsInWaitList, eventWaitList, event); } - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueUnmapMemObject, &retVal); return retVal; } @@ -3384,8 +3385,8 @@ cl_int CL_API_CALL clEnqueueMigrateMemObjects(cl_command_queue commandQueue, "memObjects", memObjects, "flags", flags, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; retVal = validateObjects( @@ -3426,7 +3427,7 @@ cl_int CL_API_CALL clEnqueueMigrateMemObjects(cl_command_queue commandQueue, numEventsInWaitList, eventWaitList, event); - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueMigrateMemObjects, &retVal); return retVal; } @@ -3450,8 +3451,8 @@ cl_int CL_API_CALL clEnqueueNDRangeKernel(cl_command_queue commandQueue, "globalWorkSize", NEO::FileLoggerInstance().getSizes(globalWorkSize, workDim, false), "localWorkSize", NEO::FileLoggerInstance().getSizes(localWorkSize, workDim, true), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; MultiDeviceKernel *pMultiDeviceKernel = nullptr; @@ -3495,7 +3496,7 @@ cl_int CL_API_CALL clEnqueueNDRangeKernel(cl_command_queue commandQueue, eventWaitList, event); - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); TRACING_EXIT(clEnqueueNDRangeKernel, &retVal); return retVal; } @@ -3510,8 +3511,8 @@ cl_int CL_API_CALL clEnqueueTask(cl_command_queue commandQueue, API_ENTER(&retVal); DBG_LOG_INPUTS("commandQueue", commandQueue, "kernel", kernel, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); cl_uint workDim = 3; size_t *globalWorkOffset = nullptr; size_t globalWorkSize[3] = {1, 1, 1}; @@ -3546,8 +3547,8 @@ cl_int CL_API_CALL clEnqueueNativeKernel(cl_command_queue commandQueue, DBG_LOG_INPUTS("commandQueue", commandQueue, "userFunc", userFunc, "args", args, "cbArgs", cbArgs, "numMemObjects", numMemObjects, "memList", memList, "argsMemLoc", argsMemLoc, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); TRACING_EXIT(clEnqueueNativeKernel, &retVal); return retVal; @@ -3588,7 +3589,7 @@ cl_int CL_API_CALL clEnqueueWaitForEvents(cl_command_queue commandQueue, TRACING_ENTER(clEnqueueWaitForEvents, &commandQueue, &numEvents, &eventList); cl_int retVal = CL_SUCCESS; API_ENTER(&retVal); - DBG_LOG_INPUTS("commandQueue", commandQueue, "eventList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventList), numEvents)); + DBG_LOG_INPUTS("commandQueue", commandQueue, "eventList", getClFileLogger().getEvents(reinterpret_cast(eventList), numEvents)); auto pCommandQueue = castToObject(commandQueue); if (!pCommandQueue) { @@ -3652,8 +3653,8 @@ cl_int CL_API_CALL clEnqueueMarkerWithWaitList(cl_command_queue commandQueue, API_ENTER(&retVal); DBG_LOG_INPUTS("cl_command_queue", commandQueue, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; retVal = validateObjects( @@ -3688,8 +3689,8 @@ cl_int CL_API_CALL clEnqueueBarrierWithWaitList(cl_command_queue commandQueue, API_ENTER(&retVal); DBG_LOG_INPUTS("cl_command_queue", commandQueue, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; @@ -4548,8 +4549,8 @@ cl_int CL_API_CALL clEnqueueSVMFree(cl_command_queue commandQueue, "pfnFreeFunc", pfnFreeFunc, "userData", userData, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { TRACING_EXIT(clEnqueueSVMFree, &retVal); @@ -4607,8 +4608,8 @@ cl_int CL_API_CALL clEnqueueSVMMemcpy(cl_command_queue commandQueue, "srcPtr", srcPtr, "size", size, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { TRACING_EXIT(clEnqueueSVMMemcpy, &retVal); @@ -4671,8 +4672,8 @@ cl_int CL_API_CALL clEnqueueSVMMemFill(cl_command_queue commandQueue, "patternSize", patternSize, "size", size, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { TRACING_EXIT(clEnqueueSVMMemFill, &retVal); @@ -4733,8 +4734,8 @@ cl_int CL_API_CALL clEnqueueSVMMap(cl_command_queue commandQueue, "svmPtr", NEO::FileLoggerInstance().infoPointerToString(svmPtr, size), "size", size, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (CL_SUCCESS != retVal) { TRACING_EXIT(clEnqueueSVMMap, &retVal); @@ -4793,8 +4794,8 @@ cl_int CL_API_CALL clEnqueueSVMUnmap(cl_command_queue commandQueue, DBG_LOG_INPUTS("commandQueue", commandQueue, "svmPtr", svmPtr, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { TRACING_EXIT(clEnqueueSVMUnmap, &retVal); @@ -5527,8 +5528,8 @@ cl_int CL_API_CALL clEnqueueSVMMigrateMem(cl_command_queue commandQueue, "sizes", NEO::FileLoggerInstance().getInput(sizes, 0), "flags", flags, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; retVal = validateObjects( @@ -5914,8 +5915,8 @@ cl_int CL_API_CALL clEnqueueNDCountKernelINTEL(cl_command_queue commandQueue, "workgroupCount", NEO::FileLoggerInstance().getSizes(workgroupCount, workDim, false), "localWorkSize", NEO::FileLoggerInstance().getSizes(localWorkSize, workDim, true), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", NEO::FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; Kernel *pKernel = nullptr; @@ -5991,7 +5992,7 @@ cl_int CL_API_CALL clEnqueueNDCountKernelINTEL(cl_command_queue commandQueue, eventWaitList, event); - DBG_LOG_INPUTS("event", NEO::FileLoggerInstance().getEvents(reinterpret_cast(event), 1u)); + DBG_LOG_INPUTS("event", getClFileLogger().getEvents(reinterpret_cast(event), 1u)); return retVal; } diff --git a/opencl/source/command_queue/enqueue_common.h b/opencl/source/command_queue/enqueue_common.h index 7b18a2cddf..eee19a1db0 100644 --- a/opencl/source/command_queue/enqueue_common.h +++ b/opencl/source/command_queue/enqueue_common.h @@ -40,6 +40,7 @@ #include "opencl/source/memory_manager/migration_controller.h" #include "opencl/source/program/block_kernel_manager.h" #include "opencl/source/program/printf_handler.h" +#include "opencl/source/utilities/cl_logger.h" #include "pipe_control_args.h" @@ -427,7 +428,7 @@ void CommandQueueHw::processDispatchForKernels(const MultiDispatchInf KernelOperation *blockedCommandsData, TimestampPacketDependencies ×tampPacketDependencies) { TagNodeBase *hwPerfCounter = nullptr; - FileLoggerInstance().dumpKernelArgs(&multiDispatchInfo); + getClFileLogger().dumpKernelArgs(&multiDispatchInfo); printfHandler.reset(PrintfHandler::create(multiDispatchInfo, *device)); if (printfHandler) { diff --git a/opencl/source/os_interface/windows/api_win.cpp b/opencl/source/os_interface/windows/api_win.cpp index 424c610a2d..696e2ea0a0 100644 --- a/opencl/source/os_interface/windows/api_win.cpp +++ b/opencl/source/os_interface/windows/api_win.cpp @@ -21,6 +21,7 @@ #include "opencl/source/sharings/d3d/d3d_buffer.h" #include "opencl/source/sharings/d3d/d3d_surface.h" #include "opencl/source/sharings/d3d/d3d_texture.h" +#include "opencl/source/utilities/cl_logger.h" using namespace NEO; @@ -158,8 +159,8 @@ cl_int CL_API_CALL clEnqueueAcquireDX9ObjectsINTEL(cl_command_queue commandQueue "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -177,8 +178,8 @@ cl_int CL_API_CALL clEnqueueReleaseDX9ObjectsINTEL(cl_command_queue commandQueue "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -250,8 +251,8 @@ cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR(cl_command_queue commandQ "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -270,8 +271,8 @@ cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR(cl_command_queue commandQ "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -446,8 +447,8 @@ cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR(cl_command_queue commandQueue "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -479,8 +480,8 @@ cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR(cl_command_queue commandQueue "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -655,8 +656,8 @@ cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR(cl_command_queue commandQueue "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } @@ -688,8 +689,8 @@ cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR(cl_command_queue commandQueue "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); if (retVal != CL_SUCCESS) { return retVal; } diff --git a/opencl/source/sharings/gl/windows/cl_gl_api.cpp b/opencl/source/sharings/gl/windows/cl_gl_api.cpp index e3e95b98ee..e0ab7ecf4b 100644 --- a/opencl/source/sharings/gl/windows/cl_gl_api.cpp +++ b/opencl/source/sharings/gl/windows/cl_gl_api.cpp @@ -26,6 +26,7 @@ #include "opencl/source/sharings/gl/gl_texture.h" #include "opencl/source/sharings/gl/windows/gl_sharing_windows.h" #include "opencl/source/tracing/tracing_notify.h" +#include "opencl/source/utilities/cl_logger.h" #include "CL/cl.h" #include "CL/cl_gl.h" @@ -227,8 +228,8 @@ cl_int CL_API_CALL clEnqueueAcquireGLObjects(cl_command_queue commandQueue, cl_u API_ENTER(&retVal); DBG_LOG_INPUTS("commandQueue", commandQueue, "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, "eventWaitList", - FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), "event", - FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), "event", + getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; retVal = validateObjects(WithCastToInternal(commandQueue, &pCommandQueue), EventWaitList(numEventsInWaitList, eventWaitList)); @@ -264,8 +265,8 @@ cl_int CL_API_CALL clEnqueueReleaseGLObjects(cl_command_queue commandQueue, cl_u API_ENTER(&retVal); DBG_LOG_INPUTS("commandQueue", commandQueue, "numObjects", numObjects, "memObjects", memObjects, "numEventsInWaitList", numEventsInWaitList, "eventWaitList", - FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), "event", - FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), "event", + getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; retVal = validateObjects(WithCastToInternal(commandQueue, &pCommandQueue), EventWaitList(numEventsInWaitList, eventWaitList)); diff --git a/opencl/source/sharings/va/cl_va_api.cpp b/opencl/source/sharings/va/cl_va_api.cpp index 3ad759c49f..3509ae9242 100644 --- a/opencl/source/sharings/va/cl_va_api.cpp +++ b/opencl/source/sharings/va/cl_va_api.cpp @@ -16,6 +16,7 @@ #include "opencl/source/sharings/va/va_device.h" #include "opencl/source/sharings/va/va_sharing.h" #include "opencl/source/sharings/va/va_surface.h" +#include "opencl/source/utilities/cl_logger.h" #include "CL/cl.h" @@ -96,10 +97,10 @@ clEnqueueAcquireVA_APIMediaSurfacesINTEL(cl_command_queue commandQueue, API_ENTER(&status); DBG_LOG_INPUTS("commandQueue", commandQueue, "numObjects", numObjects, - "memObjects", FileLoggerInstance().getMemObjects(reinterpret_cast(memObjects), numObjects), + "memObjects", getClFileLogger().getMemObjects(reinterpret_cast(memObjects), numObjects), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; @@ -123,10 +124,10 @@ clEnqueueReleaseVA_APIMediaSurfacesINTEL(cl_command_queue commandQueue, API_ENTER(&status); DBG_LOG_INPUTS("commandQueue", commandQueue, "numObjects", numObjects, - "memObjects", FileLoggerInstance().getMemObjects(reinterpret_cast(memObjects), numObjects), + "memObjects", getClFileLogger().getMemObjects(reinterpret_cast(memObjects), numObjects), "numEventsInWaitList", numEventsInWaitList, - "eventWaitList", FileLoggerInstance().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), - "event", FileLoggerInstance().getEvents(reinterpret_cast(event), 1)); + "eventWaitList", getClFileLogger().getEvents(reinterpret_cast(eventWaitList), numEventsInWaitList), + "event", getClFileLogger().getEvents(reinterpret_cast(event), 1)); CommandQueue *pCommandQueue = nullptr; diff --git a/opencl/source/utilities/CMakeLists.txt b/opencl/source/utilities/CMakeLists.txt index b7b0d9a4dc..64858eec8c 100644 --- a/opencl/source/utilities/CMakeLists.txt +++ b/opencl/source/utilities/CMakeLists.txt @@ -6,7 +6,8 @@ set(RUNTIME_SRCS_UTILITIES_BASE ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt - ${CMAKE_CURRENT_SOURCE_DIR}/logger.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cl_logger.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/cl_logger.h ) set_property(GLOBAL PROPERTY RUNTIME_SRCS_UTILITIES_BASE ${RUNTIME_SRCS_UTILITIES_BASE}) diff --git a/opencl/source/utilities/cl_logger.cpp b/opencl/source/utilities/cl_logger.cpp new file mode 100644 index 0000000000..260a10f7db --- /dev/null +++ b/opencl/source/utilities/cl_logger.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#include "opencl/source/utilities/cl_logger.h" + +#include "shared/source/debug_settings/debug_settings_manager.h" + +#include "opencl/source/event/event.h" +#include "opencl/source/helpers/dispatch_info.h" +#include "opencl/source/kernel/kernel.h" +#include "opencl/source/mem_obj/mem_obj.h" + +namespace NEO { + +template +ClFileLogger::ClFileLogger(FileLogger &baseLoggerIn, const DebugVariables &flags) : baseLogger(baseLoggerIn) { + dumpKernelArgsEnabled = flags.DumpKernelArgs.get(); +} + +ClFileLogger &getClFileLogger() { + static ClFileLogger clFileLoggerInstance(FileLoggerInstance(), DebugManager.flags); + return clFileLoggerInstance; +} + +template +void ClFileLogger::dumpKernelArgs(const MultiDispatchInfo *multiDispatchInfo) { + if (false == baseLogger.enabled()) { + return; + } + + if (dumpKernelArgsEnabled == false || multiDispatchInfo == nullptr) { + return; + } + + for (auto &dispatchInfo : *multiDispatchInfo) { + auto kernel = dispatchInfo.getKernel(); + if (kernel == nullptr) { + continue; + } + const auto &kernelDescriptor = kernel->getKernelInfo().kernelDescriptor; + const auto &explicitArgs = kernelDescriptor.payloadMappings.explicitArgs; + for (unsigned int i = 0; i < explicitArgs.size(); i++) { + std::string type; + std::string fileName; + const char *ptr = nullptr; + size_t size = 0; + uint64_t flags = 0; + std::unique_ptr argVal = nullptr; + + const auto &arg = explicitArgs[i]; + if (arg.getTraits().getAddressQualifier() == KernelArgMetadata::AddrLocal) { + type = "local"; + } else if (arg.is()) { + type = "image"; + auto clMem = reinterpret_cast(kernel->getKernelArg(i)); + auto memObj = castToObject(clMem); + if (memObj != nullptr) { + ptr = static_cast(memObj->getCpuAddress()); + size = memObj->getSize(); + flags = memObj->getFlags(); + } + } else if (arg.is()) { + type = "sampler"; + } else if (arg.is()) { + type = "buffer"; + auto clMem = reinterpret_cast(kernel->getKernelArg(i)); + auto memObj = castToObject(clMem); + if (memObj != nullptr) { + ptr = static_cast(memObj->getCpuAddress()); + size = memObj->getSize(); + flags = memObj->getFlags(); + } + } else { + type = "immediate"; + auto crossThreadData = kernel->getCrossThreadData(); + auto crossThreadDataSize = kernel->getCrossThreadDataSize(); + argVal = std::unique_ptr(new char[crossThreadDataSize]); + + size_t totalArgSize = 0; + for (const auto &element : arg.as().elements) { + auto pSource = ptrOffset(crossThreadData, element.offset); + auto pDestination = ptrOffset(argVal.get(), element.sourceOffset); + memcpy_s(pDestination, element.size, pSource, element.size); + totalArgSize += element.size; + } + size = totalArgSize; + ptr = argVal.get(); + } + + if (ptr && size) { + fileName = kernelDescriptor.kernelMetadata.kernelName + "_arg_" + std::to_string(i) + "_" + type + "_size_" + std::to_string(size) + "_flags_" + std::to_string(flags) + ".bin"; + baseLogger.writeToFile(fileName, ptr, size, std::ios::trunc | std::ios::binary); + } + } + } +} + +template +const std::string ClFileLogger::getEvents(const uintptr_t *input, uint32_t numOfEvents) { + if (false == baseLogger.enabled()) { + return ""; + } + + std::stringstream os; + for (uint32_t i = 0; i < numOfEvents; i++) { + if (input != nullptr) { + cl_event event = (reinterpret_cast(input))[i]; + os << "cl_event " << event << ", Event " << (Event *)event << ", "; + } + } + return os.str(); +} + +template +const std::string ClFileLogger::getMemObjects(const uintptr_t *input, uint32_t numOfObjects) { + if (false == baseLogger.enabled()) { + return ""; + } + + std::stringstream os; + for (uint32_t i = 0; i < numOfObjects; i++) { + if (input != nullptr) { + cl_mem mem = const_cast(reinterpret_cast(input)[i]); + os << "cl_mem " << mem << ", MemObj " << static_cast(mem) << ", "; + } + } + return os.str(); +} +template class ClFileLogger; +template class ClFileLogger; +template class ClFileLogger; +} // namespace NEO diff --git a/opencl/source/utilities/cl_logger.h b/opencl/source/utilities/cl_logger.h new file mode 100644 index 0000000000..03536f23aa --- /dev/null +++ b/opencl/source/utilities/cl_logger.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#pragma once +#include "shared/source/helpers/non_copyable_or_moveable.h" +#include "shared/source/utilities/logger.h" + +#include +#include +#include + +namespace NEO { +struct MultiDispatchInfo; + +template +class ClFileLogger : public NonCopyableOrMovableClass { + public: + ClFileLogger(FileLogger &baseLoggerInm, const DebugVariables &flags); + + void dumpKernelArgs(const MultiDispatchInfo *multiDispatchInfo); + const std::string getEvents(const uintptr_t *input, uint32_t numOfEvents); + const std::string getMemObjects(const uintptr_t *input, uint32_t numOfObjects); + + protected: + bool dumpKernelArgsEnabled = false; + FileLogger &baseLogger; +}; + +ClFileLogger &getClFileLogger(); +}; // namespace NEO diff --git a/opencl/test/unit_test/utilities/file_logger_tests.cpp b/opencl/test/unit_test/utilities/file_logger_tests.cpp index 956113efc3..44c56b790b 100644 --- a/opencl/test/unit_test/utilities/file_logger_tests.cpp +++ b/opencl/test/unit_test/utilities/file_logger_tests.cpp @@ -230,10 +230,11 @@ TEST(FileLogger, WhenGettingEventsThenCorrectValueIsReturned) { flags.LogApiCalls.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); // getEvents returns string uintptr_t event = 8; uintptr_t *input[3] = {&event, &event, &event}; - std::string eventsString = fileLogger.getEvents((uintptr_t *)input, 2); + std::string eventsString = clFileLogger.getEvents((uintptr_t *)input, 2); EXPECT_NE(0u, eventsString.size()); } @@ -242,8 +243,9 @@ TEST(FileLogger, GivenNullInputWhenGettingEventsThenZeroIsReturned) { DebugVariables flags; FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); // getEvents returns 0 sized string - std::string event = fileLogger.getEvents(nullptr, 2); + std::string event = clFileLogger.getEvents(nullptr, 2); EXPECT_EQ(0u, event.size()); } @@ -253,13 +255,14 @@ TEST(FileLogger, GivenLoggerWithDebugFunctionalityWhenGetMemObjectsIsCalledThenC flags.LogApiCalls.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); MockBuffer buffer; MemObj *memoryObject = &buffer; cl_mem clMem = memoryObject; cl_mem clMemObjects[] = {clMem, clMem}; cl_uint numObjects = 2; - std::string memObjectString = fileLogger.getMemObjects(reinterpret_cast(clMemObjects), numObjects); + std::string memObjectString = clFileLogger.getMemObjects(reinterpret_cast(clMemObjects), numObjects); EXPECT_NE(0u, memObjectString.size()); std::stringstream output; output << "cl_mem " << clMem << ", MemObj " << memoryObject; @@ -270,7 +273,8 @@ TEST(FileLogger, GivenDebugFunctionalityWhenGetMemObjectsIsCalledWithNullptrThen std::string testFile = "testfile"; DebugVariables flags; FullyEnabledFileLogger fileLogger(testFile, flags); - std::string memObjectString = fileLogger.getMemObjects(nullptr, 2); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); + std::string memObjectString = clFileLogger.getMemObjects(nullptr, 2); EXPECT_EQ(0u, memObjectString.size()); } @@ -278,7 +282,8 @@ TEST(FileLogger, GiveDisabledDebugFunctionalityWhenGetMemObjectsIsCalledThenCall std::string testFile = "testfile"; DebugVariables flags; FullyDisabledFileLogger fileLogger(testFile, flags); - std::string memObjectString = fileLogger.getMemObjects(nullptr, 2); + FullyDisabledClFileLogger clFileLogger(fileLogger, flags); + std::string memObjectString = clFileLogger.getMemObjects(nullptr, 2); EXPECT_EQ(0u, memObjectString.size()); } @@ -338,8 +343,9 @@ TEST(FileLogger, GivenNullMdiWhenDumpingKernelsThenFileIsNotCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs((const MultiDispatchInfo *)nullptr); + clFileLogger.dumpKernelArgs(nullptr); EXPECT_EQ(fileLogger.createdFilesCount(), 0); } @@ -362,8 +368,9 @@ TEST(FileLogger, GivenDebugFunctionalityWhenDebugFlagIsDisabledThenDoNotDumpKern DebugVariables flags; flags.DumpKernelArgs.set(false); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(multiDispatchInfo.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // check if file was created std::string expectedFile = "_arg_0_immediate_size_32_flags_0.bin"; @@ -391,8 +398,9 @@ TEST(FileLogger, GivenMdiWhenDumpingKernelArgsThenFileIsCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(multiDispatchInfo.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // check if file was created std::string expectedFile = "_arg_0_immediate_size_32_flags_0.bin"; @@ -407,7 +415,11 @@ TEST(FileLogger, GivenNullWhenDumpingKernelArgsThenFileIsNotCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); - fileLogger.dumpKernelArgs((const Kernel *)nullptr); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); + + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), nullptr)); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); EXPECT_EQ(fileLogger.createdFilesCount(), 0); } @@ -418,13 +430,15 @@ TEST(FileLogger, GivenEmptyKernelWhenDumpingKernelArgsThenFileIsNotCreated) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); std::string testFile = "testfile"; DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(kernel.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); EXPECT_EQ(fileLogger.createdFilesCount(), 0); } @@ -436,6 +450,7 @@ TEST(FileLogger, GivenImmediateWhenDumpingKernelArgsThenFileIsCreated) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); kernelInfo->addArgImmediate(0, 32, 32); @@ -447,8 +462,9 @@ TEST(FileLogger, GivenImmediateWhenDumpingKernelArgsThenFileIsCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(kernel.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // check if file was created EXPECT_TRUE(fileLogger.wasFileCreated("_arg_0_immediate_size_32_flags_0.bin")); @@ -463,6 +479,7 @@ TEST(FileLogger, GivenImmediateZeroSizeWhenDumpingKernelArgsThenFileIsNotCreated auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); kernelInfo->addArgImmediate(0, 0, 32); @@ -474,7 +491,8 @@ TEST(FileLogger, GivenImmediateZeroSizeWhenDumpingKernelArgsThenFileIsNotCreated DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); - fileLogger.dumpKernelArgs(kernel.get()); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // no files should be created for zero size EXPECT_EQ(fileLogger.createdFilesCount(), 0); @@ -486,6 +504,7 @@ TEST(FileLogger, GivenLocalBufferWhenDumpingKernelArgsThenFileIsNotCreated) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); MockProgram program(toClDeviceVector(*device)); auto kernel = std::unique_ptr(new MockKernel(&program, *kernelInfo, *device)); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); kernelInfo->addArgBuffer(0); kernelInfo->setAddressQualifier(0, KernelArgMetadata::AddrLocal); @@ -494,7 +513,8 @@ TEST(FileLogger, GivenLocalBufferWhenDumpingKernelArgsThenFileIsNotCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); - fileLogger.dumpKernelArgs(kernel.get()); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // no files should be created for local buffer EXPECT_EQ(fileLogger.createdFilesCount(), 0); @@ -507,6 +527,7 @@ TEST(FileLogger, GivenBufferNotSetWhenDumpingKernelArgsThenFileIsNotCreated) { auto context = clUniquePtr(new MockContext(device.get())); auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = std::make_unique(program.get(), *kernelInfo, *device); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); kernelInfo->addArgBuffer(0); kernelInfo->addExtendedMetadata(0, "", "uint8 *buffer"); @@ -521,8 +542,9 @@ TEST(FileLogger, GivenBufferNotSetWhenDumpingKernelArgsThenFileIsNotCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(kernel.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // no files should be created for local buffer EXPECT_EQ(fileLogger.createdFilesCount(), 0); @@ -538,6 +560,7 @@ TEST(FileLogger, GivenBufferWhenDumpingKernelArgsThenFileIsCreated) { kernelInfo->kernelDescriptor.kernelAttributes.simdSize = 1; auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = std::make_unique(program.get(), *kernelInfo, *device); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); kernelInfo->addArgBuffer(0); kernelInfo->addExtendedMetadata(0, "", "uint8 *buffer"); @@ -554,8 +577,9 @@ TEST(FileLogger, GivenBufferWhenDumpingKernelArgsThenFileIsCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(kernel.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); buffer->release(); @@ -573,6 +597,7 @@ TEST(FileLogger, GivenSamplerWhenDumpingKernelArgsThenFileIsNotCreated) { auto context = clUniquePtr(new MockContext(device.get())); auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = std::make_unique(program.get(), *kernelInfo, *device); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); kernelInfo->addArgSampler(0); kernelInfo->addExtendedMetadata(0, "", "sampler test"); @@ -583,8 +608,9 @@ TEST(FileLogger, GivenSamplerWhenDumpingKernelArgsThenFileIsNotCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(kernel.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // no files should be created for sampler arg EXPECT_EQ(fileLogger.createdFilesCount(), 0); @@ -597,6 +623,7 @@ TEST(FileLogger, GivenImageNotSetWhenDumpingKernelArgsThenFileIsNotCreated) { auto context = clUniquePtr(new MockContext(device.get())); auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); auto kernel = std::make_unique(program.get(), *kernelInfo, *device); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); char surfaceStateHeap[0x80]; kernelInfo->heapInfo.pSsh = surfaceStateHeap; @@ -616,8 +643,9 @@ TEST(FileLogger, GivenImageNotSetWhenDumpingKernelArgsThenFileIsNotCreated) { DebugVariables flags; flags.DumpKernelArgs.set(true); FullyEnabledFileLogger fileLogger(testFile, flags); + FullyEnabledClFileLogger clFileLogger(fileLogger, flags); - fileLogger.dumpKernelArgs(kernel.get()); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // no files should be created for local buffer EXPECT_EQ(fileLogger.createdFilesCount(), 0); @@ -652,6 +680,7 @@ TEST(FileLogger, GivenDisabledDebugFunctionalityWhenLoggingThenDumpingDoesNotOcc flags.LogApiCalls.set(true); flags.DumpKernelArgs.set(true); FullyDisabledFileLogger fileLogger(testFile, flags); + FullyDisabledClFileLogger clFileLogger(fileLogger, flags); // Should not be enabled without debug functionality EXPECT_FALSE(fileLogger.enabled()); @@ -679,7 +708,7 @@ TEST(FileLogger, GivenDisabledDebugFunctionalityWhenLoggingThenDumpingDoesNotOcc EXPECT_EQ(0u, output); // getEvents returns 0-size string - std::string event = fileLogger.getEvents(&input, 0); + std::string event = clFileLogger.getEvents(&input, 0); EXPECT_EQ(0u, event.size()); // getSizes returns 0-size string @@ -696,7 +725,25 @@ TEST(FileLogger, GivenDisabledDebugFunctionalityWhenLoggingThenDumpingDoesNotOcc fileLogger.dumpBinaryProgram(1, &length, &ptrBinary); EXPECT_FALSE(fileLogger.wasFileCreated(programDumpFile)); - fileLogger.dumpKernelArgs((const Kernel *)nullptr); + auto kernelInfo = std::make_unique(); + kernelInfo->kernelDescriptor.kernelAttributes.simdSize = 1; + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(nullptr)); + auto context = clUniquePtr(new MockContext(device.get())); + auto program = clUniquePtr(new MockProgram(context.get(), false, toClDeviceVector(*device))); + auto kernel = std::make_unique(program.get(), *kernelInfo, *device); + auto multiDispatchInfo = std::unique_ptr(new MockMultiDispatchInfo(device.get(), kernel.get())); + + kernelInfo->addArgBuffer(0); + kernelInfo->addExtendedMetadata(0, "", "uint8 *buffer"); + + kernel->initialize(); + + size_t crossThreadDataSize = sizeof(void *); + auto crossThreadData = std::unique_ptr(new uint8_t[crossThreadDataSize]); + kernel->setCrossThreadData(crossThreadData.get(), static_cast(crossThreadDataSize)); + + kernel->setArg(0, nullptr); + clFileLogger.dumpKernelArgs(multiDispatchInfo.get()); // test api input logging fileLogger.logInputs("Arg name", "value"); diff --git a/opencl/test/unit_test/utilities/file_logger_tests.h b/opencl/test/unit_test/utilities/file_logger_tests.h index 0110bbe81a..92c8f58d04 100644 --- a/opencl/test/unit_test/utilities/file_logger_tests.h +++ b/opencl/test/unit_test/utilities/file_logger_tests.h @@ -12,6 +12,8 @@ #include "shared/source/utilities/directory.h" #include "shared/source/utilities/logger.h" +#include "opencl/source/utilities/cl_logger.h" + #include template @@ -58,6 +60,9 @@ class TestFileLogger : public NEO::FileLogger { using FullyEnabledFileLogger = TestFileLogger; using FullyDisabledFileLogger = TestFileLogger; +using FullyEnabledClFileLogger = NEO::ClFileLogger; +using FullyDisabledClFileLogger = NEO::ClFileLogger; + template class TestLoggerApiEnterWrapper : public NEO::LoggerApiEnterWrapper { public: diff --git a/shared/source/utilities/CMakeLists.txt b/shared/source/utilities/CMakeLists.txt index 97a86d0dab..edb7b2cf0e 100644 --- a/shared/source/utilities/CMakeLists.txt +++ b/shared/source/utilities/CMakeLists.txt @@ -24,6 +24,7 @@ set(NEO_CORE_UTILITIES ${CMAKE_CURRENT_SOURCE_DIR}/iflist.h ${CMAKE_CURRENT_SOURCE_DIR}/idlist.h ${CMAKE_CURRENT_SOURCE_DIR}/io_functions.h + ${CMAKE_CURRENT_SOURCE_DIR}/logger.cpp ${CMAKE_CURRENT_SOURCE_DIR}/logger.h ${CMAKE_CURRENT_SOURCE_DIR}/metrics_library.h ${CMAKE_CURRENT_SOURCE_DIR}/numeric.h diff --git a/opencl/source/utilities/logger.cpp b/shared/source/utilities/logger.cpp similarity index 65% rename from opencl/source/utilities/logger.cpp rename to shared/source/utilities/logger.cpp index e3e5872126..a06e5c5dc3 100644 --- a/opencl/source/utilities/logger.cpp +++ b/shared/source/utilities/logger.cpp @@ -10,12 +10,6 @@ #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/helpers/timestamp_packet.h" -#include "opencl/source/cl_device/cl_device.h" -#include "opencl/source/event/event.h" -#include "opencl/source/helpers/dispatch_info.h" -#include "opencl/source/kernel/kernel.h" -#include "opencl/source/mem_obj/mem_obj.h" - #include #include @@ -32,7 +26,6 @@ FileLogger::FileLogger(std::string filename, const DebugVariables &f std::remove(logFileName.c_str()); dumpKernels = flags.DumpKernels.get(); - dumpKernelArgsEnabled = flags.DumpKernelArgs.get(); logApiCalls = flags.LogApiCalls.get(); logAllocationMemoryPool = flags.LogAllocationMemoryPool.get(); logAllocationType = flags.LogAllocationType.get(); @@ -43,6 +36,7 @@ FileLogger::~FileLogger() = default; template void FileLogger::writeToFile(std::string filename, const char *str, size_t length, std::ios_base::openmode mode) { + std::unique_lock theLock(mtx); std::ofstream outFile(filename, mode); if (outFile.is_open()) { outFile.write(str, length); @@ -69,7 +63,6 @@ void FileLogger::logApiCall(const char *function, bool enter, int32_ } if (logApiCalls) { - std::unique_lock theLock(mtx); std::thread::id thisThread = std::this_thread::get_id(); std::stringstream ss; @@ -110,7 +103,6 @@ void FileLogger::logAllocation(GraphicsAllocation const *graphicsAll auto str = ss.str(); - std::unique_lock theLock(mtx); writeToFile(logFileName, str.c_str(), str.size(), std::ios::app); } } @@ -122,38 +114,6 @@ size_t FileLogger::getInput(const size_t *input, int32_t index) { return input != nullptr ? input[index] : 0; } -template -const std::string FileLogger::getEvents(const uintptr_t *input, uint32_t numOfEvents) { - if (false == enabled()) { - return ""; - } - - std::stringstream os; - for (uint32_t i = 0; i < numOfEvents; i++) { - if (input != nullptr) { - cl_event event = ((cl_event *)input)[i]; - os << "cl_event " << event << ", Event " << (Event *)event << ", "; - } - } - return os.str(); -} - -template -const std::string FileLogger::getMemObjects(const uintptr_t *input, uint32_t numOfObjects) { - if (false == enabled()) { - return ""; - } - - std::stringstream os; - for (uint32_t i = 0; i < numOfObjects; i++) { - if (input != nullptr) { - cl_mem mem = const_cast(reinterpret_cast(input)[i]); - os << "cl_mem " << mem << ", MemObj " << static_cast(mem) << ", "; - } - } - return os.str(); -} - template void FileLogger::dumpBinaryProgram(int32_t numDevices, const size_t *lengths, const unsigned char **binaries) { if (false == enabled()) { @@ -163,93 +123,11 @@ void FileLogger::dumpBinaryProgram(int32_t numDevices, const size_t if (dumpKernels) { if (lengths != nullptr && binaries != nullptr && lengths[0] != 0 && binaries[0] != nullptr) { - std::unique_lock theLock(mtx); writeToFile("programBinary.bin", reinterpret_cast(binaries[0]), lengths[0], std::ios::trunc | std::ios::binary); } } } -template -void FileLogger::dumpKernelArgs(const Kernel *kernel) { - if (false == enabled()) { - return; - } - if (dumpKernelArgsEnabled && kernel != nullptr) { - std::unique_lock theLock(mtx); - std::ofstream outFile; - const auto &kernelDescriptor = kernel->getKernelInfo().kernelDescriptor; - const auto &explicitArgs = kernelDescriptor.payloadMappings.explicitArgs; - for (unsigned int i = 0; i < explicitArgs.size(); i++) { - std::string type; - std::string fileName; - const char *ptr = nullptr; - size_t size = 0; - uint64_t flags = 0; - std::unique_ptr argVal = nullptr; - - const auto &arg = explicitArgs[i]; - if (arg.getTraits().getAddressQualifier() == KernelArgMetadata::AddrLocal) { - type = "local"; - } else if (arg.is()) { - type = "image"; - auto clMem = (const cl_mem)kernel->getKernelArg(i); - auto memObj = castToObject(clMem); - if (memObj != nullptr) { - ptr = static_cast(memObj->getCpuAddress()); - size = memObj->getSize(); - flags = memObj->getFlags(); - } - } else if (arg.is()) { - type = "sampler"; - } else if (arg.is()) { - type = "buffer"; - auto clMem = (const cl_mem)kernel->getKernelArg(i); - auto memObj = castToObject(clMem); - if (memObj != nullptr) { - ptr = static_cast(memObj->getCpuAddress()); - size = memObj->getSize(); - flags = memObj->getFlags(); - } - } else { - type = "immediate"; - auto crossThreadData = kernel->getCrossThreadData(); - auto crossThreadDataSize = kernel->getCrossThreadDataSize(); - argVal = std::unique_ptr(new char[crossThreadDataSize]); - - size_t totalArgSize = 0; - for (const auto &element : arg.as().elements) { - auto pSource = ptrOffset(crossThreadData, element.offset); - auto pDestination = ptrOffset(argVal.get(), element.sourceOffset); - memcpy_s(pDestination, element.size, pSource, element.size); - totalArgSize += element.size; - } - size = totalArgSize; - ptr = argVal.get(); - } - - if (ptr && size) { - fileName = kernelDescriptor.kernelMetadata.kernelName + "_arg_" + std::to_string(i) + "_" + type + "_size_" + std::to_string(size) + "_flags_" + std::to_string(flags) + ".bin"; - writeToFile(fileName, ptr, size, std::ios::trunc | std::ios::binary); - } - } - } -} - -template -void FileLogger::dumpKernelArgs(const MultiDispatchInfo *multiDispatchInfo) { - if (enabled() == false) { - return; - } - - if (dumpKernelArgsEnabled == false || multiDispatchInfo == nullptr) { - return; - } - - for (auto &dispatchInfo : *multiDispatchInfo) { - dumpKernelArgs(dispatchInfo.getKernel()); - } -} - const char *getAllocationTypeString(GraphicsAllocation const *graphicsAllocation) { auto type = graphicsAllocation->getAllocationType(); diff --git a/shared/source/utilities/logger.h b/shared/source/utilities/logger.h index bd428edbf5..1f8d70844f 100644 --- a/shared/source/utilities/logger.h +++ b/shared/source/utilities/logger.h @@ -39,14 +39,10 @@ class FileLogger { void logApiCall(const char *function, bool enter, int32_t errorCode); void logAllocation(GraphicsAllocation const *graphicsAllocation); size_t getInput(const size_t *input, int32_t index); - const std::string getEvents(const uintptr_t *input, uint32_t numOfEvents); - const std::string getMemObjects(const uintptr_t *input, uint32_t numOfObjects); MOCKABLE_VIRTUAL void writeToFile(std::string filename, const char *str, size_t length, std::ios_base::openmode mode); void dumpBinaryProgram(int32_t numDevices, const size_t *lengths, const unsigned char **binaries); - void dumpKernelArgs(const Kernel *kernel); - void dumpKernelArgs(const MultiDispatchInfo *multiDispatchInfo); const std::string getSizes(const uintptr_t *input, uint32_t workDim, bool local) { if (false == enabled()) { @@ -145,7 +141,6 @@ class FileLogger { std::mutex mtx; std::string logFileName; bool dumpKernels = false; - bool dumpKernelArgsEnabled = false; bool logApiCalls = false; bool logAllocationMemoryPool = false; bool logAllocationType = false;