mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 01:04:57 +08:00
fix: enable setting timestamp via submission on tbx mode
Resolves: NEO-16293 Signed-off-by: Katarzyna Cencelewska <katarzyna.cencelewska@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
1f7839f16f
commit
0f866e24e6
@@ -1198,12 +1198,15 @@ ze_result_t DeviceImp::getProperties(ze_device_properties_t *pDeviceProperties)
|
|||||||
|
|
||||||
ze_result_t DeviceImp::getGlobalTimestamps(uint64_t *hostTimestamp, uint64_t *deviceTimestamp) {
|
ze_result_t DeviceImp::getGlobalTimestamps(uint64_t *hostTimestamp, uint64_t *deviceTimestamp) {
|
||||||
|
|
||||||
bool method = 0;
|
bool useTimestampViaSubmission = false;
|
||||||
if (NEO::debugManager.flags.EnableGlobalTimestampViaSubmission.get() != -1) {
|
auto csrType = obtainCsrTypeFromIntegerValue(NEO::debugManager.flags.SetCommandStreamReceiver.get(), NEO::CommandStreamReceiverType::hardware);
|
||||||
method = NEO::debugManager.flags.EnableGlobalTimestampViaSubmission.get();
|
if (csrType == NEO::CommandStreamReceiverType::tbx ||
|
||||||
|
csrType == NEO::CommandStreamReceiverType::tbxWithAub ||
|
||||||
|
NEO::debugManager.flags.EnableGlobalTimestampViaSubmission.get() == 1) {
|
||||||
|
useTimestampViaSubmission = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (method == 0) {
|
if (useTimestampViaSubmission == false) {
|
||||||
auto ret = getGlobalTimestampsUsingOsInterface(hostTimestamp, deviceTimestamp);
|
auto ret = getGlobalTimestampsUsingOsInterface(hostTimestamp, deviceTimestamp);
|
||||||
if (ret != ZE_RESULT_ERROR_UNSUPPORTED_FEATURE) {
|
if (ret != ZE_RESULT_ERROR_UNSUPPORTED_FEATURE) {
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -1739,6 +1739,65 @@ TEST_F(DeviceTest, givenInvalidPciBusInfoWhenPciPropertiesIsCalledThenUninitiali
|
|||||||
EXPECT_EQ(ZE_RESULT_ERROR_UNINITIALIZED, res);
|
EXPECT_EQ(ZE_RESULT_ERROR_UNINITIALIZED, res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
struct GetGlobalTimestampTest : public DeviceTest {
|
||||||
|
struct MockCommandListAppendWriteGlobalTimestamp : public MockCommandList {
|
||||||
|
ze_result_t appendWriteGlobalTimestamp(uint64_t *dstptr, ze_event_handle_t hEvent, uint32_t numWaitEvents, ze_event_handle_t *phWaitEvents) override {
|
||||||
|
isAppendWriteGlobalTimestampCalled = true;
|
||||||
|
*dstptr = 123456u; // dummy value
|
||||||
|
return ZE_RESULT_SUCCESS;
|
||||||
|
}
|
||||||
|
bool isAppendWriteGlobalTimestampCalled = false;
|
||||||
|
};
|
||||||
|
void SetUp() override {
|
||||||
|
DeviceTest::SetUp();
|
||||||
|
mockCommandList = std::make_unique<GetGlobalTimestampTest::MockCommandListAppendWriteGlobalTimestamp>();
|
||||||
|
uint64_t hostTs = 0u;
|
||||||
|
uint64_t deviceTs = 0u;
|
||||||
|
// initialize globalTimestampAllocation
|
||||||
|
debugManager.flags.EnableGlobalTimestampViaSubmission.set(1);
|
||||||
|
device->getGlobalTimestamps(&hostTs, &deviceTs);
|
||||||
|
debugManager.flags.EnableGlobalTimestampViaSubmission.set(0);
|
||||||
|
|
||||||
|
deviceImp = static_cast<DeviceImp *>(device);
|
||||||
|
actualGlobalTimestampCommandList = deviceImp->globalTimestampCommandList;
|
||||||
|
// Swap the command list with the mock command list.
|
||||||
|
deviceImp->globalTimestampCommandList = static_cast<ze_command_list_handle_t>(mockCommandList.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
void TearDown() override {
|
||||||
|
// Swap back the command list.
|
||||||
|
deviceImp->globalTimestampCommandList = actualGlobalTimestampCommandList;
|
||||||
|
DeviceTest::TearDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<GetGlobalTimestampTest::MockCommandListAppendWriteGlobalTimestamp> mockCommandList = nullptr;
|
||||||
|
ze_command_list_handle_t actualGlobalTimestampCommandList = nullptr;
|
||||||
|
DeviceImp *deviceImp = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(GetGlobalTimestampTest, whenTbxModeThenSetGlobalTimestampViaSubmission) {
|
||||||
|
uint64_t hostTs = 0u;
|
||||||
|
uint64_t deviceTs = 0u;
|
||||||
|
|
||||||
|
debugManager.flags.SetCommandStreamReceiver.set(static_cast<int32_t>(NEO::CommandStreamReceiverType::tbx));
|
||||||
|
|
||||||
|
ze_result_t result = device->getGlobalTimestamps(&hostTs, &deviceTs);
|
||||||
|
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
|
||||||
|
|
||||||
|
EXPECT_NE(0u, hostTs);
|
||||||
|
EXPECT_NE(0u, deviceTs);
|
||||||
|
EXPECT_TRUE(mockCommandList->isAppendWriteGlobalTimestampCalled);
|
||||||
|
|
||||||
|
debugManager.flags.SetCommandStreamReceiver.set(static_cast<int32_t>(NEO::CommandStreamReceiverType::tbxWithAub));
|
||||||
|
mockCommandList->isAppendWriteGlobalTimestampCalled = false;
|
||||||
|
|
||||||
|
result = device->getGlobalTimestamps(&hostTs, &deviceTs);
|
||||||
|
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
|
||||||
|
|
||||||
|
EXPECT_NE(0u, hostTs);
|
||||||
|
EXPECT_NE(0u, deviceTs);
|
||||||
|
EXPECT_TRUE(mockCommandList->isAppendWriteGlobalTimestampCalled);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(DeviceTest, whenGetGlobalTimestampIsCalledWithOsInterfaceThenSuccessIsReturnedAndValuesSetCorrectly) {
|
TEST_F(DeviceTest, whenGetGlobalTimestampIsCalledWithOsInterfaceThenSuccessIsReturnedAndValuesSetCorrectly) {
|
||||||
uint64_t hostTs = 0u;
|
uint64_t hostTs = 0u;
|
||||||
|
|||||||
@@ -680,7 +680,7 @@ DECLARE_DEBUG_VARIABLE(std::string, FinalizerInputType, std::string("unk"), "unk
|
|||||||
DECLARE_DEBUG_VARIABLE(std::string, FinalizerLibraryName, std::string("unk"), "Library name for finalizer")
|
DECLARE_DEBUG_VARIABLE(std::string, FinalizerLibraryName, std::string("unk"), "Library name for finalizer")
|
||||||
DECLARE_DEBUG_VARIABLE(std::string, IgcLibraryName, std::string("unk"), "Library name for igc")
|
DECLARE_DEBUG_VARIABLE(std::string, IgcLibraryName, std::string("unk"), "Library name for igc")
|
||||||
DECLARE_DEBUG_SCOPED_V(int32_t, UseIgcAsFcl, 0, S_RT | S_OCLOC, "0: platform default, 1: force use IGC, 2: force use FCL")
|
DECLARE_DEBUG_SCOPED_V(int32_t, UseIgcAsFcl, 0, S_RT | S_OCLOC, "0: platform default, 1: force use IGC, 2: force use FCL")
|
||||||
DECLARE_DEBUG_VARIABLE(int32_t, EnableGlobalTimestampViaSubmission, -1, "-1: OS Interface, 0: OS Interface, 1: Submission. This flag sets the type of method to get timestamp for getGlobalTimestamps");
|
DECLARE_DEBUG_VARIABLE(bool, EnableGlobalTimestampViaSubmission, 0, "0: OS Interface, 1: Submission. This flag sets the type of method to get timestamp for getGlobalTimestamps");
|
||||||
|
|
||||||
/* Binary Cache */
|
/* Binary Cache */
|
||||||
DECLARE_DEBUG_VARIABLE(bool, BinaryCacheTrace, false, "enable cl_cache to produce .trace files with information about hash computation")
|
DECLARE_DEBUG_VARIABLE(bool, BinaryCacheTrace, false, "enable cl_cache to produce .trace files with information about hash computation")
|
||||||
|
|||||||
@@ -618,7 +618,7 @@ SetAssumeNotInUse = 1
|
|||||||
ForceNonWalkerSplitMemoryCopy = -1
|
ForceNonWalkerSplitMemoryCopy = -1
|
||||||
FinalizerInputType = unk
|
FinalizerInputType = unk
|
||||||
FinalizerLibraryName = unk
|
FinalizerLibraryName = unk
|
||||||
EnableGlobalTimestampViaSubmission = -1
|
EnableGlobalTimestampViaSubmission = 0
|
||||||
DirectSubmissionSwitchSemaphoreMode = -1
|
DirectSubmissionSwitchSemaphoreMode = -1
|
||||||
DisableProgrammableMetricsSupport = 0
|
DisableProgrammableMetricsSupport = 0
|
||||||
IgnoreZebinUnknownAttributes = 0
|
IgnoreZebinUnknownAttributes = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user