VectorAPI: Test plan draft
Paul Sandoz
paul.sandoz at oracle.com
Thu Jun 28 18:47:03 UTC 2018
Hi Jp,
Thanks for writing this up. Overall it looks good.
> On Jun 22, 2018, at 9:20 AM, Halimi, Jean-Philippe <jean-philippe.halimi at intel.com> wrote:
>
> Dear all,
>
> Here is the first draft of the Vector API test plan. Can you please review it and let me know your thoughts?
>
> Thank you,
>
> Jp
>
> --
>
> Introduction
>
> - There are 6 types and 4 different vector sizes supported:
>
> o Types: byte (8 bits), short (16 bits), int (32 bits), long (64 bits), float (32 bits), double (64 bits)
>
> o Vector sizes: 64 bits, 128 bits, 256 bits, 512 bits
>
> - x86 intrinsification for all tests realized in AVX and in some cases SSE
>
> o Generation of hardware-accelerated vector code sequences on supported hardware
>
> o Dynamic code dispatch depending on underlying ISA
> Test success criteria
>
> 1. All intrinsified VectorAPI methods are covered
>
> 2. All vector shapes and sizes combinations are covered
>
> 3. Test pass rate is 100% when tested on Skylake Server with default configuration
Ok, with the HotSpot options that should cover the various subsets of supported instructions on other kinds of server.
>
> 4. Test success stability is 99%
> Test methodology
> The test infrastructure consists of files and scripts which goal is to prepare and run the tests, and visualize the test results.
>
> - Template files factorize tests by type (Unary, Binary etc)
>
> - Shell script generates test bits for each vector shape and size
>
> o gen-template.sh details all the supported tests.
>
> o gen-tests.sh is used to generate all the tests files.
>
> - The test infrastructure uses jtreg to launch the tests
>
> - Each test:
>
> o Has a reference Java implementation of the Vector API feature being tested.
>
> o Takes functors as inputs used to mimics a set of realistic use-case scenario
>
> o Asserts that the result of the Vector API call matches the reference implementation
>
> - In case an assertion is failing, the test will generate an exception
>
> o Details about incorrect calculations or crashes will be available for later use
> Test Inventory
> Two Java source files are generated per vector shape automatically by a template mechanism.
> Example: Integers vectors, 128bits long:
>
> - Int128VectorTests.java: contains all API calls-related tests
>
> - Int128VectorLoadStoreTests.java: contains all Load/Store-related tests
> Test configurations
> Testing should cover:
>
> - Testing on both Linux and Windows
Mac too?
>
> - Testing with every combination of UseSSE=0 through UseSSE=4 and UseAVX=0 through UseAVX=3
Only need to test those combinations with -XX:+UseVectorApiIntrinsics?
>
> - Testing with -XX:+UseVectorApiIntrinsics and also with -XX:-UseVectorApiIntrinsics
The latter will ensure testing of the Java implementations.
It would be useful to mention that test execution time for one whole run under a single set of arguments is reasonable (e.g. < 2 minutes say) with possible improvements.
Thanks,
Paul.
More information about the panama-dev
mailing list