HIP: Heterogenous-computing Interface for Portability
Classes | Enumerations | Variables
AMDGPURuntimeMetadata.h File Reference
#include <cstdint>
#include <vector>
#include <string>

Go to the source code of this file.

Classes

struct  AMDGPU::RuntimeMD::KernelArg::Metadata
 
struct  AMDGPU::RuntimeMD::Kernel::Metadata
 
struct  AMDGPU::RuntimeMD::IsaInfo::Metadata
 In-memory representation of instruction set architecture information. More...
 
struct  AMDGPU::RuntimeMD::Program::Metadata
 

Enumerations

enum  Kind : uint8_t {
  ByValue = 0, GlobalBuffer = 1, DynamicSharedPointer = 2, Sampler = 3,
  Image = 4, Pipe = 5, Queue = 6, HiddenGlobalOffsetX = 7,
  HiddenGlobalOffsetY = 8, HiddenGlobalOffsetZ = 9, HiddenNone = 10, HiddenPrintfBuffer = 11,
  HiddenDefaultQueue = 12, HiddenCompletionAction = 13
}
 
enum  ValueType : uint16_t {
  Struct = 0, I8 = 1, U8 = 2, I16 = 3,
  U16 = 4, F16 = 5, I32 = 6, U32 = 7,
  F32 = 8, I64 = 9, U64 = 10, F64 = 11
}
 
enum  AccessQualifer : uint8_t { AccNone = 0, ReadOnly = 1, WriteOnly = 2, ReadWrite = 3 }
 
enum  AddressSpaceQualifer : uint8_t {
  Private = 0, Global = 1, Constant = 2, Local = 3,
  Generic = 4, Region = 5
}
 

Variables

const unsigned char AMDGPU::RuntimeMD::MDVersion = 2
 
const unsigned char AMDGPU::RuntimeMD::MDRevision = 1
 
const char AMDGPU::RuntimeMD::KeyName::MDVersion [] = "amd.MDVersion"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfo [] = "amd.IsaInfo"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoWavefrontSize [] = "amd.IsaInfoWavefrontSize"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoLocalMemorySize [] = "amd.IsaInfoLocalMemorySize"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoEUsPerCU [] = "amd.IsaInfoEUsPerCU"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoMaxWavesPerEU [] = "amd.IsaInfoMaxWavesPerEU"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoMaxFlatWorkGroupSize [] = "amd.IsaInfoMaxFlatWorkGroupSize"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoSGPRAllocGranule [] = "amd.IsaInfoSGPRAllocGranule"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoTotalNumSGPRs [] = "amd.IsaInfoTotalNumSGPRs"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoAddressableNumSGPRs [] = "amd.IsaInfoAddressableNumSGPRs"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoVGPRAllocGranule [] = "amd.IsaInfoVGPRAllocGranule"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoTotalNumVGPRs [] = "amd.IsaInfoTotalNumVGPRs"
 
const char AMDGPU::RuntimeMD::KeyName::IsaInfoAddressableNumVGPRs [] = "amd.IsaInfoAddressableNumVGPRs"
 
const char AMDGPU::RuntimeMD::KeyName::Language [] = "amd.Language"
 
const char AMDGPU::RuntimeMD::KeyName::LanguageVersion [] = "amd.LanguageVersion"
 
const char AMDGPU::RuntimeMD::KeyName::Kernels [] = "amd.Kernels"
 
const char AMDGPU::RuntimeMD::KeyName::KernelName [] = "amd.KernelName"
 
const char AMDGPU::RuntimeMD::KeyName::Args [] = "amd.Args"
 
const char AMDGPU::RuntimeMD::KeyName::ArgSize [] = "amd.ArgSize"
 
const char AMDGPU::RuntimeMD::KeyName::ArgAlign [] = "amd.ArgAlign"
 
const char AMDGPU::RuntimeMD::KeyName::ArgTypeName [] = "amd.ArgTypeName"
 
const char AMDGPU::RuntimeMD::KeyName::ArgName [] = "amd.ArgName"
 
const char AMDGPU::RuntimeMD::KeyName::ArgKind [] = "amd.ArgKind"
 
const char AMDGPU::RuntimeMD::KeyName::ArgValueType [] = "amd.ArgValueType"
 
const char AMDGPU::RuntimeMD::KeyName::ArgAddrQual [] = "amd.ArgAddrQual"
 
const char AMDGPU::RuntimeMD::KeyName::ArgAccQual [] = "amd.ArgAccQual"
 
const char AMDGPU::RuntimeMD::KeyName::ArgIsConst [] = "amd.ArgIsConst"
 
const char AMDGPU::RuntimeMD::KeyName::ArgIsRestrict [] = "amd.ArgIsRestrict"
 
const char AMDGPU::RuntimeMD::KeyName::ArgIsVolatile [] = "amd.ArgIsVolatile"
 
const char AMDGPU::RuntimeMD::KeyName::ArgIsPipe [] = "amd.ArgIsPipe"
 
const char AMDGPU::RuntimeMD::KeyName::ReqdWorkGroupSize [] = "amd.ReqdWorkGroupSize"
 
const char AMDGPU::RuntimeMD::KeyName::WorkGroupSizeHint [] = "amd.WorkGroupSizeHint"
 
const char AMDGPU::RuntimeMD::KeyName::VecTypeHint [] = "amd.VecTypeHint"
 
const char AMDGPU::RuntimeMD::KeyName::KernelIndex [] = "amd.KernelIndex"
 
const char AMDGPU::RuntimeMD::KeyName::NoPartialWorkGroups [] = "amd.NoPartialWorkGroups"
 
const char AMDGPU::RuntimeMD::KeyName::PrintfInfo [] = "amd.PrintfInfo"
 
const char AMDGPU::RuntimeMD::KeyName::ArgActualAcc [] = "amd.ArgActualAcc"
 
const char AMDGPU::RuntimeMD::KeyName::ArgPointeeAlign [] = "amd.ArgPointeeAlign"
 
const uint8_t AMDGPU::RuntimeMD::INVALID_ADDR_QUAL = 0xff
 
const uint8_t AMDGPU::RuntimeMD::INVALID_ACC_QUAL = 0xff
 
const uint32_t AMDGPU::RuntimeMD::INVALID_KERNEL_INDEX = ~0U
 

Detailed Description

Enums and structure types used by runtime metadata.

Runtime requests certain information (metadata) about kernels to be able to execute the kernels and answer the queries about the kernels. The metadata is represented as a note element in the .note ELF section of a binary (code object). The desc field of the note element is a YAML string consisting of key-value pairs. Each key is a string. Each value can be an integer, a string, or an YAML sequence. There are 3 levels of YAML maps. At the beginning of the YAML string is the module level YAML map. A kernel-level YAML map is in the amd.Kernels sequence. A kernel-argument-level map is in the amd.Args sequence.

The format should be kept backward compatible. New enum values and bit fields should be appended at the end. It is suggested to bump up the revision number whenever the format changes and document the change in the revision in this header.