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 <Philip.Yang@amd.com>
이 커밋은 다음에 포함됨:
Philip Yang가 2023-04-18 17:58:06 -04:00를 커밋했습니다
1 부모 21abaef3f8
커밋 0696f06c16
1 파일이 변경됨
+20 -20
+20 -20
파일 보기
@@ -1001,12 +1001,12 @@ TEST_F(KFDSVMRangeTest, MultiGPUMigrationTest) {
const std::vector<int> gpuNodesAll = m_NodeInfo.GetNodesWithGPU();
std::vector<int> 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<int> gpuNodesAll = m_NodeInfo.GetNodesWithGPU();
std::vector<int> 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));