c99d679c9e
SWDEV-86035 - Add OCL backend for PAL - PAL backend build is disabled by default. "BUILD_PAL_DEVICE = yes" enables the build. You also have to update the client workspace with PAL mapping: //depot/stg/pal/... //<your_opencl_location>/runtime/device/pal/palbe/... Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/build/Makefile.api#130 edit ... //depot/stg/opencl/drivers/opencl/compiler/sclibdefs.opencl#8 edit ... //depot/stg/opencl/drivers/opencl/opencldefs#166 edit ... //depot/stg/opencl/drivers/opencl/openclrules#91 edit ... //depot/stg/opencl/drivers/opencl/runtime/Makefile#21 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#192 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/Makefile#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/build/Makefile#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/build/Makefile.pal#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcompiler.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugger.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldefs.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d10.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d11.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d9.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevicegl.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsched.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palschedcl.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltrap.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.cpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.hpp#1 add ... //depot/stg/opencl/drivers/opencl/runtime/runtimedefs#36 edit ... //depot/stg/opencl/drivers/opencl/runtime/top.hpp#23 edit
122 строки
4.1 KiB
C++
122 строки
4.1 KiB
C++
//
|
|
// Copyright (c) 2015 Advanced Micro Devices, Inc. All rights reserved.
|
|
//
|
|
#ifndef PALDEBGGER_H_
|
|
#define PALDEBGGER_H_
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
#include "hsa.h"
|
|
#include "amd_hsa_kernel_code.h"
|
|
#include "device/device.hpp"
|
|
#include "device/hwdebug.hpp"
|
|
#include "acl.h"
|
|
|
|
static const int NumberReserveVgprs = 4;
|
|
|
|
namespace pal {
|
|
|
|
/**
|
|
* \defgroup Services_API OCL Runtime Services API
|
|
* @{
|
|
*/
|
|
|
|
/*! \brief Dispatch packet information
|
|
*
|
|
* This structure contains the packet information for kernel dispatch
|
|
*/
|
|
struct PacketAmdInfo
|
|
{
|
|
uint32_t trapReservedVgprIndex_; //!< reserved VGPR index, -1 when they are not valid
|
|
uint32_t scratchBufferWaveOffset_; //!< scratch buffer wave offset, -1 when no scratch buffer
|
|
void* pointerToIsaBuffer_; //!< pointer to the buffer containing ISA
|
|
size_t sizeOfIsaBuffer_; //!< size of the ISA buffer
|
|
uint32_t numberOfVgprs_; //!< number of VGPRs used by the kernel
|
|
uint32_t numberOfSgprs_; //!< number of SGPRs used by the kernel
|
|
size_t sizeOfStaticGroupMemory_; //!< Static local memory used by the kernel
|
|
};
|
|
|
|
/*! \brief Cache mask for invalidation
|
|
*/
|
|
struct HwDbgGpuCacheMask
|
|
{
|
|
HwDbgGpuCacheMask() :ui32All_(0) {}
|
|
|
|
HwDbgGpuCacheMask(uint32_t mask) :ui32All_(mask) {}
|
|
|
|
union {
|
|
struct {
|
|
uint32_t sqICache_ : 1; //!< Instruction cache
|
|
uint32_t sqKCache_ : 1; //!< Data cache
|
|
uint32_t tcL1_ : 1; //!< tcL1 cache
|
|
uint32_t tcL2_ : 1; //!< tcL2 cache
|
|
uint32_t reserved_ : 28;
|
|
};
|
|
uint32_t ui32All_;
|
|
};
|
|
};
|
|
|
|
/*! \brief Address watch information
|
|
*
|
|
* Information about each watch point - address, mask, mode and event
|
|
*/
|
|
struct HwDbgAddressWatch
|
|
{
|
|
void* watchAddress_; //! The address of watch point
|
|
uint64_t watchMask_; //! The mask for watch point (lower 24 bits)
|
|
cl_dbg_address_watch_mode_amd watchMode_; //! The watch mode for this watch
|
|
DebugEvent event_; //! Event of the watch point (not used for now)
|
|
};
|
|
|
|
/*! \brief Runtime structure used to communicate debug information
|
|
* between Ocl services and core for a kernel dispatch.
|
|
*/
|
|
struct DebugToolInfo
|
|
{
|
|
uint64_t scratchAddress_; //! Scratch memory address
|
|
size_t scratchSize_; //! Scratch memory size
|
|
uint64_t globalAddress_; //! Global memory address
|
|
uint32_t cacheDisableMask_; //! Cache mask, indicating caches disabled
|
|
uint32_t exceptionMask_; //! Exception mask
|
|
uint32_t reservedCuNum_; //! Number of reserved CUs for display,
|
|
//! which ranges from 0 to 7 in the current implementation.
|
|
bool monitorMode_; //! Debug or profiler mode
|
|
bool gpuSingleStepMode_; //! SQ debug mode
|
|
amd::Memory* trapHandler_; //! Trap handler address
|
|
amd::Memory* trapBuffer_; //! Trap buffer address
|
|
bool sqPerfcounterEnable_; //! whether SQ perf counters are enabled
|
|
aclBinary* aclBinary_; //! pointer of the kernel ACL binary
|
|
amd::Event* event_; //! pointer of the kernel event in the enqueue command
|
|
};
|
|
|
|
/*! \brief Message used by the KFD wave control for CI
|
|
*
|
|
* Structure indicates the various information used by the wave control function.
|
|
*/
|
|
struct HwDebugWaveAddr
|
|
{
|
|
uint32_t VMID_ : 4; //! Virtual memory id
|
|
uint32_t wave_ : 4; //! Wave id
|
|
uint32_t SIMD_ : 2; //! SIMD id
|
|
uint32_t CU_ : 4; //! Compute unit
|
|
uint32_t SH_ : 1; //! Shader array
|
|
uint32_t SE_ : 1; //! Shader engine
|
|
};
|
|
|
|
/*! \brief Kernel code information
|
|
*
|
|
* This structure contains the pointer of mapped kernel code for host access
|
|
* and its size (in bytes)
|
|
*/
|
|
struct AqlCodeInfo
|
|
{
|
|
amd_kernel_code_t * aqlCode_; //! pointer of AQL code to allow host access
|
|
uint32_t aqlCodeSize_; //! size of AQL code
|
|
};
|
|
|
|
/**@}*/
|
|
|
|
} // namespace pal
|
|
|
|
#endif // PALDEBGGER_H_
|