VectorAPI: Test plan draft
Paul Sandoz
paul.sandoz at oracle.com
Tue Jul 3 17:27:15 UTC 2018
Looks good, a small typo below.
> On Jul 3, 2018, at 8:09 AM, Halimi, Jean-Philippe <jean-philippe.halimi at intel.com> wrote:
>
> Dear all,
>
> Here is the updated version. Let me know if there's anything else you'd like to change.
>
> 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 and with HotSpot options covering various subsets of supported instructions
> 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.
s/which goal is to/that/
Paul.
> - 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 of one specific configuration has a reasonable time (<2 minutes). However, several configurations should be covered, including:
> - Testing on Linux, Windows and MacOS
> - Testing with -XX:+UseVectorApiIntrinsics and also with -XX:-UseVectorApiIntrinsics
> o The latter will ensure the Java implementations are correct
> - Testing with every combination of UseSSE=0 through UseSSE=4 and UseAVX=0 through UseAVX=3
> o Only test these options with -XX:+UseVectorApiIntrinsics enabled
>
> Jp
>
> -----Original Message-----
> From: Paul Sandoz [mailto:paul.sandoz at oracle.com]
> Sent: Thursday, June 28, 2018 11:47 AM
> To: Halimi, Jean-Philippe <jean-philippe.halimi at intel.com>
> Cc: panama-dev at openjdk.java.net
> Subject: Re: VectorAPI: Test plan draft
>
> 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