diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 55ccf35a..335d6726 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: test_som: - runs-on: ubuntu-20.04 # ubuntu-latest + runs-on: ubuntu-24.04 # ubuntu-latest strategy: fail-fast: false matrix: @@ -20,8 +20,8 @@ jobs: - name: Basics PyPy 2.7 python-version: pypy2.7 id: basic - - name: Basics Python 3.11 - python-version: 3.11 + - name: Basics Python 3.13 + python-version: 3.13 id: basic steps: @@ -38,7 +38,7 @@ jobs: - name: Download PyPy Sources if: matrix.id != 'basic' run: | - export PYPYVER=v7.3.16 + export PYPYVER=v7.3.18 curl https://downloads.python.org/pypy/pypy2.7-${PYPYVER}-src.tar.bz2 -o pypy.tar.bz2 tar -xjf pypy.tar.bz2 mv pypy2.7-${PYPYVER}-src .pypy diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e99ca162..1dcee6bf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ stages: variables: PYTHONUNBUFFERED: "true" - PYPY_RELEASE: "7.3.16" + PYPY_RELEASE: "7.3.18" before_script: - git submodule update --init @@ -23,6 +23,7 @@ build:aarch64-test-and-rebench: script: - export PATH=/opt/local/bin:/opt/local/sbin:/Users/gitlab-runner/Library/Python/3.12/bin:${PATH}:${PYPY_BIN_DIR} + - (cd Examples/Benchmarks/TestSuite && ./duplicate-tests.sh) # BC JIT Compiled Version - SOM_INTERP=BC $RPYTHON --batch -Ojit src/main_rpython.py @@ -44,14 +45,13 @@ build:aarch64-test-and-rebench: - ./som-ast-interp -cp Smalltalk TestSuite/TestHarness.som - ./som-ast-interp -cp Smalltalk:TestSuite Examples/Benchmarks/TestSuite/TestTestSuite.som - - (cd Examples/Benchmarks/TestSuite && ./duplicate-tests.sh) - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf build-and-test-interpreters: stage: build-test tags: [yuria] script: - - export PATH=$PATH:$PYPY_BIN_DIR + - export PATH=$PYPY_BIN_DIR:$PATH - export SOM_INTERP=BC - (cd Examples/Benchmarks/TestSuite && ./duplicate-tests.sh) @@ -90,7 +90,7 @@ build-and-test-jit-bc: stage: build-test tags: [yuria2] script: - - export PATH=$PATH:$PYPY_BIN_DIR + - export PATH=$PYPY_BIN_DIR:$PATH - export SOM_INTERP=BC # JIT Compiled Version @@ -112,7 +112,7 @@ build-and-test-jit-ast: stage: build-test tags: [yuria3] script: - - export PATH=$PATH:$PYPY_BIN_DIR + - export PATH=$PYPY_BIN_DIR:$PATH - export SOM_INTERP=AST # JIT Compiled Version @@ -147,7 +147,7 @@ benchmark-y1: - lz4 -d som-bc-interp.lz4 som-bc-interp # Run Benchmarks - - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf m:yuria + - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf t:yuria benchmark-y2: stage: benchmark @@ -166,7 +166,7 @@ benchmark-y2: - lz4 -d som-bc-interp.lz4 som-bc-interp # Run Benchmarks - - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf m:yuria2 + - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf t:yuria2 benchmark-y3: stage: benchmark @@ -185,7 +185,7 @@ benchmark-y3: - lz4 -d som-bc-interp.lz4 som-bc-interp # Run Benchmarks - - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf m:yuria3 + - rebench --experiment="CI ID $CI_PIPELINE_ID" --branch="$CI_COMMIT_REF_NAME" -c rebench.conf t:yuria3 report-completion: stage: benchmark-completion diff --git a/core-lib b/core-lib index 9c04914f..1daeec77 160000 --- a/core-lib +++ b/core-lib @@ -1 +1 @@ -Subproject commit 9c04914f800dc3ccbfaa1dc8fcf78cc5714549a4 +Subproject commit 1daeec77f16e0bf5ed119466fa91cf24e17b9cde diff --git a/rebench.conf b/rebench.conf index 85abb333..f68c743d 100644 --- a/rebench.conf +++ b/rebench.conf @@ -23,23 +23,23 @@ benchmark_suites: iterations: 1 invocations: 5 benchmarks: - - Richards: {extra_args: 1, machines: [yuria ]} - - DeltaBlue: {extra_args: 100, machines: [yuria2]} - - NBody: {extra_args: 1000, machines: [yuria3]} - - Json: {extra_args: 1, machines: [yuria ]} - - GraphSearch: {extra_args: 7, machines: [yuria2]} - - PageRank: {extra_args: 75, machines: [yuria3]} + - Richards: {extra_args: 1, tags: [yuria ]} + - DeltaBlue: {extra_args: 100, tags: [yuria2]} + - NBody: {extra_args: 1000, tags: [yuria3]} + - Json: {extra_args: 1, tags: [yuria ]} + - GraphSearch: {extra_args: 7, tags: [yuria2]} + - PageRank: {extra_args: 75, tags: [yuria3]} macro-steady: gauge_adapter: RebenchLog command: *MACRO_CMD benchmarks: - - Richards: {extra_args: 40, warmup: 30, iterations: 130, machines: [yuria ]} - - DeltaBlue: {extra_args: 10000, warmup: 20, iterations: 120, machines: [yuria2]} - - NBody: {extra_args: 200000, warmup: 20, iterations: 120, machines: [yuria3]} - - Json: {extra_args: 80, warmup: 20, iterations: 120, machines: [yuria ]} - - GraphSearch: {extra_args: 25, warmup: 100, iterations: 250, machines: [yuria2]} - - PageRank: {extra_args: 1000, warmup: 20, iterations: 120, machines: [yuria3]} + - Richards: {extra_args: 40, warmup: 30, iterations: 130, tags: [yuria ]} + - DeltaBlue: {extra_args: 10000, warmup: 20, iterations: 120, tags: [yuria2]} + - NBody: {extra_args: 200000, warmup: 20, iterations: 120, tags: [yuria3]} + - Json: {extra_args: 80, warmup: 20, iterations: 120, tags: [yuria ]} + - GraphSearch: {extra_args: 25, warmup: 100, iterations: 250, tags: [yuria2]} + - PageRank: {extra_args: 1000, warmup: 20, iterations: 120, tags: [yuria3]} awfy-startup: gauge_adapter: RebenchLog @@ -47,15 +47,15 @@ benchmark_suites: iterations: 1 invocations: 5 benchmarks: - - CD: {extra_args: 10, machines: [yuria2]} - - Havlak: {extra_args: 15, machines: [yuria3]} + - CD: {extra_args: 10, tags: [yuria2]} + - Havlak: {extra_args: 15, tags: [yuria3]} awfy-steady: gauge_adapter: RebenchLog command: *AWFY_CMD benchmarks: - - CD: {extra_args: 100, warmup: 30, iterations: 130, machines: [yuria2]} - - Havlak: {extra_args: 150, warmup: 30, iterations: 130, machines: [yuria3]} + - CD: {extra_args: 100, warmup: 30, iterations: 130, tags: [yuria2]} + - Havlak: {extra_args: 150, warmup: 30, iterations: 130, tags: [yuria3]} micro-startup: gauge_adapter: RebenchLog @@ -63,65 +63,67 @@ benchmark_suites: iterations: 1 invocations: 5 benchmarks: - - Fannkuch: {extra_args: 7, machines: [yuria ]} - - Fibonacci: {extra_args: 10, machines: [yuria2]} - - Dispatch: {extra_args: 10, machines: [yuria3]} - - Bounce: {extra_args: 10, machines: [yuria ]} - - Loop: {extra_args: 100, machines: [yuria2]} - - Permute: {extra_args: 10, machines: [yuria3]} - - Queens: {extra_args: 10, machines: [yuria ]} - - List: {extra_args: 2, machines: [yuria2]} - - Recurse: {extra_args: 12, machines: [yuria3]} - - Storage: {extra_args: 8, machines: [yuria ]} - - Sieve: {extra_args: 20, machines: [yuria2]} - - BubbleSort: {extra_args: 15, machines: [yuria3]} - - QuickSort: {extra_args: 15, machines: [yuria ]} - - Sum: {extra_args: 40, machines: [yuria2]} - - Towers: {extra_args: 2, machines: [yuria3]} - - TreeSort: {extra_args: 7, machines: [yuria ]} - - IntegerLoop: {extra_args: 7, machines: [yuria2]} - - FieldLoop: {extra_args: 1, machines: [yuria3]} - - WhileLoop: {extra_args: 30, machines: [yuria ]} - - Mandelbrot: {extra_args: 50, machines: [yuria2]} - - - Test: {invocations: 10, machines: [yuria ]} - - TestGC: {invocations: 10, extra_args: 10, machines: [yuria ]} + - Fannkuch: {extra_args: 7, tags: [yuria ]} + - Fibonacci: {extra_args: 10, tags: [yuria2]} + - Dispatch: {extra_args: 10, tags: [yuria3]} + - Bounce: {extra_args: 10, tags: [yuria ]} + - Loop: {extra_args: 100, tags: [yuria2]} + - Permute: {extra_args: 10, tags: [yuria3]} + - Queens: {extra_args: 10, tags: [yuria ]} + - List: {extra_args: 2, tags: [yuria2]} + - Recurse: {extra_args: 12, tags: [yuria3]} + - Storage: {extra_args: 8, tags: [yuria ]} + - Sieve: {extra_args: 20, tags: [yuria2]} + - BubbleSort: {extra_args: 15, tags: [yuria3]} + - QuickSort: {extra_args: 15, tags: [yuria ]} + - Sum: {extra_args: 40, tags: [yuria2]} + - Towers: {extra_args: 2, tags: [yuria3]} + - TreeSort: {extra_args: 7, tags: [yuria ]} + - IntegerLoop: {extra_args: 7, tags: [yuria2]} + - FieldLoop: {extra_args: 1, tags: [yuria3]} + - WhileLoop: {extra_args: 30, tags: [yuria ]} + - Mandelbrot: {extra_args: 50, tags: [yuria2]} + - IfNil: {extra_args: 80, tags: [yuria2]} + + - Test: {invocations: 10, tags: [yuria ]} + - TestGC: {invocations: 10, extra_args: 10, tags: [yuria ]} micro-steady: gauge_adapter: RebenchLog command: *MICRO_CMD benchmarks: - - Fannkuch: {extra_args: 9, warmup: 5, iterations: 55, machines: [yuria ]} - - Fibonacci: {extra_args: 1000, warmup: 10, iterations: 60, machines: [yuria ]} - - Dispatch: {extra_args: 10000, warmup: 5, iterations: 55, machines: [yuria3]} - - Bounce: {extra_args: 4000, warmup: 10, iterations: 60, machines: [yuria ]} - - Loop: {extra_args: 10000, warmup: 5, iterations: 55, machines: [yuria2]} - - Permute: {extra_args: 1500, warmup: 5, iterations: 55, machines: [yuria3]} - - Queens: {extra_args: 1000, warmup: 5, iterations: 55, machines: [yuria ]} - - List: {extra_args: 1000, warmup: 15, iterations: 65, machines: [yuria ]} - - Recurse: {extra_args: 2000, warmup: 15, iterations: 65, machines: [yuria ]} - - Storage: {extra_args: 1000, warmup: 10, iterations: 60, machines: [yuria ]} - - Sieve: {extra_args: 2500, warmup: 10, iterations: 60, machines: [yuria2]} - - BubbleSort: {extra_args: 3000, warmup: 5, iterations: 55, machines: [yuria3]} - - QuickSort: {extra_args: 2000, warmup: 5, iterations: 55, machines: [yuria ]} - - Sum: {extra_args: 10000, warmup: 5, iterations: 55, machines: [yuria2]} - - Towers: {extra_args: 1000, warmup: 5, iterations: 55, machines: [yuria3]} - - TreeSort: {extra_args: 1000, warmup: 10, iterations: 60, machines: [yuria ]} - - IntegerLoop: {extra_args: 8000, warmup: 5, iterations: 55, machines: [yuria2]} - - FieldLoop: {extra_args: 900, warmup: 5, iterations: 55, machines: [yuria3]} - - WhileLoop: {extra_args: 9000, warmup: 5, iterations: 55, machines: [yuria2]} - - Mandelbrot: {extra_args: 1000, warmup: 10, iterations: 110, machines: [yuria3]} + - Fannkuch: {extra_args: 9, warmup: 5, iterations: 55, tags: [yuria ]} + - Fibonacci: {extra_args: 1000, warmup: 10, iterations: 60, tags: [yuria ]} + - Dispatch: {extra_args: 10000, warmup: 5, iterations: 55, tags: [yuria3]} + - Bounce: {extra_args: 4000, warmup: 10, iterations: 60, tags: [yuria ]} + - Loop: {extra_args: 10000, warmup: 5, iterations: 55, tags: [yuria2]} + - Permute: {extra_args: 1500, warmup: 5, iterations: 55, tags: [yuria3]} + - Queens: {extra_args: 1000, warmup: 5, iterations: 55, tags: [yuria ]} + - List: {extra_args: 1000, warmup: 15, iterations: 65, tags: [yuria ]} + - Recurse: {extra_args: 2000, warmup: 15, iterations: 65, tags: [yuria ]} + - Storage: {extra_args: 1000, warmup: 10, iterations: 60, tags: [yuria ]} + - Sieve: {extra_args: 2500, warmup: 10, iterations: 60, tags: [yuria2]} + - BubbleSort: {extra_args: 3000, warmup: 5, iterations: 55, tags: [yuria3]} + - QuickSort: {extra_args: 2000, warmup: 5, iterations: 55, tags: [yuria ]} + - Sum: {extra_args: 10000, warmup: 5, iterations: 55, tags: [yuria2]} + - Towers: {extra_args: 1000, warmup: 5, iterations: 55, tags: [yuria3]} + - TreeSort: {extra_args: 1000, warmup: 10, iterations: 60, tags: [yuria ]} + - IntegerLoop: {extra_args: 8000, warmup: 5, iterations: 55, tags: [yuria2]} + - FieldLoop: {extra_args: 900, warmup: 5, iterations: 55, tags: [yuria3]} + - WhileLoop: {extra_args: 9000, warmup: 5, iterations: 55, tags: [yuria2]} + - Mandelbrot: {extra_args: 1000, warmup: 10, iterations: 110, tags: [yuria3]} + - IfNil: {extra_args: 5000, warmup: 10, iterations: 110, tags: [yuria3]} micro-somsom: gauge_adapter: RebenchLog command: "-cp Smalltalk:Examples/Benchmarks/LanguageFeatures Examples/Benchmarks/BenchmarkHarness.som --gc %(benchmark)s %(iterations)s " iterations: 1 benchmarks: - - Loop: {extra_args: 1, machines: [yuria3]} - - Queens: {extra_args: 1, machines: [yuria ]} - - List: {extra_args: 1, machines: [yuria2]} - - Recurse: {extra_args: 1, machines: [yuria3]} - - Mandelbrot: {extra_args: 3, machines: [yuria ]} + - Loop: {extra_args: 1, tags: [yuria3]} + - Queens: {extra_args: 1, tags: [yuria ]} + - List: {extra_args: 1, tags: [yuria2]} + - Recurse: {extra_args: 1, tags: [yuria3]} + - Mandelbrot: {extra_args: 3, tags: [yuria ]} som-parse: gauge_adapter: RebenchLog @@ -129,8 +131,8 @@ benchmark_suites: iterations: 1! invocations: 10 benchmarks: - - SomParse: {extra_args: 1, machines: [yuria2]} - - SomInit: {extra_args: 10000, machines: [yuria2]} + - SomParse: {extra_args: 1, tags: [yuria2]} + - SomInit: {extra_args: 10000, tags: [yuria2]} interpreter: description: Basic interpreter benchmarks for comparing performance of most basic concepts. @@ -138,22 +140,22 @@ benchmark_suites: invocations: 5 command: "-cp Smalltalk:Examples/Benchmarks/Interpreter Examples/Benchmarks/BenchmarkHarness.som %(benchmark)s %(iterations)s 1" benchmarks: - - ArgRead: {machines: [yuria ]} - - ArrayReadConst: {machines: [yuria ]} - - ArrayWriteConstConst: {machines: [yuria ]} - - BlockSend0ConstReturn: {machines: [yuria ]} - - Const: {machines: [yuria ]} - - FieldConstWrite: {machines: [yuria ]} - - FieldRead: {machines: [yuria ]} - - FieldReadIncWrite: {machines: [yuria ]} - - FieldReadWrite: {machines: [yuria ]} - - GlobalRead: {machines: [yuria ]} - - LocalConstWrite: {machines: [yuria ]} - - LocalRead: {machines: [yuria ]} - - LocalReadIncWrite: {machines: [yuria ]} - - LocalReadWrite: {machines: [yuria ]} - - SelfSend0: {machines: [yuria ]} - - SelfSend0BlockConstNonLocalReturn: {machines: [yuria ]} + - ArgRead: {tags: [yuria ]} + - ArrayReadConst: {tags: [yuria ]} + - ArrayWriteConstConst: {tags: [yuria ]} + - BlockSend0ConstReturn: {tags: [yuria ]} + - Const: {tags: [yuria ]} + - FieldConstWrite: {tags: [yuria ]} + - FieldRead: {tags: [yuria ]} + - FieldReadIncWrite: {tags: [yuria ]} + - FieldReadWrite: {tags: [yuria ]} + - GlobalRead: {tags: [yuria ]} + - LocalConstWrite: {tags: [yuria ]} + - LocalRead: {tags: [yuria ]} + - LocalReadIncWrite: {tags: [yuria ]} + - LocalReadWrite: {tags: [yuria ]} + - SelfSend0: {tags: [yuria ]} + - SelfSend0BlockConstNonLocalReturn: {tags: [yuria ]} executors: RPySOM-ast-interp: