diff --git a/projects/roctracer/inc/roctracer_kfd.h b/projects/roctracer/inc/roctracer_kfd.h index 22cb46e2c9..b9a7431b1b 100644 --- a/projects/roctracer/inc/roctracer_kfd.h +++ b/projects/roctracer/inc/roctracer_kfd.h @@ -24,525 +24,12 @@ THE SOFTWARE. #ifndef INC_ROCTRACER_KFD_H_ #define INC_ROCTRACER_KFD_H_ #include -#include -#include +//#include #include "roctracer.h" #include "hsakmt.h" - -namespace roctracer { -namespace kfd_support { -template -struct output_streamer { - inline static std::ostream& put(std::ostream& out, const T& v) { return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, bool v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint8_t v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint16_t v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint32_t v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint64_t v) { out << std::hex << ""; return out; } -}; - -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, bool* v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint8_t* v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint16_t* v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint32_t* v) { out << std::hex << ""; return out; } -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, uint64_t* v) { out << std::hex << ""; return out; } -}; - -// begin ostream ops for KFD -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaQueueReport& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.VMID); - roctracer::kfd_support::output_streamer::put(out,v.QueueSize); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_DEBUG_PROPERTIES& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Value); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaNodeChange& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Flags); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaDeviceStateChange& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.NodeId); - roctracer::kfd_support::output_streamer::put(out,v.Device); - roctracer::kfd_support::output_streamer::put(out,v.Flags); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_LINKPROPERTY& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.LinkProperty); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaDbgWaveMsgAMDGen2& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Value); - roctracer::kfd_support::output_streamer::put(out,v.Reserved2); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaMemoryRange& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.SizeInBytes); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCounterProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.NumBlocks); - roctracer::kfd_support::output_streamer::put(out,v.NumConcurrent); - roctracer::kfd_support::output_streamer::put(out,v.Blocks); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_ENGINE_VERSION& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Value); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCComputeProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.SiblingMap); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaVersionInfo& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.KernelInterfaceMajorVersion); - roctracer::kfd_support::output_streamer::put(out,v.KernelInterfaceMinorVersion); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCacheType& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Value); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_MEMORYPROPERTY& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.MemoryProperty); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaClockCounters& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.GPUClockCounter); - roctracer::kfd_support::output_streamer::put(out,v.CPUClockCounter); - roctracer::kfd_support::output_streamer::put(out,v.SystemClockCounter); - roctracer::kfd_support::output_streamer::put(out,v.SystemClockFrequencyHz); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCounter& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Type); - roctracer::kfd_support::output_streamer::put(out,v.CounterId); - roctracer::kfd_support::output_streamer::put(out,v.CounterSizeInBits); - roctracer::kfd_support::output_streamer::put(out,v.CounterMask); - roctracer::kfd_support::output_streamer::put(out,v.Flags); - roctracer::kfd_support::output_streamer::put(out,v.BlockIndex); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaNodeProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.NumCPUCores); - roctracer::kfd_support::output_streamer::put(out,v.NumFComputeCores); - roctracer::kfd_support::output_streamer::put(out,v.NumMemoryBanks); - roctracer::kfd_support::output_streamer::put(out,v.NumCaches); - roctracer::kfd_support::output_streamer::put(out,v.NumIOLinks); - roctracer::kfd_support::output_streamer::put(out,v.CComputeIdLo); - roctracer::kfd_support::output_streamer::put(out,v.FComputeIdLo); - roctracer::kfd_support::output_streamer::put(out,v.Capability); - roctracer::kfd_support::output_streamer::put(out,v.MaxWavesPerSIMD); - roctracer::kfd_support::output_streamer::put(out,v.LDSSizeInKB); - roctracer::kfd_support::output_streamer::put(out,v.GDSSizeInKB); - roctracer::kfd_support::output_streamer::put(out,v.WaveFrontSize); - roctracer::kfd_support::output_streamer::put(out,v.NumShaderBanks); - roctracer::kfd_support::output_streamer::put(out,v.NumArrays); - roctracer::kfd_support::output_streamer::put(out,v.NumCUPerArray); - roctracer::kfd_support::output_streamer::put(out,v.NumSIMDPerCU); - roctracer::kfd_support::output_streamer::put(out,v.MaxSlotsScratchCU); - roctracer::kfd_support::output_streamer::put(out,v.EngineId); - roctracer::kfd_support::output_streamer::put(out,v.VendorId); - roctracer::kfd_support::output_streamer::put(out,v.DeviceId); - roctracer::kfd_support::output_streamer::put(out,v.LocationId); - roctracer::kfd_support::output_streamer::put(out,v.LocalMemSize); - roctracer::kfd_support::output_streamer::put(out,v.MaxEngineClockMhzFCompute); - roctracer::kfd_support::output_streamer::put(out,v.MaxEngineClockMhzCCompute); - roctracer::kfd_support::output_streamer::put(out,v.DrmRenderMinor); - roctracer::kfd_support::output_streamer::put(out,v.MarketingName); - roctracer::kfd_support::output_streamer::put(out,v.AMDName); - roctracer::kfd_support::output_streamer::put(out,v.uCodeEngineVersions); - roctracer::kfd_support::output_streamer::put(out,v.DebugProperties); - roctracer::kfd_support::output_streamer::put(out,v.HiveID); - roctracer::kfd_support::output_streamer::put(out,v.NumSdmaEngines); - roctracer::kfd_support::output_streamer::put(out,v.NumSdmaXgmiEngines); - roctracer::kfd_support::output_streamer::put(out,v.NumGws); - roctracer::kfd_support::output_streamer::put(out,v.Reserved); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaSystemProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.NumNodes); - roctracer::kfd_support::output_streamer::put(out,v.PlatformOem); - roctracer::kfd_support::output_streamer::put(out,v.PlatformId); - roctracer::kfd_support::output_streamer::put(out,v.PlatformRev); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaMemoryProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.HeapType); - roctracer::kfd_support::output_streamer::put(out,v.Flags); - roctracer::kfd_support::output_streamer::put(out,v.Width); - roctracer::kfd_support::output_streamer::put(out,v.MemoryClockMax); - roctracer::kfd_support::output_streamer::put(out,v.VirtualBaseAddress); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_ENGINE_ID& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Value); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_CAPABILITY& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Value); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaQueueInfo& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.QueueDetailError); - roctracer::kfd_support::output_streamer::put(out,v.QueueTypeExtended); - roctracer::kfd_support::output_streamer::put(out,v.NumCUAssigned); - roctracer::kfd_support::output_streamer::put(out,v.CUMaskInfo); - roctracer::kfd_support::output_streamer::put(out,v.UserContextSaveArea); - roctracer::kfd_support::output_streamer::put(out,v.SaveAreaSizeInBytes); - roctracer::kfd_support::output_streamer::put(out,v.ControlStackTop); - roctracer::kfd_support::output_streamer::put(out,v.ControlStackUsedInBytes); - roctracer::kfd_support::output_streamer::put(out,v.SaveAreaHeader); - roctracer::kfd_support::output_streamer::put(out,v.Reserved2); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaIoLinkProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.IoLinkType); - roctracer::kfd_support::output_streamer::put(out,v.VersionMajor); - roctracer::kfd_support::output_streamer::put(out,v.VersionMinor); - roctracer::kfd_support::output_streamer::put(out,v.NodeFrom); - roctracer::kfd_support::output_streamer::put(out,v.NodeTo); - roctracer::kfd_support::output_streamer::put(out,v.Weight); - roctracer::kfd_support::output_streamer::put(out,v.MinimumLatency); - roctracer::kfd_support::output_streamer::put(out,v.MaximumLatency); - roctracer::kfd_support::output_streamer::put(out,v.MinimumBandwidth); - roctracer::kfd_support::output_streamer::put(out,v.MaximumBandwidth); - roctracer::kfd_support::output_streamer::put(out,v.RecTransferSize); - roctracer::kfd_support::output_streamer::put(out,v.Flags); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaMemoryAccessFault& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.NodeId); - roctracer::kfd_support::output_streamer::put(out,v.VirtualAddress); - roctracer::kfd_support::output_streamer::put(out,v.Failure); - roctracer::kfd_support::output_streamer::put(out,v.Flags); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaEvent& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.EventId); - roctracer::kfd_support::output_streamer::put(out,v.EventData); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaMemMapFlags& v) -{ - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaDbgWaveMessage& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.DbgWaveMsg); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaGraphicsResourceInfo& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.SizeInBytes); - roctracer::kfd_support::output_streamer::put(out,v.MetadataSizeInBytes); - roctracer::kfd_support::output_streamer::put(out,v.Reserved); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaEventData& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.EventType); - roctracer::kfd_support::output_streamer::put(out,v.HWData1); - roctracer::kfd_support::output_streamer::put(out,v.HWData2); - roctracer::kfd_support::output_streamer::put(out,v.HWData3); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaDbgWaveMessageAMD& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.WaveMsgInfoGen2); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaPointerInfo& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Type); - roctracer::kfd_support::output_streamer::put(out,v.Node); - roctracer::kfd_support::output_streamer::put(out,v.MemFlags); - roctracer::kfd_support::output_streamer::put(out,v.GPUAddress); - roctracer::kfd_support::output_streamer::put(out,v.SizeInBytes); - roctracer::kfd_support::output_streamer::put(out,v.NRegisteredNodes); - roctracer::kfd_support::output_streamer::put(out,v.NMappedNodes); - roctracer::kfd_support::output_streamer::put(out,v.RegisteredNodes); - roctracer::kfd_support::output_streamer::put(out,v.MappedNodes); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCounterBlockProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.BlockId); - roctracer::kfd_support::output_streamer::put(out,v.NumCounters); - roctracer::kfd_support::output_streamer::put(out,v.NumConcurrent); - roctracer::kfd_support::output_streamer::put(out,v.Counters); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaEventDescriptor& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.EventType); - roctracer::kfd_support::output_streamer::put(out,v.NodeId); - roctracer::kfd_support::output_streamer::put(out,v.SyncVar); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaAccessAttributeFailure& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.NotPresent); - roctracer::kfd_support::output_streamer::put(out,v.ReadOnly); - roctracer::kfd_support::output_streamer::put(out,v.NoExecute); - roctracer::kfd_support::output_streamer::put(out,v.GpuAccess); - roctracer::kfd_support::output_streamer::put(out,v.ECC); - roctracer::kfd_support::output_streamer::put(out,v.Imprecise); - roctracer::kfd_support::output_streamer::put(out,v.ErrorType); - roctracer::kfd_support::output_streamer::put(out,v.Reserved); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HSA_UUID& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.Data1); - roctracer::kfd_support::output_streamer::put(out,v.Data2); - roctracer::kfd_support::output_streamer::put(out,v.Data3); - roctracer::kfd_support::output_streamer::put(out,v.Data4); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaQueueResource& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.QueueId); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCounterFlags& v) -{ - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaUserContextSaveAreaHeader& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.ControlStackOffset); - roctracer::kfd_support::output_streamer::put(out,v.ControlStackSize); - roctracer::kfd_support::output_streamer::put(out,v.WaveStateOffset); - roctracer::kfd_support::output_streamer::put(out,v.WaveStateSize); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaCacheProperties& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.ProcessorIdLow); - roctracer::kfd_support::output_streamer::put(out,v.CacheLevel); - roctracer::kfd_support::output_streamer::put(out,v.CacheSize); - roctracer::kfd_support::output_streamer::put(out,v.CacheLineSize); - roctracer::kfd_support::output_streamer::put(out,v.CacheLinesPerTag); - roctracer::kfd_support::output_streamer::put(out,v.CacheAssociativity); - roctracer::kfd_support::output_streamer::put(out,v.CacheLatency); - roctracer::kfd_support::output_streamer::put(out,v.CacheType); - roctracer::kfd_support::output_streamer::put(out,v.SiblingMap); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaMemFlags& v) -{ - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaPmcTraceRoot& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.TraceBufferMinSizeBytes); - roctracer::kfd_support::output_streamer::put(out,v.NumberOfPasses); - roctracer::kfd_support::output_streamer::put(out,v.TraceId); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaGpuTileConfig& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.TileConfig); - roctracer::kfd_support::output_streamer::put(out,v.MacroTileConfig); - roctracer::kfd_support::output_streamer::put(out,v.NumTileConfigs); - roctracer::kfd_support::output_streamer::put(out,v.NumMacroTileConfigs); - roctracer::kfd_support::output_streamer::put(out,v.GbAddrConfig); - roctracer::kfd_support::output_streamer::put(out,v.NumBanks); - roctracer::kfd_support::output_streamer::put(out,v.NumRanks); - roctracer::kfd_support::output_streamer::put(out,v.Reserved); - return out; -} -}; -template<> -struct output_streamer { - inline static std::ostream& put(std::ostream& out, HsaSyncVar& v) -{ - roctracer::kfd_support::output_streamer::put(out,v.SyncVarSize); - return out; -} -}; -// end ostream ops for KFD -};}; - +#include "inc/kfd_ostream_ops.h" #include #endif // INC_ROCTRACER_KFD_H_