示例#1
0
def register_graalvm_vms():
    default_host_vm_name = mx_sdk_vm_impl.graalvm_dist_name().lower().replace('_', '-')
    host_vm_names = ([default_host_vm_name.replace('-java8', '')] if '-java8' in default_host_vm_name else []) + [default_host_vm_name]
    for host_vm_name in host_vm_names:
        for config_name, java_args, launcher_args, priority in mx_sdk_vm.get_graalvm_hostvm_configs():
            mx_benchmark.java_vm_registry.add_vm(GraalVm(host_vm_name, config_name, java_args, launcher_args), _suite, priority)
        if mx_sdk_vm_impl.has_component('svm'):
            _native_image_vm_registry.add_vm(NativeImageBuildVm(host_vm_name, 'default', [], []), _suite, 10)
            _gu_vm_registry.add_vm(GuVm(host_vm_name, 'default', [], []), _suite, 10)

    # We support only EE and CE configuration for native-image benchmarks
    for short_name, config_suffix in [('niee', 'ee'), ('ni', 'ce')]:
        if any(component.short_name == short_name for component in mx_sdk_vm_impl.registered_graalvm_components(stage1=False)):
            mx_benchmark.add_java_vm(NativeImageVM('native-image', 'default-' + config_suffix, None, None, 0, False, False, False), _suite, 10)
            mx_benchmark.add_java_vm(NativeImageVM('native-image', 'llvm-' + config_suffix, None, None, 0, False, False, False, True), _suite, 10)
            break

    # Add VMs for libgraal
    if mx_sdk_vm_impl.has_component('LibGraal'):
        libgraal_location = mx_sdk_vm_impl.get_native_image_locations('LibGraal', 'jvmcicompiler')
        if libgraal_location is not None:
            import mx_graal_benchmark
            mx_graal_benchmark.build_jvmci_vm_variants('server', 'graal-core-libgraal',
                                                       ['-server', '-XX:+EnableJVMCI', '-Dgraal.CompilerConfiguration=community', '-Djvmci.Compiler=graal', '-XX:+UseJVMCINativeLibrary', '-XX:JVMCILibPath=' + dirname(libgraal_location)],
                                                       mx_graal_benchmark._graal_variants, suite=_suite, priority=15, hosted=False)
示例#2
0
def build_jvmci_vm_variants(raw_name,
                            raw_config_name,
                            extra_args,
                            variants,
                            include_default=True,
                            suite=None,
                            priority=0,
                            hosted=True):
    prefixes = [('', ['-XX:+UseJVMCICompiler'])]
    if hosted:
        prefixes.append(('hosted-', ['-XX:-UseJVMCICompiler']))
    for prefix, args in prefixes:
        extended_raw_config_name = prefix + raw_config_name
        extended_extra_args = extra_args + args
        if include_default:
            mx_benchmark.add_java_vm(
                JvmciJdkVm(raw_name, extended_raw_config_name,
                           extended_extra_args), suite, priority)
        for variant in variants:
            if len(variant) == 2:
                var_name, var_args = variant
                var_priority = priority
            else:
                var_name, var_args, var_priority = variant
            mx_benchmark.add_java_vm(
                JvmciJdkVm(raw_name, extended_raw_config_name + '-' + var_name,
                           extended_extra_args + var_args), suite,
                var_priority)
示例#3
0
def build_jvmci_vm_variants(raw_name, raw_config_name, extra_args, variants, include_default=True, suite=None, priority=0, hosted=True):
    prefixes = [('', ['-XX:+UseJVMCICompiler'])]
    if hosted:
        prefixes.append(('hosted-', ['-XX:-UseJVMCICompiler']))
    for prefix, args in prefixes:
        extended_raw_config_name = prefix + raw_config_name
        extended_extra_args = extra_args + args
        if include_default:
            mx_benchmark.add_java_vm(
                JvmciJdkVm(raw_name, extended_raw_config_name, extended_extra_args), suite, priority)
        for variant in variants:
            compiler_config = None
            if len(variant) == 2:
                var_name, var_args = variant
                var_priority = priority
            elif len(variant) == 3:
                var_name, var_args, var_priority = variant
            elif len(variant) == 4:
                var_name, var_args, var_priority, compiler_config = variant
            else:
                raise TypeError("unexpected tuple size for jvmci variant {} (size must be <= 4)".format(variant))

            variant_args = extended_extra_args + var_args
            if compiler_config is not None:
                variant_args = add_or_replace_arg('-Dgraal.CompilerConfiguration', compiler_config, variant_args)

            mx_benchmark.add_java_vm(
                JvmciJdkVm(raw_name, extended_raw_config_name + '-' + var_name, variant_args), suite, var_priority)
