Skip to content

Commit 49fde66

Browse files
committed
[GR-71010] Add MX_BENCHMARK_EXTRAS to populate extras in mx benchmark datapoints.
PullRequest: mx/1977
2 parents 8062487 + 783847e commit 49fde66

File tree

4 files changed

+41
-29
lines changed

4 files changed

+41
-29
lines changed

ci/common.jsonnet

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,26 @@ local common_json = import "../common.json";
5959
'oraclejdk24': jdk_base + common_json.jdks["oraclejdk24"] + { jdk_version:: 24 },
6060
} + {
6161
[name]: jdk_base + common_json.jdks[name] + { jdk_version:: 25 }
62-
for name in ["oraclejdk25"] + variants("labsjdk-ce-25") + variants("labsjdk-ee-25")
62+
for name in ["oraclejdk25"]
63+
} + {
64+
# Synthesize labsjdk-*-25 from labsjdk-*-latest
65+
# This is intended for jobs that specifically need the 25 LTS JDK (e.g., espresso for its guest).
66+
# When running the compiler or the native image generator "latest" should be used instead.
67+
# When latest moves past 25, jobs using 25 should be reviwed and if they are still needed labsjdk-(ce|ee)-25 should
68+
# be added to common.json.
69+
# Note that the assert below unfortunately doesn't work in the sjsonnet version used currently in the CI (GR-40975).
70+
[std.strReplace(name, 'latest', '25')]: jdk_base + common_json.jdks[name] + { assert parse_labsjdk_version(self) == 25, jdk_version:: 25 }
71+
for name in variants("labsjdk-ce-latest") + variants("labsjdk-ee-latest")
6372
} + {
6473
[name]: jdk_base + common_json.jdks[name] + { jdk_version:: parse_labsjdk_version(self), jdk_name:: "jdk-latest"}
6574
for name in ["oraclejdk-latest"] + variants("labsjdk-ce-latest") + variants("labsjdk-ee-latest")
6675
} + {
6776
'graalvm-ee-21': jdk_base + common_json.jdks["graalvm-ee-21"] + { jdk_version:: 21 },
6877
'graalvm-ee-25-ea': jdk_base + common_json.jdks["graalvm-ee-25-ea"] + { jdk_version:: 25 },
6978
},
70-
# We do not want to expose galahad-jdk
71-
assert std.assertEqual([x for x in std.objectFields(common_json.jdks) if x != "galahad-jdk"], std.objectFields(jdks_data)),
79+
# We do not want to expose galahad-jdk, labsjdk-(ce|ee)-25 are synthetized from latest
80+
local is_labsjdk_25(x) = std.startsWith(x, "labsjdk-ee-25") || std.startsWith(x, "labsjdk-ce-25"),
81+
assert std.assertEqual([x for x in std.objectFields(common_json.jdks) if x != "galahad-jdk"], [x for x in std.objectFields(jdks_data) if !is_labsjdk_25(x)]),
7282
# Verify oraclejdk-latest and labsjdk-ee-latest versions match
7383
assert
7484
local _labsjdk = common_json.jdks["labsjdk-ee-latest"];

common.json

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,22 +45,16 @@
4545

4646
"oraclejdk24": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24.0.1+9", "platformspecific": true, "extrabundles": ["static-libs"]},
4747

48-
"oraclejdk25": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+30", "platformspecific": true, "extrabundles": ["static-libs"]},
49-
"labsjdk-ce-25": {"name": "labsjdk", "version": "ce-25+30-jvmci-b01", "platformspecific": true },
50-
"labsjdk-ce-25Debug": {"name": "labsjdk", "version": "ce-25+30-jvmci-b01-debug", "platformspecific": true },
51-
"labsjdk-ce-25-llvm": {"name": "labsjdk", "version": "ce-25+30-jvmci-b01-sulong", "platformspecific": true },
52-
"labsjdk-ee-25": {"name": "labsjdk", "version": "ee-25+30-jvmci-b01", "platformspecific": true },
53-
"labsjdk-ee-25Debug": {"name": "labsjdk", "version": "ee-25+30-jvmci-b01-debug", "platformspecific": true },
54-
"labsjdk-ee-25-llvm": {"name": "labsjdk", "version": "ee-25+30-jvmci-b01-sulong", "platformspecific": true },
48+
"oraclejdk25": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+37", "platformspecific": true, "extrabundles": ["static-libs"]},
5549
"graalvm-ee-25-ea": {"name": "graalvm-jdk", "version": "25.0.0", "ea": "36", "platformspecific": true },
5650

