Back in the good old days when I was working as a GPU architect in NVIDIA, we had suites of tests for various stages of GPU development: architecture, RTL, driver, real chips, etc.
Ogtest, consisting of tests written in OpenGL, can be applied to all stages. Each test is written to be as compact as possible, the tests are ordered from simple to complex, and collectively they cover the entire target space (e.g. all applications to run on the target GPU).
For example, the first test is to draw a flat colored triangle, the next is a textured triangle, and the next is called son-of-the-textured-triangle (with two textures instead of just one, if I remember correctly).
I then went on to add a test called daughter-of-the-textured-triangle (I am all in for gender equality) which consists of two textures but exercised a different path through the texturing and shading units (if I remember correctly).
I like to think of these as the basis test cases for the entire target space, analogous to basis vectors in linear algebra.
This applies to all research and development projects. Instead of jumping to debug full-scale applications, it can help to design a set of basis cases first. The process can clarify our thinking, and help us debug and explore algorithm/implementation issues. The basis cases can even be part of the analysis section of a research paper.
Leave a Reply