kfdtest: Adapt the CWSR test for emulators

The original test takes forever to run on emulators because emulators
are much slower than Asic. So intelligently detect the emulator scenarios
and reduce the run time by slashing the iteration times.

Change-Id: I087f43c04c2b23b5ab2ecaad07533b767c337e94
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
This commit is contained in:
Yong Zhao
2019-11-06 14:42:50 -05:00
committed by Yong Zhao
parent 0d4c209552
commit 21cda69ba9
3 changed files with 42 additions and 0 deletions
+16
View File
@@ -114,6 +114,14 @@ void KFDCWSRTest::TearDown() {
ROUTINE_END
}
bool isOnEmulator() {
uint32_t isEmuMode = 0;
fscanf_dec("/sys/module/amdgpu/parameters/emu_mode", &isEmuMode);
return isEmuMode;
}
/**
* KFDCWSRTest.BasicTest
*
@@ -135,6 +143,14 @@ TEST_F(KFDCWSRTest, BasicTest) {
int count1 = 40000000;
int count2 = 20000000;
if (isOnEmulator()) {
// Divide the iterator times by 1000 so that the test can
// finish in a reasonable time.
count1 /= 1000;
count2 /= 1000;
LOG() << "On Emulators" << std::endl;
}
unsigned int* result1 = resultBuf1.As<unsigned int*>();
unsigned int* result2 = resultBuf2.As<unsigned int*>();
const char *pIterateIsa;
+25
View File
@@ -39,6 +39,31 @@ void WaitUntilInput() {
} while (dummy != 10); // enter key's ascii value is 10
}
/* fscanf_dec - read a file whose content is a decimal number
* @file [IN ] file to read
* @num [OUT] number in the file
*
* It is copied from the same function in libhsakmt
*/
HSAKMT_STATUS fscanf_dec(const char *file, uint32_t *num)
{
FILE *fd;
HSAKMT_STATUS ret = HSAKMT_STATUS_SUCCESS;
fd = fopen(file, "r");
if (!fd) {
LOG() << "Failed to open " << file << std::endl;
return HSAKMT_STATUS_INVALID_PARAMETER;
}
if (fscanf(fd, "%u", num) != 1) {
LOG() << "Failed to parse as a decimal: " << file << std::endl;;
ret = HSAKMT_STATUS_ERROR;
}
fclose(fd);
return ret;
}
uint64_t RoundToPowerOf2(uint64_t val) {
int bytes = sizeof(uint64_t);
+1
View File
@@ -36,6 +36,7 @@ class BaseQueue;
#define CounterToNanoSec(x) ((x) * 1000 / (is_dgpu() ? 27 : 100))
void WaitUntilInput();
HSAKMT_STATUS fscanf_dec(const char *file, uint32_t *num);
uint64_t RoundToPowerOf2(uint64_t val);
// @brief: waits until the value is written to the buffer or until time out if received through args