Foreign memory access hot loop benchmark

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Tue Sep 22 10:02:25 UTC 2020


Thanks for the benchmarks! We'll take a look and see what's going wrong.

Cheers
Maurizio

On 22/09/2020 10:30, Antoine Chambille wrote:
> Hi guys, I'm following the progress of panama projects with eager interest,
> from the point of view of an in-memory database developer.
>
> I wrote 'AddBenchmark' that adds two arrays of numbers, element per
> element, and 'SumBenchmark' that sums the numbers in an array.
> https://github.com/chamb/panama-benchmarks/blob/master/memory/src/main/java/com/activeviam/test/AddBenchmark.java
> https://github.com/chamb/panama-benchmarks/blob/master/memory/src/main/java/com/activeviam/test/SumBenchmark.java
>
> The benchmarks test various memory access techniques, java arrays, unsafe,
> memory handles, with and without manual loop unrolling.
>
>
> The SUM benchmark looks good, performance with memory handles is equivalent
> to java arrays and unsafe, and loop unrolling triggers some x4 acceleration
> that is largely preserved with memory handles.
>
> In the ADD benchmark results are more diverse, memory handles are about 20%
> slower than unsafe, and don't seem to enable automatic vectorization like
> arrays. With manual loop unrolling it's worse, it looks like memory handles
> don't get optimized at all, looks like a bug maybe.
>
>
>
>
> Benchmark                            Mode  Cnt        Score        Error
> Units
> AddBenchmark.scalarArray            thrpt    5  5353483.430 ▒  38313.582
> ops/s
> AddBenchmark.scalarArrayHandle      thrpt    5  5291533.568 ▒  31917.280
> ops/s
> AddBenchmark.scalarMHI              thrpt    5  1699106.867 ▒   8131.672
> ops/s
> AddBenchmark.scalarMHI_v2           thrpt    5  1695513.219 ▒  23860.597
> ops/s
> AddBenchmark.scalarUnsafe           thrpt    5  1995097.798 ▒  24783.804
> ops/s
> AddBenchmark.unrolledArray          thrpt    5  6445338.050 ▒  56050.147
> ops/s
> AddBenchmark.unrolledArrayHandle    thrpt    5  2006794.934 ▒  49052.503
> ops/s
> AddBenchmark.unrolledUnsafe         thrpt    5  2208072.293 ▒  24952.234
> ops/s
> AddBenchmark.unrolledMHI            thrpt    5   222453.602 ▒   3451.839
> ops/s
> AddBenchmark.unrolledMHI_v2         thrpt    5   114637.718 ▒   1812.049
> ops/s
>
> SumBenchmark.scalarArray            thrpt    5  1099167.889 ▒   6392.060
> ops/s
> SumBenchmark.scalarArrayHandle      thrpt    5  1061798.178 ▒ 186062.917
> ops/s
> SumBenchmark.scalarArrayLongStride  thrpt    5  1030295.241 ▒  71319.976
> ops/s
> SumBenchmark.scalarUnsafe           thrpt    5  1067789.139 ▒   4455.897
> ops/s
> SumBenchmark.scalarMHI              thrpt    5  1034607.008 ▒  30830.150
> ops/s
> SumBenchmark.unrolledArray          thrpt    5  4263489.912 ▒  35092.986
> ops/s
> SumBenchmark.unrolledArrayHandle    thrpt    5  4228415.985 ▒  44609.791
> ops/s
> SumBenchmark.unrolledUnsafe         thrpt    5  4228496.447 ▒  22006.197
> ops/s
> SumBenchmark.unrolledMHI            thrpt    5  3665896.721 ▒  35988.799
> ops/s
>
>
> Thanks for reading, looking forward to your feedback and possible
> improvements!
>
> -Antoine


More information about the panama-dev mailing list