Skip to content

Commit d5ceb0a

Browse files
committed
[GR-16754] Add multi-context benchmark configurations
PullRequest: graalpython/568
2 parents 480cc12 + 83e3e08 commit d5ceb0a

File tree

5 files changed

+46
-16
lines changed

5 files changed

+46
-16
lines changed

ci.jsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ local const = import 'ci_common/constants.libsonnet';
33
local builder = import 'ci_common/builder.libsonnet';
44

55
{
6-
overlay: "78efaf43e454ae195cce47c76ad542c5e3572dcf",
6+
overlay: "9c948fac4c5424a79d957f0e62bed7cc71489ed2",
77

88
// ======================================================================================================
99
//

ci_common/mixins.libsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ local const = import 'constants.libsonnet';
7474

7575
local labsjdk8 = {
7676
downloads +: {
77-
JAVA_HOME: utils.download("oraclejdk", "8u212-jvmci-20-b01"),
77+
JAVA_HOME: utils.download("oraclejdk", "8u212-jvmci-20-b04"),
7878
EXTRA_JAVA_HOMES : {
7979
pathlist: [utils.download("oraclejdk", "11+28")]
8080
},

graalpython/com.oracle.graal.python.shell/src/com/oracle/graal/python/shell/GraalPythonMain.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.graalvm.options.OptionCategory;
4545
import org.graalvm.polyglot.Context;
4646
import org.graalvm.polyglot.Context.Builder;
47+
import org.graalvm.polyglot.Engine;
4748
import org.graalvm.polyglot.PolyglotException;
4849
import org.graalvm.polyglot.PolyglotException.StackFrame;
4950
import org.graalvm.polyglot.Source;
@@ -73,14 +74,14 @@ public static void main(String[] args) {
7374
private boolean stdinIsInteractive = System.console() != null;
7475
private boolean runLLI = false;
7576
private boolean unbufferedIO = false;
77+
private boolean multiContext = false;
7678
private VersionAction versionAction = VersionAction.None;
7779
private String sulongLibraryPath = null;
7880
private List<String> givenArguments;
7981
private boolean wantsExperimental = false;
8082

8183
@Override
8284
protected List<String> preprocessArguments(List<String> givenArgs, Map<String, String> polyglotOptions) {
83-
8485
ArrayList<String> unrecognized = new ArrayList<>();
8586
ArrayList<String> inputArgs = new ArrayList<>();
8687
inputArgs.addAll(givenArgs);
@@ -197,6 +198,13 @@ protected List<String> preprocessArguments(List<String> givenArgs, Map<String, S
197198
unrecognized.add(arg);
198199
}
199200
break;
201+
case "-multi-context":
202+
if (wantsExperimental) {
203+
multiContext = true;
204+
} else {
205+
unrecognized.add(arg);
206+
}
207+
break;
200208
case "-dump":
201209
if (wantsExperimental) {
202210
subprocessArgs.add("Dgraal.Dump=");
@@ -374,6 +382,10 @@ protected void launch(Builder contextBuilder) {
374382
contextBuilder.option("python.TerminalWidth", Integer.toString(consoleHandler.getTerminalWidth()));
375383
contextBuilder.option("python.TerminalHeight", Integer.toString(consoleHandler.getTerminalHeight()));
376384

385+
if (multiContext) {
386+
contextBuilder.engine(Engine.create());
387+
}
388+
377389
int rc = 1;
378390
try (Context context = contextBuilder.build()) {
379391
runVersionAction(versionAction, context.getEngine());

mx.graalpython/mx_graalpython.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@
4343
from mx_gate import Task
4444
from mx_graalpython_bench_param import PATH_MESO, BENCHMARKS
4545
from mx_graalpython_benchmark import PythonBenchmarkSuite, python_vm_registry, CPythonVm, PyPyVm, GraalPythonVm, \
46-
CONFIGURATION_DEFAULT, CONFIG_EXPERIMENTAL_SPLITTING, CONFIGURATION_SANDBOXED, CONFIGURATION_NATIVE, CONFIGURATION_DUMP
46+
CONFIGURATION_DEFAULT, CONFIGURATION_SANDBOXED, CONFIGURATION_NATIVE, \
47+
CONFIGURATION_DEFAULT_MULTI, CONFIGURATION_SANDBOXED_MULTI, CONFIGURATION_NATIVE_MULTI
4748

4849
SUITE = mx.suite('graalpython')
4950
SUITE_COMPILER = mx.suite("compiler", fatalIfMissing=False)
@@ -993,18 +994,20 @@ def _register_vms(namespace):
993994

994995
# graalpython
995996
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_DEFAULT), SUITE, 10)
996-
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIG_EXPERIMENTAL_SPLITTING, extra_vm_args=[
997-
'-Dgraal.TruffleExperimentalSplitting=true',
998-
'-Dgraal.TruffleExperimentalSplittingAllowForcedSplits=false'
997+
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_DEFAULT_MULTI, extra_polyglot_args=[
998+
'--experimental-options', '-multi-context',
999999
]), SUITE, 10)
10001000
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_SANDBOXED, extra_polyglot_args=[
10011001
'--llvm.managed',
10021002
]), SUITE, 10)
10031003
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_NATIVE, extra_polyglot_args=[
10041004
"--llvm.managed=false"
10051005
]), SUITE, 10)
1006-
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_DUMP, extra_polyglot_args=[
1007-
"--experimental-options", "-dump"
1006+
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_SANDBOXED_MULTI, extra_polyglot_args=[
1007+
'--experimental-options', '-multi-context', '--llvm.managed',
1008+
]), SUITE, 10)
1009+
python_vm_registry.add_vm(GraalPythonVm(config_name=CONFIGURATION_NATIVE_MULTI, extra_polyglot_args=[
1010+
'--experimental-options', '-multi-context', '--llvm.managed=false',
10081011
]), SUITE, 10)
10091012

