From 5c30611db60e0d03e31e1c6d298f11e5fbca4faf Mon Sep 17 00:00:00 2001 From: nemo Date: Mon, 30 Sep 2024 15:40:54 -0400 Subject: [PATCH 1/7] feat: start converting some CI to self-hosted --- .github/workflows/ci.yml | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a05d77bb9..904afeb51 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,17 +17,15 @@ env: jobs: check_clippy: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Clippy steps: - uses: actions/checkout@v4 - - name: Install required packages - run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev - name: Run cargo clippy run: cargo clippy --all-targets --workspace -- -D warnings check_fmt: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Checking fmt steps: - uses: actions/checkout@v4 @@ -35,7 +33,7 @@ jobs: run: cargo fmt --all -- --check test_release: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Test in release mode strategy: matrix: @@ -44,15 +42,6 @@ jobs: # Run all tests with multicore-SDR enabled. FIL_PROOFS_USE_MULTICORE_SDR: true steps: - - uses: actions/checkout@v4 - - name: Install required packages - run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev - - - name: Download the proof params - uses: ./.github/actions/proof-params-download - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Run usual tests in release profile run: cargo test --verbose --release --workspace --all-targets ${{ matrix.cargo-args }} -- --nocapture - name: Run isolated PoRep tests in release profile From b1b00f3104342ad2245bd6c7a1cb4c73b98532b1 Mon Sep 17 00:00:00 2001 From: nemo Date: Mon, 30 Sep 2024 15:59:08 -0400 Subject: [PATCH 2/7] feat: attempt to convert remaining tests to self-hosted --- .github/workflows/ci.yml | 77 ++++++++++++---------------------------- 1 file changed, 22 insertions(+), 55 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 904afeb51..363d9e66c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,85 +45,52 @@ jobs: - name: Run usual tests in release profile run: cargo test --verbose --release --workspace --all-targets ${{ matrix.cargo-args }} -- --nocapture - name: Run isolated PoRep tests in release profile - # Getting the cores does not work on GitHub Actions, hence skip that - # specific test. - run: cargo test --release -p storage-proofs-porep --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture --skip stacked::vanilla::cores::tests::test_checkout_cores + run: cargo test --release -p storage-proofs-porep --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture - name: Run isolated update tests in release profile - # Some `storage-proofs-update` tests need to run sequentially due to - # their high memory usage. - run: cargo test --release -p storage-proofs-update --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture --test-threads=1 + run: cargo test --release -p storage-proofs-update --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture test_ignored_release: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Test ignored in release mode steps: - - uses: actions/checkout@v4 - - name: Install required packages - run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev - - - name: Download the proof params - uses: ./.github/actions/proof-params-download - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Test ignored in release profile run: cargo test --release --workspace -- ignored --nocapture test_no_default_features: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Test without default features steps: - uses: actions/checkout@v4 - - name: Install required packages - run: sudo apt install --no-install-recommends --yes libhwloc-dev ocl-icd-opencl-dev - - - name: Download the proof params - uses: ./.github/actions/proof-params-download - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: Test ignored in release profile run: cargo test --release --workspace --no-default-features build_gpu: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Build with various GPU support enabled steps: - uses: actions/checkout@v4 - - name: Install required packages - run: sudo apt install --no-install-recommends --yes libhwloc-dev nvidia-cuda-toolkit ocl-icd-opencl-dev - - name: Build with `cuda` and `opencl` features enabled run: cargo build --workspace --features cuda,opencl - name: Build with `cuda-supraseal` feature enabled run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo build --workspace --no-default-features --features cuda-supraseal - # Commented out until we run it on hardware with actual GPUs. - #test_gpu: - # runs-on: ubuntu-24.04 - # name: Test on GPUs - # strategy: - # matrix: - # test-args: ['', '--ignored'] - # env: - # FIL_PROOFS_USE_GPU_COLUMN_BUILDER: true - # FIL_PROOFS_USE_GPU_TREE_BUILDER: true - # BELLMAN_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 - # NEPTUNE_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 - # steps: - # - uses: actions/checkout@v4 - # - name: Install required packages - # run: sudo apt install --no-install-recommends --yes libhwloc-dev nvidia-cuda-toolkit ocl-icd-opencl-dev - # - # - name: Download the proof params - # uses: ./.github/actions/proof-params-download - # with: - # github-token: ${{ secrets.GITHUB_TOKEN }} - # - # - name: Test with CUDA - # run: cargo test --verbose --release --workspace --features cuda -- --nocapture ${{ matrix.test-args }} - # - name: Test with `cuda-supraseal` - # run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo test -p filecoin-proofs --release --no-default-features --features cuda-supraseal -- --nocapture --test-threads=1 ${{ matrix.test-args }} + test_gpu: + runs-on: ubuntu-24.04 + name: Test on GPUs + strategy: + matrix: + test-args: ['', '--ignored'] + env: + FIL_PROOFS_USE_GPU_COLUMN_BUILDER: true + FIL_PROOFS_USE_GPU_TREE_BUILDER: true + BELLMAN_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 + NEPTUNE_CUDA_NVCC_ARGS: --fatbin --gpu-architecture=sm_75 --generate-code=arch=compute_75,code=sm_75 + steps: + - uses: actions/checkout@v4 + - name: Test with CUDA + run: cargo test --verbose --release --workspace --features cuda -- --nocapture ${{ matrix.test-args }} + - name: Test with `cuda-supraseal` + run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo test -p filecoin-proofs --release --no-default-features --features cuda-supraseal -- --nocapture --test-threads=1 ${{ matrix.test-args }} test_macos: runs-on: macos-latest From 7b3026171239276bc65268426587e08cce1201cd Mon Sep 17 00:00:00 2001 From: nemo Date: Mon, 30 Sep 2024 16:03:06 -0400 Subject: [PATCH 3/7] feat: fix forgotten update --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 363d9e66c..c30a103d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,7 +75,7 @@ jobs: run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo build --workspace --no-default-features --features cuda-supraseal test_gpu: - runs-on: ubuntu-24.04 + runs-on: self-hosted name: Test on GPUs strategy: matrix: From 062730e65d3dd413d2096d339cadeda132222781 Mon Sep 17 00:00:00 2001 From: nemo Date: Mon, 30 Sep 2024 16:22:21 -0400 Subject: [PATCH 4/7] feat: put back in required check out --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c30a103d3..8cc37af4f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,6 +42,7 @@ jobs: # Run all tests with multicore-SDR enabled. FIL_PROOFS_USE_MULTICORE_SDR: true steps: + - uses: actions/checkout@v4 - name: Run usual tests in release profile run: cargo test --verbose --release --workspace --all-targets ${{ matrix.cargo-args }} -- --nocapture - name: Run isolated PoRep tests in release profile @@ -53,6 +54,7 @@ jobs: runs-on: self-hosted name: Test ignored in release mode steps: + - uses: actions/checkout@v4 - name: Test ignored in release profile run: cargo test --release --workspace -- ignored --nocapture From e4009f10c194433ad44f6b09c134b31cda3b1159 Mon Sep 17 00:00:00 2001 From: nemo Date: Tue, 1 Oct 2024 10:01:23 -0400 Subject: [PATCH 5/7] kick CI From 0616be725644b5887f44e41953224daa8ac67e95 Mon Sep 17 00:00:00 2001 From: nemo Date: Tue, 1 Oct 2024 11:37:03 -0400 Subject: [PATCH 6/7] feat: only run CI on push, not both PR and push, which can cause GPU conflicts --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8cc37af4f..ac081f286 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,7 @@ name: CI -on: [pull_request, push] +#on: [pull_request, push] +on: [push] # Cancel a job if there's a new on on the same branch started. # Based on https://stackoverflow.com/questions/58895283/stop-already-running-workflow-job-in-github-actions/67223051#67223051 From 70b6e6a93563cacda422af977f30cb057c4dc1d2 Mon Sep 17 00:00:00 2001 From: nemo Date: Tue, 1 Oct 2024 14:34:54 -0400 Subject: [PATCH 7/7] fix: play with parallelism to avoid conflicts on runners --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ac081f286..f6a819cef 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: - name: Run usual tests in release profile run: cargo test --verbose --release --workspace --all-targets ${{ matrix.cargo-args }} -- --nocapture - name: Run isolated PoRep tests in release profile - run: cargo test --release -p storage-proofs-porep --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture + run: cargo test --release -p storage-proofs-porep --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture --test-threads=1 - name: Run isolated update tests in release profile run: cargo test --release -p storage-proofs-update --features isolated-testing ${{ matrix.cargo-args }} -- --nocapture @@ -91,7 +91,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Test with CUDA - run: cargo test --verbose --release --workspace --features cuda -- --nocapture ${{ matrix.test-args }} + run: cargo test --verbose --release --workspace --features cuda -- --nocapture ${{ matrix.test-args }} -- --test-threads=1 - name: Test with `cuda-supraseal` run: CC=gcc-12 CXX=g++-12 NVCC_PREPEND_FLAGS='-ccbin /usr/bin/g++-12' cargo test -p filecoin-proofs --release --no-default-features --features cuda-supraseal -- --nocapture --test-threads=1 ${{ matrix.test-args }}