Project

General

Profile

Actions

Feature #18349

closed

Let --jit enable YJIT on supported platforms

Added by k0kubun (Takashi Kokubun) 11 months ago. Updated 10 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:106173]

Description

Proposal

  • Rename the current --jit to --mjit, as well as reverting [Feature #17490]
  • Let --jit mean --yjit on YJIT-supported platforms, and --mjit on other platforms.

Use case

YJIT currently achieves better performance than MJIT in many benchmarks, which means users should choose YJIT over MJIT with Ruby 3.1 in many cases. Even in benchmarks where MJIT could perform well, you need to spend a lot of time to finish warmup and tune MJIT carefully to see the peak performance.

However, it's hard for many people, not including heavy users like you reading this, to understand which JIT variant they should try and/or use MJIT properly. Assuming x86 is prevalent enough, I want to make YJIT the default JIT so that non-heavy users will be able to see the benefit of JIT earlier.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #17490: Rename RubyVM::MJIT to RubyVM::JITClosedActions
Actions #1

Updated by k0kubun (Takashi Kokubun) 11 months ago

  • Description updated (diff)

Updated by nobu (Nobuyoshi Nakada) 10 months ago

YJIT supports only limited platforms, --jit should mean --mjit on such platforms.

Updated by k0kubun (Takashi Kokubun) 10 months ago

  • Subject changed from Let --jit enable YJIT to Let --jit enable YJIT on supported platforms
  • Description updated (diff)

YJIT supports only limited platforms, --jit should mean --mjit on such platforms.

That sounds reasonable. I updated my proposal.

Updated by maximecb (Maxime Chevalier-Boisvert) 10 months ago

I think this is a good idea. I am assuming that --jit will remain not enabled by default (which is good).

Updated by k0kubun (Takashi Kokubun) 10 months ago

Right, I intend to keep --jit disabled by default in the scope of this ticket.

Updated by matz (Yukihiro Matsumoto) 10 months ago

I agreed with the proposal, including making mjit as a fallback.

Matz.

Updated by hsbt (Hiroshi SHIBATA) 10 months ago

Will --yjit option remain? I prefer the following behaviors.

  • --jit means the best strategy of Ruby JIT selected by Ruby core.
  • If users hope to enforce JIT strategy, They can choose --yjit or --mjit in the future.

I'm not sure the current proposal is above behavior.

Updated by k0kubun (Takashi Kokubun) 10 months ago

Will --yjit option remain? I prefer the following behaviors.

  • --jit means the best strategy of Ruby JIT selected by Ruby core.
  • If users hope to enforce JIT strategy, They can choose --yjit or --mjit in the future.

I'm not sure the current proposal is above behavior.

I think it's the same as what's proposed here. --jit is to automatically choose our latest recommendation, but both --mjit and --yjit would be still useful for two use cases:

  • Override the recommendation (i.e. using MJIT on x86)
  • Explicitly specify JIT when the same benchmark script could be run on multiple platforms, e.g. Mac laptops of x86 or Arm.
Actions #9

Updated by k0kubun (Takashi Kokubun) 10 months ago

  • Status changed from Open to Closed

Applied in changeset git|11b8aaa26a22bb67b144484af6890844771b5f46.


Rename --jit to --mjit (#5248)

  • Rename --jit to --mjit

[Feature #18349]

  • Fix a few more --jit references

  • Fix MJIT Actions

  • More s/jit/mjit/ and re-introduce --disable-jit

  • Update NEWS.md

  • Fix test_bug_reporter_add

Actions #10

Updated by k0kubun (Takashi Kokubun) 9 months ago

Actions

Also available in: Atom PDF