def build_jvmci_vm_variants(raw_name, raw_config_name, extra_args, variants, include_default=True, suite=None, priority=0):
    if include_default:
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name, extra_args), suite, priority)
    for variant in variants:
        if len(variant) == 2:
            var_name, var_args = variant
            var_priority = priority
        else:
            var_name, var_args, var_priority = variant
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name + '-' + var_name, extra_args + var_args), suite, var_priority)
示例#5
0
def build_jvmci_vm_variants(raw_name,
                            raw_config_name,
                            extra_args,
                            variants,
                            include_default=True):
    if include_default:
        mx_benchmark.add_java_vm(
            JvmciJdkVm(raw_name, raw_config_name, extra_args))
    for (var_name, var_args) in variants:
        mx_benchmark.add_java_vm(
            JvmciJdkVm(raw_name, raw_config_name + '-' + var_name,
                       extra_args + var_args))
示例#6
0
def _asv_benchmark(args):
    """Run asv benchmark suite."""

    mxASVBenchmarkArgs, bmSuiteArgs = mx_benchmark.splitArgs(args, "--")
    if not _mx_graal and not mx_benchmark.java_vm_registry._vms:
        mx_benchmark.add_java_vm(mx_benchmark.DefaultJavaVm("server", "default"))

    if not bmSuiteArgs:
        if _mx_graal:
            bmSuiteArgs = ['--jvm-config', 'graal-core', '--jvm', 'server']
        else:
            bmSuiteArgs = ['--jvm-config', 'default', '--jvm', 'server']

    return _asv_benchmark_executor.asv_benchmark(mxASVBenchmarkArgs, bmSuiteArgs)
示例#7
0
def register_graalvm_vms():
    graalvm_hostvm_name = mx_vm.graalvm_dist_name().lower().replace('_', '-')
    for config_name, java_args, launcher_args, priority in mx_sdk.graalvm_hostvm_configs:
        mx_benchmark.java_vm_registry.add_vm(
            GraalVm(graalvm_hostvm_name, config_name, java_args,
                    launcher_args), _suite, priority)
    if mx_vm.has_component('svm', fatalIfMissing=False):
        _native_image_vm_registry.add_vm(
            NativeImageBuildVm(graalvm_hostvm_name, 'default', [], []), _suite,
            10)
        _gu_vm_registry.add_vm(GuVm(graalvm_hostvm_name, 'default', [], []),
                               _suite, 10)

        mx_benchmark.add_java_vm(
            NativeImageVM('native-image', 'default', None, None, 0, False),
            _suite, 10)
        mx_benchmark.add_java_vm(
            NativeImageVM('native-image', 'pgo', None, None, 1, False), _suite,
            10)
        mx_benchmark.add_java_vm(
            NativeImageVM('native-image', 'pgo-hotspot', None, None, 0, True),
            _suite, 10)

# Add VMs for libgraal
    if mx_vm.has_component('LibGraal', fatalIfMissing=False):
        libgraal_location = mx_vm.get_native_image_locations(
            'LibGraal', 'jvmcicompiler')
        if libgraal_location is not None:
            import mx_graal_benchmark
            mx_graal_benchmark.build_jvmci_vm_variants(
                'server',
                'graal-core-libgraal', [
                    '-server', '-XX:+EnableJVMCI',
                    '-Dgraal.CompilerConfiguration=community',
                    '-Djvmci.Compiler=graal', '-XX:+UseJVMCINativeLibrary',
                    '-XX:JVMCILibPath=' + dirname(libgraal_location)
                ],
                mx_graal_benchmark._graal_variants,
                suite=_suite,
                priority=15,
                hosted=False)
            "guest-vm-config": "none"
        }

    def post_process_command_line_args(self, args):
        return self.extra_args + args

    def run_java(self, args, out=None, err=None, cwd=None, nonZeroIsFatal=False):
        tag = mx.get_jdk_option().tag
        if tag and tag != mx_graal_core._JVMCI_JDK_TAG:
            mx.abort("The '{0}/{1}' VM requires '--jdk={2}'".format(
                self.name(), self.config_name(), mx_graal_core._JVMCI_JDK_TAG))
        mx.get_jdk(tag=mx_graal_core._JVMCI_JDK_TAG).run_java(
            args, out=out, err=out, cwd=cwd, nonZeroIsFatal=False)


