Update TSP tests
Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
Bartosz Dunajski authored 2 years ago
Compute-Runtime-Automation committed 2 years ago
351 | 351 | eventDesc.wait = 0; |
352 | 352 | |
353 | 353 | auto eventPool = std::unique_ptr<L0::EventPool>(L0::EventPool::create(driverHandle.get(), context, 0, nullptr, &eventPoolDesc)); |
354 | auto event = std::unique_ptr<L0::Event>(L0::Event::create<uint32_t>(eventPool.get(), &eventDesc, device)); | |
354 | auto event = std::unique_ptr<L0::Event>(L0::Event::create<typename FamilyType::TimestampPacketType>(eventPool.get(), &eventDesc, device)); | |
355 | 355 | |
356 | 356 | commandList.appendMemoryCopy(dstPtr, srcPtr, 0x100, event->toHandle(), 0, nullptr); |
357 | 357 | EXPECT_GT(commandList.appendMemoryCopyBlitCalledTimes, 1u); |
126 | 126 | minAllocationSize); |
127 | 127 | } |
128 | 128 | |
129 | TEST_F(EventPoolCreate, givenTimestampEventsThenEventSizeSufficientForAllKernelTimestamps) { | |
129 | HWTEST_F(EventPoolCreate, givenTimestampEventsThenEventSizeSufficientForAllKernelTimestamps) { | |
130 | 130 | ze_event_pool_desc_t eventPoolDesc = {}; |
131 | 131 | eventPoolDesc.count = 1; |
132 | 132 | eventPoolDesc.flags = ZE_EVENT_POOL_FLAG_KERNEL_TIMESTAMP; |
135 | 135 | ASSERT_NE(nullptr, eventPool); |
136 | 136 | uint32_t maxKernelSplit = 3; |
137 | 137 | uint32_t packetsSize = maxKernelSplit * NEO::TimestampPacketSizeControl::preferredPacketCount * |
138 | static_cast<uint32_t>(NEO::TimestampPackets<uint32_t>::getSinglePacketSize()); | |
138 | static_cast<uint32_t>(NEO::TimestampPackets<typename FamilyType::TimestampPacketType>::getSinglePacketSize()); | |
139 | 139 | uint32_t kernelTimestampsSize = static_cast<uint32_t>(alignUp(packetsSize, 4 * MemoryConstants::cacheLineSize)); |
140 | 140 | EXPECT_EQ(kernelTimestampsSize, eventPool->getEventSize()); |
141 | 141 | } |
+13
-6
293 | 293 | template <typename FamilyType> |
294 | 294 | using AubWithTbx = CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<FamilyType>>; |
295 | 295 | |
296 | template <typename CsrT, typename... Args> | |
296 | template <typename CsrT, typename FamilyType, typename... Args> | |
297 | 297 | bool isTimestampPacketNodeReleasable(Args &&...args) { |
298 | 298 | CsrT csr(std::forward<Args>(args)...); |
299 | 299 | auto hwInfo = csr.peekExecutionEnvironment().rootDeviceEnvironments[0]->getHardwareInfo(); |
304 | 304 | auto allocator = csr.getTimestampPacketAllocator(); |
305 | 305 | auto tag = allocator->getTag(); |
306 | 306 | |
307 | uint32_t zeros[4] = {}; | |
307 | typename FamilyType::TimestampPacketType zeros[4] = {}; | |
308 | 308 | |
309 | 309 | for (uint32_t i = 0; i < TimestampPacketSizeControl::preferredPacketCount; i++) { |
310 | 310 | tag->assignDataToAllTimestamps(i, zeros); |
341 | 341 | }; |
342 | 342 | |
343 | 343 | HWTEST_F(CommandStreamReceiverTagTests, givenCsrTypeWhenCreatingTimestampPacketAllocatorThenSetDefaultCompletionCheckType) { |
344 | EXPECT_TRUE(isTimestampPacketNodeReleasable<CommandStreamReceiverHw<FamilyType>>(*executionEnvironment, 0, 1)); | |
345 | EXPECT_FALSE(isTimestampPacketNodeReleasable<AUBCommandStreamReceiverHw<FamilyType>>(fileName, false, *executionEnvironment, 0, 1)); | |
346 | EXPECT_FALSE(isTimestampPacketNodeReleasable<AubWithHw<FamilyType>>(fileName, *executionEnvironment, 0, 1)); | |
347 | EXPECT_FALSE(isTimestampPacketNodeReleasable<AubWithTbx<FamilyType>>(fileName, *executionEnvironment, 0, 1)); | |
344 | bool result = isTimestampPacketNodeReleasable<CommandStreamReceiverHw<FamilyType>, FamilyType>(*executionEnvironment, 0, 1); | |
345 | EXPECT_TRUE(result); | |
346 | ||
347 | result = isTimestampPacketNodeReleasable<AUBCommandStreamReceiverHw<FamilyType>, FamilyType>(fileName, false, *executionEnvironment, 0, 1); | |
348 | EXPECT_FALSE(result); | |
349 | ||
350 | result = isTimestampPacketNodeReleasable<AubWithHw<FamilyType>, FamilyType>(fileName, *executionEnvironment, 0, 1); | |
351 | EXPECT_FALSE(result); | |
352 | ||
353 | result = isTimestampPacketNodeReleasable<AubWithTbx<FamilyType>, FamilyType>(fileName, *executionEnvironment, 0, 1); | |
354 | EXPECT_FALSE(result); | |
348 | 355 | } |
349 | 356 | |
350 | 357 | HWTEST_F(CommandStreamReceiverTagTests, givenCsrTypeWhenAskingForTagPoolSizeThenReturnOneForAubTbxMode) { |
108 | 108 | EXPECT_EQ(1u, node1.returnCalls); |
109 | 109 | } |
110 | 110 | |
111 | TEST_F(TimestampPacketSimpleTests, whenNewTagIsTakenThenReinitialize) { | |
111 | HWTEST_F(TimestampPacketSimpleTests, whenNewTagIsTakenThenReinitialize) { | |
112 | 112 | MockExecutionEnvironment executionEnvironment(defaultHwInfo.get()); |
113 | 113 | MockMemoryManager memoryManager(executionEnvironment); |
114 | 114 | MockTagAllocator<MockTimestampPacketStorage> allocator(0, &memoryManager, 1); |
124 | 124 | packet.globalEnd = i++; |
125 | 125 | } |
126 | 126 | |
127 | setTagToReadyState(firstNode); | |
127 | setTagToReadyState<FamilyType>(firstNode); | |
128 | 128 | allocator.returnTag(firstNode); |
129 | 129 | |
130 | 130 | auto secondNode = allocator.getTag(); |
229 | 229 | EXPECT_EQ(1u, csr.getPreferredTagPoolSize()); |
230 | 230 | |
231 | 231 | auto tag = csr.getTimestampPacketAllocator()->getTag(); |
232 | setTagToReadyState(tag); | |
232 | setTagToReadyState<FamilyType>(tag); | |
233 | 233 | |
234 | 234 | EXPECT_FALSE(tag->canBeReleased()); |
235 | 235 | } |
524 | 524 | EXPECT_EQ(node1, mockTagAllocator->releaseReferenceNodes.at(0)); |
525 | 525 | |
526 | 526 | EXPECT_NE(node1, node2); |
527 | setTagToReadyState(node1); | |
528 | setTagToReadyState(node2); | |
527 | setTagToReadyState<FamilyType>(node1); | |
528 | setTagToReadyState<FamilyType>(node2); | |
529 | 529 | |
530 | 530 | clReleaseEvent(event2); |
531 | 531 | EXPECT_EQ(0u, mockTagAllocator->returnedToFreePoolNodes.size()); // nothing returned. cmdQ owns node2 |
24 | 24 | using TimestampPackets<uint32_t>::packets; |
25 | 25 | }; |
26 | 26 | |
27 | template <typename FamilyType> | |
27 | 28 | void setTagToReadyState(TagNodeBase *tagNode) { |
28 | 29 | auto packetsUsed = tagNode->getPacketsUsed(); |
29 | 30 | tagNode->initialize(); |
30 | 31 | |
31 | uint32_t zeros[4] = {}; | |
32 | typename FamilyType::TimestampPacketType zeros[4] = {}; | |
32 | 33 | |
33 | 34 | for (uint32_t i = 0; i < TimestampPacketSizeControl::preferredPacketCount; i++) { |
34 | 35 | tagNode->assignDataToAllTimestamps(i, zeros); |
1918 | 1918 | } |
1919 | 1919 | |
1920 | 1920 | HWTEST_F(KernelResidencyTest, givenEnableFullKernelTuningWhenPerformTunningThenKernelConfigDataIsTracked) { |
1921 | using TimestampPacketType = typename FamilyType::TimestampPacketType; | |
1921 | 1922 | DebugManagerStateRestore restorer; |
1922 | 1923 | DebugManager.flags.EnableKernelTunning.set(2u); |
1923 | 1924 | |
1956 | 1957 | EXPECT_EQ(result->second.status, MockKernel::TunningStatus::SUBDEVICE_TUNNING_IN_PROGRESS); |
1957 | 1958 | EXPECT_FALSE(mockKernel.mockKernel->singleSubdevicePreferredInCurrentEnqueue); |
1958 | 1959 | |
1959 | uint32_t data[4] = {static_cast<uint32_t>(container.getNode(0u)->getContextStartValue(0)), | |
1960 | static_cast<uint32_t>(container.getNode(0u)->getGlobalStartValue(0)), | |
1961 | 2, 2}; | |
1960 | TimestampPacketType data[4] = {static_cast<TimestampPacketType>(container.getNode(0u)->getContextStartValue(0)), | |
1961 | static_cast<TimestampPacketType>(container.getNode(0u)->getGlobalStartValue(0)), | |
1962 | 2, 2}; | |
1962 | 1963 | |
1963 | 1964 | container.getNode(0u)->assignDataToAllTimestamps(0, data); |
1964 | 1965 | |
1969 | 1970 | EXPECT_EQ(result->second.status, MockKernel::TunningStatus::SUBDEVICE_TUNNING_IN_PROGRESS); |
1970 | 1971 | EXPECT_FALSE(mockKernel.mockKernel->singleSubdevicePreferredInCurrentEnqueue); |
1971 | 1972 | |
1972 | data[0] = static_cast<uint32_t>(subdeviceContainer.getNode(0u)->getContextStartValue(0)); | |
1973 | data[1] = static_cast<uint32_t>(subdeviceContainer.getNode(0u)->getGlobalStartValue(0)); | |
1973 | data[0] = static_cast<TimestampPacketType>(subdeviceContainer.getNode(0u)->getContextStartValue(0)); | |
1974 | data[1] = static_cast<TimestampPacketType>(subdeviceContainer.getNode(0u)->getGlobalStartValue(0)); | |
1974 | 1975 | data[2] = 2; |
1975 | 1976 | data[3] = 2; |
1976 | 1977 | |
1985 | 1986 | EXPECT_EQ(result->second.status, MockKernel::TunningStatus::SUBDEVICE_TUNNING_IN_PROGRESS); |
1986 | 1987 | EXPECT_FALSE(mockKernel.mockKernel->singleSubdevicePreferredInCurrentEnqueue); |
1987 | 1988 | |
1988 | data[0] = static_cast<uint32_t>(subdeviceContainer.getNode(1u)->getContextStartValue(0)); | |
1989 | data[1] = static_cast<uint32_t>(subdeviceContainer.getNode(1u)->getGlobalStartValue(0)); | |
1989 | data[0] = static_cast<TimestampPacketType>(subdeviceContainer.getNode(1u)->getContextStartValue(0)); | |
1990 | data[1] = static_cast<TimestampPacketType>(subdeviceContainer.getNode(1u)->getGlobalStartValue(0)); | |
1990 | 1991 | data[2] = 2; |
1991 | 1992 | data[3] = 2; |
1992 | 1993 |