[前][次][番号順一覧][スレッド一覧]

ruby-changes:73619

From: Takashi <ko1@a...>
Date: Tue, 20 Sep 2022 06:08:05 +0900 (JST)
Subject: [ruby-changes:73619] f8dad616c2 (master): YJIT: Show --yjit-stats of railsbench on CI (#6403)

https://git.ruby-lang.org/ruby.git/commit/?id=f8dad616c2

From f8dad616c2ee2d83b3162da8d86865b0f2a782de Mon Sep 17 00:00:00 2001
From: Takashi Kokubun <takashikkbn@g...>
Date: Tue, 20 Sep 2022 06:07:28 +0900
Subject: YJIT: Show --yjit-stats of railsbench on CI (#6403)

* YJIT: Show --yjit-stats of railsbench on CI

* YJIT: Use --enable-yjit=dev to see ratio_in_yjit

* YJIT: Show master GitHub URL for quick comparison

* YJIT: Avoid making CI red by a yjit-bench failure
---
 .github/workflows/yjit-ubuntu.yml | 18 ++++++++++++++++--
 .gitignore                        |  3 +++
 yjit/yjit.mk                      | 13 +++++++++++++
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/yjit-ubuntu.yml b/.github/workflows/yjit-ubuntu.yml
index bf90b80efb..3c0d5c046c 100644
--- a/.github/workflows/yjit-ubuntu.yml
+++ b/.github/workflows/yjit-ubuntu.yml
@@ -59,10 +59,16 @@ jobs: https://github.com/ruby/ruby/blob/trunk/.github/workflows/yjit-ubuntu.yml#L59
 
           - test_task: "test-bundled-gems"
             configure: "--enable-yjit=dev"
+
+          - test_task: "yjit-bench"
+            configure: "--enable-yjit=dev"
+            yjit_bench_opts: "--yjit-stats"
     env:
       GITPULLOPTIONS: --no-tags origin ${{github.ref}}
       RUN_OPTS: ${{ matrix.yjit_opts }}
+      YJIT_BENCH_OPTS: ${{ matrix.yjit_bench_opts }}
       RUBY_DEBUG: ci
+      BUNDLE_JOBS: 8 # for yjit-bench
     runs-on: ubuntu-20.04
     if: ${{ !contains(github.event.head_commit.message, '[DOC]') && !contains(github.event.pull_request.labels.*.name, 'Documentation') }}
     steps:
@@ -98,7 +104,7 @@ jobs: https://github.com/ruby/ruby/blob/trunk/.github/workflows/yjit-ubuntu.yml#L104
       - run: ./autogen.sh
         working-directory: src
       - name: Run configure
-        run: ../src/configure -C --disable-install-doc ${{ matrix.configure }}
+        run: ../src/configure -C --disable-install-doc --prefix=$(pwd)/install ${{ matrix.configure }}
       - run: make incs
       - run: make prepare-gems
         if: ${{ matrix.test_task == 'test-bundled-gems' }}
@@ -111,12 +117,20 @@ jobs: https://github.com/ruby/ruby/blob/trunk/.github/workflows/yjit-ubuntu.yml#L117
         if: ${{ matrix.test_task == 'check' }}
       - name: Enable YJIT through ENV
         run: echo "RUBY_YJIT_ENABLE=1" >> $GITHUB_ENV
-      - run: make -s ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS"
+      - name: make ${{ matrix.test_task }}
+        run: make -s -j ${{ matrix.test_task }} RUN_OPTS="$RUN_OPTS" YJIT_BENCH_OPTS="$YJIT_BENCH_OPTS"
         timeout-minutes: 60
         env:
           RUBY_TESTOPTS: "-q --tty=no"
           TEST_BUNDLED_GEMS_ALLOW_FAILURES: ""
           PRECHECK_BUNDLED_GEMS: "no"
+        continue-on-error: ${{ matrix.test_task == 'yjit-bench' }}
+      - name: Show ${{ github.event.pull_request.base.ref }} GitHub URL for yjit-bench comparison
+        run: echo "https://github.com/${BASE_REPO}/commit/${BASE_SHA}"
+        env:
+          BASE_REPO: ${{ github.event.pull_request.base.repo.full_name }}
+          BASE_SHA: ${{ github.event.pull_request.base.sha }}
+        if: ${{ matrix.test_task == 'yjit-bench' && startsWith(github.event_name, 'pull') }}
       - uses: k0kubun/action-slack@v...
         with:
           payload: |
diff --git a/.gitignore b/.gitignore
index 73012bb3ed..c15b68f676 100644
--- a/.gitignore
+++ b/.gitignore
@@ -238,5 +238,8 @@ lcov*.info https://github.com/ruby/ruby/blob/trunk/.gitignore#L238
 /include/ruby-*/*/rb_mjit_min_header-*.h
 /lib/mjit/instruction.rb
 
+# YJIT
+/yjit-bench
+
 # /wasm/
 /wasm/tests/*.wasm
diff --git a/yjit/yjit.mk b/yjit/yjit.mk
index 81441a7925..fe182b3dcc 100644
--- a/yjit/yjit.mk
+++ b/yjit/yjit.mk
@@ -51,6 +51,19 @@ endif https://github.com/ruby/ruby/blob/trunk/yjit/yjit.mk#L51
 # TODO: might need to move for BSD Make support
 miniruby$(EXEEXT): $(YJIT_LIBS)
 
+# By using YJIT_BENCH_OPTS instead of RUN_OPTS, you can skip passing the options to `make install`
+YJIT_BENCH_OPTS = $(RUN_OPTS) --enable-gems
+YJIT_BENCH = benchmarks/railsbench/benchmark.rb
+
+# Run yjit-bench's ./run_once.sh for CI
+yjit-bench: install update-yjit-bench PHONY
+	$(Q) cd $(srcdir)/yjit-bench && PATH=$(prefix)/bin:$$PATH \
+		./run_once.sh $(YJIT_BENCH_OPTS) $(YJIT_BENCH)
+
+update-yjit-bench:
+	$(Q) $(tooldir)/git-refresh -C $(srcdir) --branch main \
+		https://github.com/Shopify/yjit-bench yjit-bench $(GIT_OPTS)
+
 # Generate Rust bindings. See source for details.
 # Needs `./configure --enable-yjit=dev` and Clang.
 ifneq ($(strip $(CARGO)),) # if configure found Cargo
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]