mx_benchmark.add_java_vm(JvmciJdkVm('server', 'default', ['-server', '-XX:-EnableJVMCI']))
mx_benchmark.add_java_vm(JvmciJdkVm('client', 'default', ['-client', '-XX:-EnableJVMCI']))
mx_benchmark.add_java_vm(JvmciJdkVm('server', 'hosted', ['-server', '-XX:+EnableJVMCI']))
mx_benchmark.add_java_vm(JvmciJdkVm('client', 'hosted', ['-client', '-XX:+EnableJVMCI']))
mx_benchmark.add_java_vm(JvmciJdkVm('server', 'graal-core', ['-server', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler', '-Djvmci.Compiler=graal']))
mx_benchmark.add_java_vm(JvmciJdkVm('server', 'graal-core-tracera', ['-server', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler', '-Djvmci.Compiler=graal',
                                                             '-Dgraal.TraceRA=true']))


class TimingBenchmarkMixin(object):
    debug_values_file = 'debug-values.csv'
    name_re = re.compile(r"(?P<name>GraalCompiler|BackEnd|FrontEnd|LIRPhaseTime_\w+)_Accm")

    def vmArgs(self, bmSuiteArgs):
        vmArgs = ['-Dgraal.Time=GraalCompiler,BackEnd,FrontEnd', '-Dgraal.DebugValueHumanReadable=false', '-Dgraal.DebugValueSummary=Complete',
                  '-Dgraal.DebugValueFile=' + TimingBenchmarkMixin.debug_values_file] + super(TimingBenchmarkMixin, self).vmArgs(bmSuiteArgs)
    def config_name(self):
        return self.raw_config_name

    def post_process_command_line_args(self, args):
        return self.extra_args + args

    def run_java(self, args, out=None, err=None, cwd=None, nonZeroIsFatal=False):
        tag = mx.get_jdk_option().tag
        if tag and tag != mx_graal_core._JVMCI_JDK_TAG:
            mx.abort("The '{0}/{1}' VM requires '--jdk={2}'".format(
                self.name(), self.config_name(), mx_graal_core._JVMCI_JDK_TAG))
        mx.get_jdk(tag=mx_graal_core._JVMCI_JDK_TAG).run_java(
            args, out=out, err=out, cwd=cwd, nonZeroIsFatal=False)


mx_benchmark.add_java_vm(JvmciJdkVm('server', 'default', ['-server', '-XX:-EnableJVMCI']), _suite, 2)
mx_benchmark.add_java_vm(JvmciJdkVm('server', 'hosted', ['-server', '-XX:+EnableJVMCI']), _suite, 3)


def build_jvmci_vm_variants(raw_name, raw_config_name, extra_args, variants, include_default=True, suite=None, priority=0):
    if include_default:
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name, extra_args), suite, priority)
    for variant in variants:
        if len(variant) == 2:
            var_name, var_args = variant
            var_priority = priority
        else:
            var_name, var_args, var_priority = variant
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name + '-' + var_name, extra_args + var_args), suite, var_priority)

_graal_variants = [
def build_jvmci_vm_variants(raw_name, raw_config_name, extra_args, variants, include_default=True):
    if include_default:
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name, extra_args))
    for (var_name, var_args) in variants:
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name + '-' + var_name, extra_args + var_args))
            "guest-vm-config": "none"
        }

    def post_process_command_line_args(self, args):
        return self.extra_args + args

    def run_java(self, args, out=None, err=None, cwd=None, nonZeroIsFatal=False):
        tag = mx.get_jdk_option().tag
        if tag and tag != mx_graal_core._JVMCI_JDK_TAG:
            mx.abort("The '{0}/{1}' VM requires '--jdk={2}'".format(
                self.name(), self.config_name(), mx_graal_core._JVMCI_JDK_TAG))
        mx.get_jdk(tag=mx_graal_core._JVMCI_JDK_TAG).run_java(
            args, out=out, err=out, cwd=cwd, nonZeroIsFatal=False)


mx_benchmark.add_java_vm(JvmciJdkVm('server', 'default', ['-server', '-XX:-EnableJVMCI']))
mx_benchmark.add_java_vm(JvmciJdkVm('server', 'hosted', ['-server', '-XX:+EnableJVMCI']))

