[vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v9]
Radoslaw Smogura
github.com+7535718+rsmogura at openjdk.java.net
Wed Aug 4 21:00:14 UTC 2021
> # Description
> This change tries to remove mem bars for byte buffer cases.
>
> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported).
>
> # Testing
> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded
>
> # Notes
> Polluted cases to be addressed later
>
> # Benchmarks
>
> Benchmark (size) Mode Cnt Score Error Units
> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op
> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op
> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op
> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op
> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op
>
> Before
>
> Benchmark (size) Mode Cnt Score Error Units
> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op
> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op
> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op
> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op
> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op
Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision:
Code review changes:
* make specied final static in test
* use Unsafe to check if ByteBuffer is readOnly
* remove if in X-ScopedMemory when loading / storing vectors,
stay with byte[] cast
* inline copyMemory in micro benchmark
-------------
Changes:
- all: https://git.openjdk.java.net/panama-vector/pull/104/files
- new: https://git.openjdk.java.net/panama-vector/pull/104/files/472f0a17..ccb7e68f
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=08
- incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=07-08
Stats: 70 lines in 11 files changed: 13 ins; 23 del; 34 mod
Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff
Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104
PR: https://git.openjdk.java.net/panama-vector/pull/104
More information about the panama-dev
mailing list