5751
"oraclejdk-latest": {"name": "jpg-jdk", "version": "25", "build_id": "jdk-25+37", "platformspecific": true, "extrabundles": ["static-libs"]},
58-
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+37-jvmci-b06", "platformspecific": true },
59-
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+37-jvmci-b06-debug", "platformspecific": true },
60-
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+37-jvmci-b06-sulong", "platformspecific": true },
61-
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+37-jvmci-b06", "platformspecific": true },
62-
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+37-jvmci-b06-debug", "platformspecific": true },
63-
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+37-jvmci-b06-sulong", "platformspecific": true }
52+
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-25+37-jvmci-25.1-b07", "platformspecific": true },
53+
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-25+37-jvmci-25.1-b07-debug", "platformspecific": true },
54+
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-25+37-jvmci-25.1-b07-sulong", "platformspecific": true },
55+
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-25+37-jvmci-25.1-b07", "platformspecific": true },
56+
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-25+37-jvmci-25.1-b07-debug", "platformspecific": true },
57+
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-25+37-jvmci-25.1-b07-sulong", "platformspecific": true }
6458
},
6559

6660
"eclipse": {

src/mx/_impl/mx_benchmark.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3851,16 +3851,24 @@ def buildName(self):
38513851
return build_name()
38523852

38533853
def extras(self, mxBenchmarkArgs):
3854-
extras = {}
3854+
"""
3855+
Combines env-provided extras using MX_BENCHMARK_EXTRAS and CLI-provided extras.
3856+
If a key is defined in both the env var and on the CLI, the CLI one takes precedence.
3857+
"""
3858+
all_extras = []
3859+
if mx.get_env("MX_BENCHMARK_EXTRAS"):
3860+
all_extras += mx.get_env("MX_BENCHMARK_EXTRAS", default="").split(",")
38553861
if mxBenchmarkArgs.extras:
3856-
for kv in mxBenchmarkArgs.extras.split(","):
3857-
split_kv = kv.split(":")
3858-
if len(split_kv) != 2:
3859-
raise ValueError(f"Cannot handle extra '{kv}'. Extras key-value pairs must contain a single colon.")
3860-
k, v = split_kv
3861-
if not re.match(r"^[\w\d\._-]*$", k):
3862-
raise ValueError(f"Extra key can only contain numbers, characters, underscores and dashes. Got '{k}'")
3863-
extras[f"extra.{k}"] = v
3862+
all_extras += mxBenchmarkArgs.extras.split(',')
3863+
extras = {}
3864+
for kv in all_extras:
3865+
split_kv = kv.split(":")
3866+
if len(split_kv) != 2:
3867+
raise ValueError(f"Cannot handle extra '{kv}'. Extras key-value pairs must contain a single colon.")
3868+
k, v = split_kv
3869+
if not re.match(r"^[\w\d\._-]*$", k):
3870+
raise ValueError(f"Extra key can only contain numbers, characters, periods, underscores and dashes. Got '{k}'")
3871+
extras[f"extra.{k}"] = v
38643872
return extras
38653873

38663874
def checkEnvironmentVars(self):
@@ -4049,7 +4057,7 @@ def benchpoints(self, args):
40494057
"--ignore-suite-commit-info", default=None, type=lambda s: s.split(","),
40504058
help="A comma-separated list of suite dependencies whose commit info must not be included.")
40514059
parser.add_argument(
4052-
"--extras", default=None, help="One or more comma separated key:value pairs to add to the results file.")
4060+
"--extras", default=None, help="One or more comma separated key:value pairs to add to the results file. Takes precedence over the keys defined in MX_BENCHMARK_EXTRAS in case of duplicates.")
40534061
parser.add_argument(
40544062
'--dry-run', action='store_true', help="Only displays the resulting file without saving it.")
40554063
parser.add_argument(
@@ -4062,7 +4070,7 @@ def benchpoints(self, args):
40624070
sys.exit(0)
40634071

40644072
dims = self.dimensions(None, args, "")
4065-
mx.logv(f"The points will be augumented with the following fields: {json.dumps(dims, indent=4)}")
4073+
mx.logv(f"The points will be augmented with the following fields: {json.dumps(dims, indent=4)}")
40664074

40674075
# Update the results files with populated dimensions
40684076
if args.results_file:
@@ -4120,7 +4128,7 @@ def benchmark(self, mxBenchmarkArgs, bmSuiteArgs, returnSuiteAndResults=False):
41204128
"--ignore-suite-commit-info", default=None, type=lambda s: s.split(","),
41214129
help="A comma-separated list of suite dependencies whose commit info must not be included.")
41224130
parser.add_argument(
4123-
"--extras", default=None, help="One or more comma separated key:value pairs to add to the results file.")
4131+
"--extras", default=None, help="One or more comma separated key:value pairs to add to the results file. Takes precedence over the keys defined in MX_BENCHMARK_EXTRAS in case of duplicates.")
41244132
parser.add_argument(
41254133
"--list", default=None, action="store_true",
41264134
help="Print the list of all available benchmark suites or all benchmarks available in a suite.")

src/mx/mx_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# The version must be updated for every PR (checked in CI) and the comment should reflect the PR's issue
2-
version = "7.64.1" # GR-70736 Suppress git fetch output when in non-verbose mode
2+
version = "7.64.2" # GR-71010 MX_BENCHMARK_EXTRAS support

0 commit comments

Comments
 (0)