def build_jvmci_vm_variants(raw_name, raw_config_name, extra_args, variants, include_default=True):
    if include_default:
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name, extra_args))
    for (var_name, var_args) in variants:
        mx_benchmark.add_java_vm(JvmciJdkVm(raw_name, raw_config_name + '-' + var_name, extra_args + var_args))

_graal_variants = [
    ('tracera', ['-Dgraal.TraceRA=true']),
]
build_jvmci_vm_variants('server', 'graal-core', ['-server', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler', '-Djvmci.Compiler=graal'], _graal_variants)

# On 64 bit systems -client is not supported. Nevertheless, when running with -server, we can
# force the VM to just compile code with C1 but not with C2 by adding option -XX:TieredStopAtLevel=1.
示例#12
0
    def run_java(self,
                 args,
                 out=None,
                 err=None,
                 cwd=None,
                 nonZeroIsFatal=False):
        tag = mx.get_jdk_option().tag
        if tag and tag != mx_graal_core._JVMCI_JDK_TAG:
            mx.abort("The '{0}/{1}' VM requires '--jdk={2}'".format(
                self.name(), self.config_name(), mx_graal_core._JVMCI_JDK_TAG))
        mx.get_jdk(tag=mx_graal_core._JVMCI_JDK_TAG).run_java(
            args, out=out, err=out, cwd=cwd, nonZeroIsFatal=False)


mx_benchmark.add_java_vm(
    JvmciJdkVm('server', 'default', ['-server', '-XX:-EnableJVMCI']))
mx_benchmark.add_java_vm(
    JvmciJdkVm('server', 'hosted', ['-server', '-XX:+EnableJVMCI']))

mx_benchmark.add_java_vm(
    JvmciJdkVm('server', 'graal-core', [
        '-server', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler',
        '-Djvmci.Compiler=graal'
    ]))
mx_benchmark.add_java_vm(
    JvmciJdkVm('server', 'graal-core-tracera', [
        '-server', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler',
        '-Djvmci.Compiler=graal', '-Dgraal.TraceRA=true'
    ]))

# On 64 bit systems -client is not supported. Nevertheless, when running with -server, we can
示例#13
0
                                       mx.exe_suffix(benchmark))
            os.chmod(binary_path, stat.S_IRUSR | stat.S_IXUSR)
            cmd_line = [binary_path]
            mx.log("Running benchmark " + benchmark + " natively.")
            mx.run(cmd_line,
                   cwd=tmp_dir,
                   out=out,
                   err=err,
                   nonZeroIsFatal=nonZeroIsFatal)
        finally:
            if tmp_dir:
                shutil.rmtree(tmp_dir)
        return 0


add_java_vm(NodeWasmBenchmarkVm(), suite=_suite, priority=1)
add_java_vm(NativeWasmBenchmarkVm(), suite=_suite, priority=1)


class WasmJMHJsonRule(mx_benchmark.JMHJsonRule):
    def getBenchmarkNameFromResult(self, result):
        name_flag = "-Dwasmbench.benchmarkName="
        name_arg = next(arg for arg in result["jvmArgs"]
                        if arg.startswith(name_flag))
        return name_arg[len(name_flag):]


class WasmBenchmarkSuite(JMHDistBenchmarkSuite):
    def name(self):
        return "wasm"
示例#14
0
    def run_java(self,
                 args,
                 out=None,
                 err=None,
                 cwd=None,
                 nonZeroIsFatal=False):
        tag = mx.get_jdk_option().tag
        if tag and tag != mx_graal_core._JVMCI_JDK_TAG:
            mx.abort("The '{0}/{1}' VM requires '--jdk={2}'".format(
                self.name(), self.config_name(), mx_graal_core._JVMCI_JDK_TAG))
        mx.get_jdk(tag=mx_graal_core._JVMCI_JDK_TAG).run_java(
            args, out=out, err=out, cwd=cwd, nonZeroIsFatal=False)


mx_benchmark.add_java_vm(
    JvmciJdkVm('server', 'default', ['-server', '-XX:-EnableJVMCI']))
mx_benchmark.add_java_vm(
    JvmciJdkVm('server', 'hosted', ['-server', '-XX:+EnableJVMCI']))


def build_jvmci_vm_variants(raw_name,
                            raw_config_name,
                            extra_args,
                            variants,
                            include_default=True):
    if include_default:
        mx_benchmark.add_java_vm(
            JvmciJdkVm(raw_name, raw_config_name, extra_args))
    for (var_name, var_args) in variants:
        mx_benchmark.add_java_vm(
            JvmciJdkVm(raw_name, raw_config_name + '-' + var_name,