On Thu, 13 Feb 2025 12:06:09 GMT, Jatin Bhateja <jbhat...@openjdk.org> 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

Reply via email to