On Thu, 13 Feb 2025 12:06:09 GMT, Jatin Bhateja <[email protected]> wrote:
>> Suite MaskedLogicOpts.maskedLogicOperationsLong512() failed on both x86 and
>> AArch64 with the following error:
>>
>>
>> java.lang.IndexOutOfBoundsException: Index 252 out of bounds for length 249
>>
>>
>> The variable `long256_arr_idx` is misused when indexing 'LongVector l2, l3,
>> l4, l5' in function `maskedLogicOperationsLongKernel()`. 'long256_arr_idx'
>> increases by 4 every time the benchmark runs and ensures the incremented
>> value remains within the bounds of the array. However, for
>> `LongVector.SPECIES_512`, it loads 8 numbers from the array each time the
>> benchmark runs, resulting in an out-of-range indexing issue.
>>
>> Hence, we revised the index variables from `long256_arr_idx` to
>> `long512_arr_idx`, which has a stride of 8, to ensure that the loaded vector
>> is inside of the array boundary for all vector species. This is also
>> consistent with other kernel functions.
>>
>> Additionally, some defined but unused variables have been removed.
>
> test/micro/org/openjdk/bench/jdk/incubator/vector/MaskedLogicOpts.java line
> 122:
>
>> 120: @Setup(Level.Invocation)
>> 121: public void init_per_invoc() {
>> 122: int512_arr_idx = (int512_arr_idx + 16) & (ARRAYLEN-1);
>
> Benchmark assumes that ARRAYLEN is a POT value, thus it will also be good to
> use the modulous operator for rounding here, it will be expensive but will
> not impact the performance of the Benchmarking kernels.
Please try with following command line
`java -jar target/benchmarks.jar -f 1 -i 2 -wi 1 -w 30 -p ARRAYLEN=30
MaskedLogic`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/22963#discussion_r1954384129