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