Metrics Add Os specific implementation Structure for IP Sampling

This patch adds OS specific implementation for IP Sampling.
Implementation for linux is provided as part of this patch.

Related-To: LOCI-2787

--- master-files
level_zero/tools/source/metrics/linux/os_metric_ip_sampling_imp_linux.cpp
level_zero/tools/source/metrics/os_metric_ip_sampling.h
level_zero/tools/source/metrics/windows/os_metric_ip_sampling_imp_windows.cpp
level_zero/tools/test/unit_tests/sources/metrics/linux/test_metric_ip_sampling_linux_prelim.cpp
level_zero/tools/test/unit_tests/sources/metrics/linux/test_metric_ip_sampling_linux_upstream.cpp
level_zero/tools/test/unit_tests/sources/metrics/windows/test_metric_ip_sampling_windows.cpp
--- master-files

Signed-off-by: Joshua Santosh Ranjan <joshua.santosh.ranjan@intel.com>
This commit is contained in:
Joshua Santosh Ranjan
2022-02-03 13:26:53 +00:00
committed by Compute-Runtime-Automation
parent 3af1d3f949
commit 10f98b45db
19 changed files with 792 additions and 4 deletions

View File

@@ -1184,4 +1184,16 @@ NEO::Device *DeviceImp::getActiveDevice() const {
return this->neoDevice;
}
uint32_t DeviceImp::getPhysicalSubDeviceId() {
if (!neoDevice->isSubDevice()) {
uint32_t deviceBitField = static_cast<uint32_t>(neoDevice->getDeviceBitfield().to_ulong());
if (neoDevice->getDeviceBitfield().count() > 1) {
// Clear all set bits other than the right most bit
deviceBitField &= ~deviceBitField + 1;
}
return Math::log2(deviceBitField);
}
return static_cast<NEO::SubDevice *>(neoDevice)->getSubDeviceIndex();
}
} // namespace L0

View File

@@ -100,6 +100,7 @@ struct DeviceImp : public Device {
bool toPhysicalSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &subslice, uint32_t &deviceIndex);
bool toApiSliceId(const NEO::TopologyMap &topologyMap, uint32_t &slice, uint32_t &subslice, uint32_t deviceIndex);
uint32_t getPhysicalSubDeviceId();
bool isSubdevice = false;
void *execEnvironment = nullptr;