tactcomplabs / rev

RISC-V SST CPU Component
Other
17 stars 21 forks source link

[FEATURE REQUEST] Different testing levels #293

Closed leekillough closed 3 months ago

leekillough commented 3 months ago

A testing level should be added to control the level and timing of testing. Such as Low, Medium, High or simply Short and Long.

This is preferred to explicitly naming tests, such as BUILD_ASM_TESTING or ENABLE_FP_TESTING.

The default should enable all tests.

rkabrick commented 3 months ago

What tests will be a part of what levels?

leekillough commented 3 months ago

That's for the solver of this issue to decide

leekillough commented 3 months ago

https://github.com/tactcomplabs/rev/pull/238#issuecomment-2184314058

leekillough commented 3 months ago

You can look at the time each test takes by running it today. From there, you can do a Huffman-like compression, by sorting the times, and taking all of the fastest tests which take 1/3 of the total time. That would be the "Low" category. Then among the remaining tests, take the fastest which add up to 1/3 of the total time. They and the Low tests would be in the Med category. Finally, the remaining tests and Med would be in the High category. That's one way to do it in thirds.

But another way would be to put all of the fastest tests in the Low category up to where there is a huge climb in the timing of the tests. Sort the tests by runtime, and plot the runtimes. At the first large jump, put everything below that jump in the Low category. Then do the same with the remaining tests, finding a large jump and putting all tests under that jump in the Med category. Put any remaining tests in the High category.

Numbers like 1, 2, 3 can be used instead of category names, so that in CMake you can add a tag like testlevel=1 to each test with a number on it, and then only run a test if its number is less than or equal to the testing level.