From c14a254f2e2b83f59d3f26817c73530dcaced324 Mon Sep 17 00:00:00 2001 From: Yong Zhao Date: Thu, 18 Apr 2019 13:25:32 -0400 Subject: [PATCH] kfdtest: Add CreateDestroyCpQueue and CreateDestroySdmaQueue test Those two tests cover the basic queue creation and destruction without submitting packets to CP and SDMA user queues. During bringup, they bring values in term of untangling the issues arising in queue creation and packet execution, which are two very different kinds. Because of those two tests, we also rename some existing tests as follows: CreateCpQueue -> SubmitPacketCpQueue CreateSdmaQueue -> SubmitPacketSdmaQueue CreateMultipleCpQueues -> MultipleCpQueues CreateMultipleSdmaQueues -> MultipleSdmaQueues Lastly, move MultipleCpQueues test closer to the CP queue section rather than leaving it behind the SDMA queue section. Change-Id: I110fb3f3fb21878339045dd1d1c8c9d61b8988b7 Signed-off-by: Yong Zhao [ROCm/ROCR-Runtime commit: 5b18614eafa1bc943c702cd190f2bc820748e0af] --- .../tests/kfdtest/src/KFDQMTest.cpp | 98 ++++++++++++------- 1 file changed, 64 insertions(+), 34 deletions(-) diff --git a/projects/rocr-runtime/tests/kfdtest/src/KFDQMTest.cpp b/projects/rocr-runtime/tests/kfdtest/src/KFDQMTest.cpp index 89291c3b5a..5f9dada9f0 100644 --- a/projects/rocr-runtime/tests/kfdtest/src/KFDQMTest.cpp +++ b/projects/rocr-runtime/tests/kfdtest/src/KFDQMTest.cpp @@ -55,7 +55,22 @@ void KFDQMTest::TearDown() { ROUTINE_END } -TEST_F(KFDQMTest, CreateCpQueue) { +TEST_F(KFDQMTest, CreateDestroyCpQueue) { + TEST_START(TESTPROFILE_RUNALL) + + int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); + ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; + + PM4Queue queue; + + ASSERT_SUCCESS(queue.Create(defaultGPUNode)); + + EXPECT_SUCCESS(queue.Destroy()); + + TEST_END +} + +TEST_F(KFDQMTest, SubmitPacketCpQueue) { TEST_START(TESTPROFILE_RUNALL) int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); @@ -80,7 +95,53 @@ TEST_F(KFDQMTest, CreateCpQueue) { TEST_END } -TEST_F(KFDQMTest, CreateSdmaQueue) { +TEST_F(KFDQMTest, MultipleCpQueues) { + TEST_START(TESTPROFILE_RUNALL) + + int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); + ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; + + static const unsigned int MAX_CP_QUEUES = 16; + + HsaMemoryBuffer destBuf(PAGE_SIZE, defaultGPUNode, false); + + destBuf.Fill(0xFF); + + PM4Queue queues[MAX_CP_QUEUES]; + + for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) + ASSERT_SUCCESS(queues[qidx].Create(defaultGPUNode)) << " QueueId=" << qidx; + + for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) { + queues[qidx].PlaceAndSubmitPacket(PM4WriteDataPacket(destBuf.As()+qidx*2, qidx, qidx)); + + queues[qidx].Wait4PacketConsumption(); + + WaitOnValue(destBuf.As()+qidx*2, qidx); + } + + for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) + EXPECT_SUCCESS(queues[qidx].Destroy()); + + TEST_END +} + +TEST_F(KFDQMTest, CreateDestroySdmaQueue) { + TEST_START(TESTPROFILE_RUNALL) + + int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); + ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; + + SDMAQueue queue; + + ASSERT_SUCCESS(queue.Create(defaultGPUNode)); + + EXPECT_SUCCESS(queue.Destroy()); + + TEST_END +} + +TEST_F(KFDQMTest, SubmitPacketSdmaQueue) { TEST_START(TESTPROFILE_RUNALL) int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); @@ -105,7 +166,7 @@ TEST_F(KFDQMTest, CreateSdmaQueue) { TEST_END } -TEST_F(KFDQMTest, CreateMultipleSdmaQueues) { +TEST_F(KFDQMTest, MultipleSdmaQueues) { TEST_START(TESTPROFILE_RUNALL) int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); @@ -208,37 +269,6 @@ TEST_F(KFDQMTest, SdmaConcurrentCopies) { TEST_END } -TEST_F(KFDQMTest, CreateMultipleCpQueues) { - TEST_START(TESTPROFILE_RUNALL) - - int defaultGPUNode = m_NodeInfo.HsaDefaultGPUNode(); - ASSERT_GE(defaultGPUNode, 0) << "failed to get default GPU Node"; - - static const unsigned int MAX_CP_QUEUES = 16; - - HsaMemoryBuffer destBuf(PAGE_SIZE, defaultGPUNode, false); - - destBuf.Fill(0xFF); - - PM4Queue queues[MAX_CP_QUEUES]; - - for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) - ASSERT_SUCCESS(queues[qidx].Create(defaultGPUNode)) << " QueueId=" << qidx; - - for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) { - queues[qidx].PlaceAndSubmitPacket(PM4WriteDataPacket(destBuf.As()+qidx*2, qidx, qidx)); - - queues[qidx].Wait4PacketConsumption(); - - WaitOnValue(destBuf.As()+qidx*2, qidx); - } - - for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) - EXPECT_SUCCESS(queues[qidx].Destroy()); - - TEST_END -} - TEST_F(KFDQMTest, DisableCpQueueByUpdateWithNullAddress) { TEST_START(TESTPROFILE_RUNALL)