10101013

mx.graalpython/mx_graalpython_benchmark.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@
5555
SUBGROUP_GRAAL_PYTHON = "graalpython"
5656
PYTHON_VM_REGISTRY_NAME = "Python"
5757
CONFIGURATION_DEFAULT = "default"
58+
CONFIGURATION_DEFAULT_MULTI = "default-multi"
5859
CONFIGURATION_NATIVE = "native"
59-
CONFIG_EXPERIMENTAL_SPLITTING = "experimental_splitting"
60+
CONFIGURATION_NATIVE_MULTI = "native-multi"
6061
CONFIGURATION_SANDBOXED = "sandboxed"
61-
CONFIGURATION_DUMP = "dump"
62+
CONFIGURATION_SANDBOXED_MULTI = "sandboxed-multi"
6263

6364
DEFAULT_ITERATIONS = 10
6465

@@ -218,6 +219,8 @@ def run(self, cwd, args):
218219
dists += self._distributions
219220

220221
extra_polyglot_args = self._extra_polyglot_args if isinstance(self._extra_polyglot_args, list) else []
222+
if mx.suite("tools", fatalIfMissing=False):
223+
dists.append('CHROMEINSPECTOR')
221224
if mx.suite("sulong", fatalIfMissing=False):
222225
dists.append('SULONG')
223226
if mx.suite("sulong-managed", fatalIfMissing=False):
@@ -334,15 +337,27 @@ def run(self, benchmarks, bm_suite_args):
334337
def postprocess_run_args(self, run_args):
335338
parser = argparse.ArgumentParser(add_help=False)
336339
parser.add_argument("-i", default=None)
340+
parser.add_argument("--cpusampler", action="store_true")
341+
parser.add_argument("--memtracer", action="store_true")
342+
parser.add_argument("-dump", action="store_true")
337343
args, remaining = parser.parse_known_args(run_args)
344+
345+
vm_options = []
346+
if args.cpusampler:
347+
vm_options.append("--cpusampler")
348+
if args.memtracer:
349+
vm_options.append("--memtracer")
350+
if args.dump:
351+
vm_options.append("-dump")
352+
338353
if args.i:
339354
if args.i.isdigit():
340-
return ["-i", args.i] + remaining
355+
return vm_options, (["-i", args.i] + remaining)
341356
if args.i == "-1":
342-
return remaining
357+
return vm_options, remaining
343358
else:
344359
iterations = DEFAULT_ITERATIONS + self.getExtraIterationCount(DEFAULT_ITERATIONS)
345-
return ["-i", str(iterations)] + remaining
360+
return vm_options, (["-i", str(iterations)] + remaining)
346361

347362
def createVmCommandLineArgs(self, benchmarks, run_args):
348363
if not benchmarks or len(benchmarks) != 1:
@@ -369,9 +384,9 @@ def createVmCommandLineArgs(self, benchmarks, run_args):
369384

370385
if len(run_args) == 0:
371386
run_args = self._benchmarks[benchmark]
372-
run_args = self.postprocess_run_args(run_args)
387+
vm_options, run_args = self.postprocess_run_args(run_args)
373388
cmd_args.extend(run_args)
374-
return cmd_args
389+
return vm_options + cmd_args
375390

376391
def benchmarkList(self, bm_suite_args):
377392
return self._benchmarks.keys()

0 commit comments

Comments
 (0)