kfdtest: Expand KFDQMTest.MultipleCpQueues to cover all CP queues

Because of that, rename the test to AllCpQueues.

Change-Id: I57105f863db2558e850c703d151ffebcce2c7a17
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
This commit is contained in:
Yong Zhao
2019-11-06 19:10:58 -05:00
committed by Kent Russell
parent fdba74c2fb
commit a4d570fa2b
6 changed files with 20 additions and 15 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ FILTER[core_sws]=\
"KFDQMTest.CreateDestroyCpQueue:"\
"KFDQMTest.SubmitNopCpQueue:"\
"KFDQMTest.SubmitPacketCpQueue:"\
"KFDQMTest.MultipleCpQueues:"\
"KFDQMTest.AllCpQueues:"\
"KFDQMTest.CreateDestroySdmaQueue:"\
"KFDQMTest.SubmitNopSdmaQueue:"\
"KFDQMTest.SubmitPacketSdmaQueue:"\
+2 -2
View File
@@ -63,8 +63,8 @@ void KFDBaseComponentTest::SetUp() {
m_FamilyId = FamilyIdFromNode(nodeProperties);
GetSdmaInfo(nodeProperties, &m_numSdmaEngines, &m_numSdmaXgmiEngines,
&m_numSdmaQueuesPerEngine);
GetHwQueueInfo(nodeProperties, &m_numCpQueues, &m_numSdmaEngines,
&m_numSdmaXgmiEngines, &m_numSdmaQueuesPerEngine);
g_baseTest = this;
@@ -62,6 +62,7 @@ class KFDBaseComponentTest : public testing::Test {
HsaVersionInfo m_VersionInfo;
HsaSystemProperties m_SystemProperties;
unsigned int m_FamilyId;
unsigned int m_numCpQueues;
unsigned int m_numSdmaEngines;
unsigned int m_numSdmaXgmiEngines;
unsigned int m_numSdmaQueuesPerEngine;
+6 -8
View File
@@ -115,32 +115,30 @@ TEST_F(KFDQMTest, SubmitPacketCpQueue) {
TEST_END
}
TEST_F(KFDQMTest, MultipleCpQueues) {
TEST_F(KFDQMTest, AllCpQueues) {
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];
std::vector<PM4Queue> queues(m_numCpQueues);
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx)
for (unsigned int qidx = 0; qidx < m_numCpQueues; ++qidx)
ASSERT_SUCCESS(queues[qidx].Create(defaultGPUNode)) << " QueueId=" << qidx;
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx) {
for (unsigned int qidx = 0; qidx < m_numCpQueues; ++qidx) {
queues[qidx].PlaceAndSubmitPacket(PM4WriteDataPacket(destBuf.As<unsigned int*>()+qidx*2, qidx, qidx));
queues[qidx].Wait4PacketConsumption();
WaitOnValue(destBuf.As<unsigned int*>()+qidx*2, qidx);
EXPECT_TRUE(WaitOnValue(destBuf.As<unsigned int*>()+qidx*2, qidx));
}
for (unsigned int qidx = 0; qidx < MAX_CP_QUEUES; ++qidx)
for (unsigned int qidx = 0; qidx < m_numCpQueues; ++qidx)
EXPECT_SUCCESS(queues[qidx].Destroy());
TEST_END
+8 -3
View File
@@ -140,17 +140,19 @@ unsigned int FamilyIdFromNode(const HsaNodeProperties *props) {
return familyId;
}
void GetSdmaInfo(const HsaNodeProperties *props,
void GetHwQueueInfo(const HsaNodeProperties *props,
unsigned int *p_num_cp_queues,
unsigned int *p_num_sdma_engines,
unsigned int *p_num_sdma_xgmi_engines,
unsigned int *p_num_sdma_queues_per_engine) {
int num_cp_queues = 24;
int num_sdma_queues_per_engine = 2;
if (props->EngineId.ui32.Major == 9) {
if (props->EngineId.ui32.Stepping == 6) // VEGA20
num_sdma_queues_per_engine = 8;
} else if (props->EngineId.ui32.Major == 10) { //NAVIi
num_sdma_queues_per_engine = 8;
} else if (props->EngineId.ui32.Major == 10) { // NAVI
num_sdma_queues_per_engine = 8;
}
if (p_num_sdma_engines)
@@ -161,6 +163,9 @@ void GetSdmaInfo(const HsaNodeProperties *props,
if (p_num_sdma_queues_per_engine)
*p_num_sdma_queues_per_engine = num_sdma_queues_per_engine;
if (p_num_cp_queues)
*p_num_cp_queues = num_cp_queues;
}
bool isTonga(const HsaNodeProperties *props) {
+2 -1
View File
@@ -51,7 +51,8 @@ bool is_dgpu();
bool isTonga(const HsaNodeProperties *props);
unsigned int FamilyIdFromNode(const HsaNodeProperties *props);
void GetSdmaInfo(const HsaNodeProperties *props,
void GetHwQueueInfo(const HsaNodeProperties *props,
unsigned int *p_num_cp_queues,
unsigned int *p_num_sdma_engines,
unsigned int *p_num_sdma_xgmi_engines,
unsigned int *p_num_sdma_queues_per_engine);