From 0696f06c162fa69e94058a9b8312451c429dc35d Mon Sep 17 00:00:00 2001 From: Philip Yang Date: Tue, 24 Jan 2023 09:20:10 -0500 Subject: [PATCH] kfdtest: fix KFDSVMRangeTest.MultiGPU tests vector iterator For vector iterator loop access current node directly, don't need gpuNodesAll.at(i), which also causes out of range access. Change vector index loop to iterator loop to simplify the code. Change-Id: I2627ef8d13b5d2c9cd8c51cf4dacc3e8a97fcfb0 Signed-off-by: Philip Yang --- tests/kfdtest/src/KFDSVMRangeTest.cpp | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tests/kfdtest/src/KFDSVMRangeTest.cpp b/tests/kfdtest/src/KFDSVMRangeTest.cpp index 9e86e81b12..ba502da94c 100644 --- a/tests/kfdtest/src/KFDSVMRangeTest.cpp +++ b/tests/kfdtest/src/KFDSVMRangeTest.cpp @@ -1001,12 +1001,12 @@ TEST_F(KFDSVMRangeTest, MultiGPUMigrationTest) { const std::vector gpuNodesAll = m_NodeInfo.GetNodesWithGPU(); std::vector gpuNodes; - for (int i : gpuNodesAll) { + for (auto node : gpuNodesAll) { const HsaNodeProperties *pNodeProperties; - pNodeProperties = m_NodeInfo.GetNodeProperties(gpuNodesAll.at(i)); + pNodeProperties = m_NodeInfo.GetNodeProperties(node); if (pNodeProperties->Capability.ui32.SVMAPISupported) - gpuNodes.push_back(gpuNodesAll.at(i)); + gpuNodes.push_back(node); } if (gpuNodes.size() < 2) { LOG() << "Skipping test: at least two SVM supported GPUs needed." << std::endl; @@ -1025,16 +1025,16 @@ TEST_F(KFDSVMRangeTest, MultiGPUMigrationTest) { for (HSAuint64 i = 0; i < BufferSize / 8; i++) pBuf[i] = i; - for (HSAuint64 gpuidx = 0; gpuidx < gpuNodes.size(); gpuidx++) { - EXPECT_SUCCESS(SVMRangeMapToNode(pBuf, BufferSize, gpuNodes.at(gpuidx))); - EXPECT_SUCCESS(SVMRangePrefetchToNode(pBuf, BufferSize, gpuNodes.at(gpuidx))); + for (auto node : gpuNodes) { + EXPECT_SUCCESS(SVMRangeMapToNode(pBuf, BufferSize, node)); + EXPECT_SUCCESS(SVMRangePrefetchToNode(pBuf, BufferSize, node)); - EXPECT_SUCCESS(SVMRangeMapToNode(pData, BufferSize, gpuNodes.at(gpuidx))); - EXPECT_SUCCESS(SVMRangePrefetchToNode(pData, BufferSize, gpuNodes.at(gpuidx))); + EXPECT_SUCCESS(SVMRangeMapToNode(pData, BufferSize, node)); + EXPECT_SUCCESS(SVMRangePrefetchToNode(pData, BufferSize, node)); } - for (HSAuint64 gpuidx = 0; gpuidx < gpuNodes.size(); gpuidx++) { - ASSERT_SUCCESS(sdmaQueue.Create(gpuNodes.at(gpuidx))); + for (auto node : gpuNodes) { + ASSERT_SUCCESS(sdmaQueue.Create(node)); sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(sdmaQueue.GetFamilyId(), pData, pBuf, BufferSize)); @@ -1085,12 +1085,12 @@ TEST_F(KFDSVMRangeTest, MultiGPUAccessInPlaceTest) { const std::vector gpuNodesAll = m_NodeInfo.GetNodesWithGPU(); std::vector gpuNodes; - for (int i : gpuNodesAll) { + for (auto node : gpuNodesAll) { const HsaNodeProperties *pNodeProperties; - pNodeProperties = m_NodeInfo.GetNodeProperties(gpuNodesAll.at(i)); + pNodeProperties = m_NodeInfo.GetNodeProperties(node); if (pNodeProperties->Capability.ui32.SVMAPISupported) - gpuNodes.push_back(gpuNodesAll.at(i)); + gpuNodes.push_back(node); } if (gpuNodes.size() < 2) { LOG() << "Skipping test: at least two SVM supported GPUs needed." << std::endl; @@ -1109,16 +1109,16 @@ TEST_F(KFDSVMRangeTest, MultiGPUAccessInPlaceTest) { for (HSAuint64 i = 0; i < BufferSize / 8; i++) pBuf[i] = i; - for (HSAuint64 gpuidx = 0; gpuidx < gpuNodes.size(); gpuidx++) { - EXPECT_SUCCESS(SVMRangeMapInPlaceToNode(pBuf, BufferSize, gpuNodes.at(gpuidx))); - EXPECT_SUCCESS(SVMRangePrefetchToNode(pBuf, BufferSize, gpuNodes.at(gpuidx))); + for (auto node : gpuNodes) { + EXPECT_SUCCESS(SVMRangeMapInPlaceToNode(pBuf, BufferSize, node)); + EXPECT_SUCCESS(SVMRangePrefetchToNode(pBuf, BufferSize, node)); - EXPECT_SUCCESS(SVMRangeMapInPlaceToNode(pData, BufferSize, gpuNodes.at(gpuidx))); - EXPECT_SUCCESS(SVMRangePrefetchToNode(pData, BufferSize, gpuNodes.at(gpuidx))); + EXPECT_SUCCESS(SVMRangeMapInPlaceToNode(pData, BufferSize, node)); + EXPECT_SUCCESS(SVMRangePrefetchToNode(pData, BufferSize, node)); } - for (HSAuint64 gpuidx = 0; gpuidx < gpuNodes.size(); gpuidx++) { - ASSERT_SUCCESS(sdmaQueue.Create(gpuNodes.at(gpuidx))); + for (auto node : gpuNodes) { + ASSERT_SUCCESS(sdmaQueue.Create(node)); sdmaQueue.PlaceAndSubmitPacket(SDMACopyDataPacket(sdmaQueue.GetFamilyId(), pData, pBuf, BufferSize));