diff --git a/.github/workflows/build-riscv.yml b/.github/workflows/build-riscv.yml index 36a3a1155a..84762327eb 100644 --- a/.github/workflows/build-riscv.yml +++ b/.github/workflows/build-riscv.yml @@ -35,7 +35,7 @@ env: jobs: ubuntu-riscv64-native-sanitizer: - runs-on: RISCV64 + runs-on: ubuntu-24.04-riscv continue-on-error: true @@ -50,7 +50,7 @@ jobs: sudo apt-get update # Install necessary packages - sudo apt-get install -y libatomic1 libtsan2 gcc-14 g++-14 rustup cmake build-essential wget ccache git-lfs + sudo apt-get install -y libatomic1 libtsan2 gcc-14 g++-14 cmake build-essential wget ccache git-lfs # Set gcc-14 and g++-14 as the default compilers sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100 @@ -58,9 +58,12 @@ jobs: sudo ln -sf /usr/bin/gcc-14 /usr/bin/gcc sudo ln -sf /usr/bin/g++-14 /usr/bin/g++ - # Install Rust stable version - rustup install stable - rustup default stable + if ! which rustc; then + # Install Rust stable version + sudo apt-get install -y rustup + rustup install stable + rustup default stable + fi git lfs install @@ -73,23 +76,14 @@ jobs: id: checkout uses: actions/checkout@v6 - - name: Setup ccache - run: | - # Unique cache directory per matrix combination - export CCACHE_DIR="$HOME/.ccache/sanitizer-${{ matrix.sanitizer }}-${{ matrix.build_type }}" - mkdir -p "$CCACHE_DIR" - - # Configure ccache - ccache --set-config=max_size=5G - ccache --set-config=compression=true - ccache --set-config=compression_level=6 - ccache --set-config=cache_dir="$CCACHE_DIR" - ccache --set-config=sloppiness=file_macro,time_macros,include_file_mtime,include_file_ctime - ccache --set-config=hash_dir=false - - # Export for subsequent steps - echo "CCACHE_DIR=$CCACHE_DIR" >> $GITHUB_ENV - echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV + - name: Configure sccache + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + with: + script: | + core.exportVariable('SCCACHE_GHA_ENABLED', 'on'); + core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on'); // Force the github action v2 - name: Build id: cmake_build @@ -102,8 +96,8 @@ jobs: -DLLAMA_BUILD_EXAMPLES=ON \ -DLLAMA_BUILD_TOOLS=ON \ -DLLAMA_BUILD_TESTS=OFF \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON \ -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \ -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 @@ -134,3 +128,7 @@ jobs: run: | cd build ctest -L main --verbose --timeout 900 + + - name: Print sccache stats + if: always() + run: sccache --show-adv-stats diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 46a40df998..2760a828fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -996,7 +996,7 @@ jobs: cmake --build build -j ${env:NUMBER_OF_PROCESSORS} ubuntu-cpu-riscv64-native: - runs-on: RISCV64 + runs-on: ubuntu-24.04-riscv steps: - name: Install dependencies @@ -1004,7 +1004,7 @@ jobs: sudo apt-get update # Install necessary packages - sudo apt-get install -y libatomic1 libtsan2 gcc-14 g++-14 rustup cmake build-essential libssl-dev wget ccache git-lfs + sudo apt-get install -y libatomic1 libtsan2 gcc-14 g++-14 cmake build-essential libssl-dev wget ccache git-lfs # Set gcc-14 and g++-14 as the default compilers sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100 @@ -1012,9 +1012,12 @@ jobs: sudo ln -sf /usr/bin/gcc-14 /usr/bin/gcc sudo ln -sf /usr/bin/g++-14 /usr/bin/g++ - # Install Rust stable version - rustup install stable - rustup default stable + if ! which rustc; then + # Install Rust stable version + sudo apt-get install -y rustup + rustup install stable + rustup default stable + fi git lfs install @@ -1031,25 +1034,14 @@ jobs: cmake --version rustc --version - - name: Setup ccache - run: | - # Set unique cache directory for this job - export CCACHE_DIR="$HOME/.ccache/cpu-cmake-rv64-native" - mkdir -p "$CCACHE_DIR" - - # Configure ccache for optimal performance - ccache --set-config=max_size=5G - ccache --set-config=compression=true - ccache --set-config=compression_level=6 - ccache --set-config=cache_dir="$CCACHE_DIR" - - # Enable more aggressive caching - ccache --set-config=sloppiness=file_macro,time_macros,include_file_mtime,include_file_ctime - ccache --set-config=hash_dir=false - - # Export for subsequent steps - echo "CCACHE_DIR=$CCACHE_DIR" >> $GITHUB_ENV - echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV + - name: Configure sccache + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + with: + script: | + core.exportVariable('SCCACHE_GHA_ENABLED', 'on'); + core.exportVariable('ACTIONS_RESULTS_URL', process.env.ACTIONS_RESULTS_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('ACTIONS_CACHE_SERVICE_V2', 'on'); // Force the github action v2 - name: Build id: cmake_build @@ -1060,8 +1052,8 @@ jobs: -DLLAMA_BUILD_EXAMPLES=ON \ -DLLAMA_BUILD_TOOLS=ON \ -DLLAMA_BUILD_TESTS=ON \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ -DGGML_RPC=ON \ -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \ -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 @@ -1085,6 +1077,10 @@ jobs: ./bin/llama-convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf ./bin/llama-completion -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256 + - name: Print sccache stats + if: always() + run: sccache --show-adv-stats + # TODO: simplify the following workflows using a matrix # TODO: run lighter CI on PRs and the full CI only on master (if needed) ggml-ci-x64-cpu-low-perf: