-
Notifications
You must be signed in to change notification settings - Fork 739
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inconsistent cmake settings for TLH_PREFETCH_FTA #18870
Comments
It seems the What happens on linux_ppc-64_le, where |
I think setting the |
@zl-wang Do you have any thoughts on:
linux_ppc-64_le:
aix_ppc-64:
|
AArch64 platforms (Linux and macOS): |
It looks to me that it is off in all cases: (my search results below)
It is indeed confusing. Why it is even relevant to OMR for a prefetch scheme dependent on J9VMThread support. In my opinion, this should not be visible in OMR side. |
I think it was an attempt to provide definition in OMR because GC TLH code lives there (in combination with desire to keep OMR independent upstream project). So, either we need to keep OMR_* and J9VM_* settings synchronized or use compromise and check |
@zl-wang Note that the symbol in aix_ppc-64.cmake starts with |
The following files in buildspecs set the
linux_ppc-64_le.spec and linux_390-64.spec don't set the flag, which are inconsistent with the setting in common.cmake. |
Looking back the histories of .cmake files: Power
Z
|
@joransiu FYI. |
I ran personal builds to see if
(internal job: view/OpenJ9%20-%20Personal/job/Pipeline-Build-Test-Personal/20537/) |
we don't need to set the macro(s) consistently across platforms, but of course setting them consistently on each single platform is a good step to take. In order to realize the performance benefit of TLH-prefetch which has been dropped out of favour gradually in the past while, you need to walk a fine line anyway between micro-architecture and codegen. firstly, if you can gain benefit from TLH batch clearing which is default on p at least, TLH-prefetch is an overlapping action by and large. secondly, prefetch instructions with temporal characteristics were the ones having performance benefits from past experiences (since hardware prefetch does pretty much the same thing as explicit vanilla prefetch instructions and without consuming instruction cache capacity). |
Good point. As I understand we are about to enable TLH batch clearing on X and ARM. So, relation between TLH batch clearing and TLH-prefetch should be considered. |
I updated PR #18918. It does not change |
See
|
TLH batch clearing is enabled by default on AArch64. openj9/runtime/cmake/caches/common.cmake Line 121 in a348669
On x86 platforms, you need to set the env variable openj9/runtime/compiler/control/DLLMain.cpp Lines 359 to 360 in a348669
|
I believe Julian's point is: using TLH Batch clearing can make TLH Prefetching less effective significantly. Another words if we zero every TLH memory up front prefetching might be not necessary. |
My points are as follows:
I would like someone to review #18918. |
Additional finding: p codegen accessing openj9/runtime/compiler/p/codegen/J9TreeEvaluator.cpp Lines 5918 to 5919 in 1690101
GC code updating openj9/runtime/gc_include/ObjectAllocationAPI.hpp Lines 172 to 174 in 1690101
|
PR #18918 has been merged. |
There are flags
OMR_GC_TLH_PREFETCH_FTA
andJ9VM_GC_TLH_PREFETCH_FTA
.Settings of these flags in cmake files are complicated, and look inconsistent for some platforms.
runtime/cmake/caches/common.cmake enables
J9VM_GC_TLH_PREFETCH_FTA
. The file does not have an entry forOMR_GC_TLH_PREFETCH_FTA
.openj9/runtime/cmake/caches/common.cmake
Line 149 in ac66d8c
The text was updated successfully, but these errors were encountered: