SWDEV-348718 - Use of GENERATE in thead function causes random failures with multithread condition. (#2842)

Change-Id: Ie6722abbf5aa9936b5e06002064f7f1109066af9
This commit is contained in:
ROCm CI Service Account
2022-08-05 12:19:12 +05:30
کامیت شده توسط GitHub
والد 2a1b2b993d
کامیت f10716f412
3فایلهای تغییر یافته به همراه54 افزوده شده و 47 حذف شده
@@ -52,26 +52,28 @@ static constexpr auto ARRAY_LOOP{100};
static void ArrayCreate_DiffSizes(int gpu) {
HIP_CHECK_THREAD(hipSetDevice(gpu));
std::pair<size_t, size_t> size =
GENERATE(std::make_pair(NUM_W, NUM_H), std::make_pair(BIGNUM_W, BIGNUM_H));
std::array<HIP_ARRAY, ARRAY_LOOP> array;
size_t pavail, avail;
HIP_CHECK_THREAD(hipMemGetInfo(&pavail, nullptr));
HIP_ARRAY_DESCRIPTOR desc;
desc.NumChannels = 1;
desc.Width = std::get<0>(size);
desc.Height = std::get<1>(size);
desc.Format = HIP_AD_FORMAT_FLOAT;
//Use of GENERATE in thead function causes random failures with multithread condition.
std::vector<std::pair<size_t, size_t>> runs {std::make_pair(NUM_W, NUM_H), std::make_pair(BIGNUM_W, BIGNUM_H)};
for (const auto& size : runs) {
std::array<HIP_ARRAY, ARRAY_LOOP> array;
size_t pavail, avail;
HIP_CHECK_THREAD(hipMemGetInfo(&pavail, nullptr));
HIP_ARRAY_DESCRIPTOR desc;
desc.NumChannels = 1;
desc.Width = std::get<0>(size);
desc.Height = std::get<1>(size);
desc.Format = HIP_AD_FORMAT_FLOAT;
for (int i = 0; i < ARRAY_LOOP; i++) {
HIP_CHECK_THREAD(hipArrayCreate(&array[i], &desc));
}
for (int i = 0; i < ARRAY_LOOP; i++) {
HIP_CHECK_THREAD(hipArrayDestroy(array[i]));
}
for (int i = 0; i < ARRAY_LOOP; i++) {
HIP_CHECK_THREAD(hipArrayCreate(&array[i], &desc));
}
for (int i = 0; i < ARRAY_LOOP; i++) {
HIP_CHECK_THREAD(hipArrayDestroy(array[i]));
}
HIP_CHECK_THREAD(hipMemGetInfo(&avail, nullptr));
REQUIRE_THREAD(pavail == avail);
HIP_CHECK_THREAD(hipMemGetInfo(&avail, nullptr));
REQUIRE_THREAD(pavail == avail);
}
}
/* This testcase verifies hipArrayCreate API for small and big chunks data*/