diff options
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/build.yml | 113 | 
1 files changed, 101 insertions, 12 deletions
| diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9826a7..126e1e6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,6 +64,38 @@ jobs:            cd build            ctest --output-on-failure +  ubuntu-latest-cmake-sanitizer: +    runs-on: ubuntu-latest + +    strategy: +      matrix: +        sanitizer: [ADDRESS, THREAD, UNDEFINED] + +    steps: +      - name: Clone +        id: checkout +        uses: actions/checkout@v1 + +      - name: Dependencies +        id: depends +        run: | +          sudo apt-get update +          sudo apt-get install build-essential + +      - name: Build +        id: cmake_build +        run: | +          mkdir build +          cd build +          cmake .. -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON +          cmake --build . --config Release + +      - name: Test +        id: cmake_test +        run: | +          cd build +          ctest --output-on-failure +    macOS-latest-make:      runs-on: macos-latest @@ -112,6 +144,16 @@ jobs:    windows-latest-cmake:      runs-on: windows-latest +    strategy: +      matrix: +        include: +         - build: 'avx2' +           defines: '' +         - build: 'avx' +           defines: '-DLLAMA_AVX2=OFF' +         - build: 'avx512' +           defines: '-DLLAMA_AVX512=ON' +      steps:        - name: Clone          id: checkout @@ -122,11 +164,21 @@ jobs:          run: |            mkdir build            cd build -          cmake .. +          cmake .. ${{ matrix.defines }}            cmake --build . --config Release +      - name: Check AVX512F support +        id: check_avx512f +        if: ${{ matrix.build == 'avx512' }} +        continue-on-error: true +        run: | +          cd build +          Set-Content -Path .\avx512f.exe -Value ([Convert]::FromBase64String('TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAClmfXY4fibi+H4m4vh+JuL4fiai+P4m4si98aL4vibi7Xbq4vg+JuLUmljaOH4m4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRQAATAEBAGo6H2QAAAAAAAAAAOAADwELAQYAAAIAAAAAAAAAAAAADBAAAAAQAAAAIAAAAABAAAAQAAAAAgAABAAAAAAAAAAEAAAAAAAAAAAgAAAAAgAAAAAAAAMAAAAAABAAABAAAAAAEAAAEAAAAAAAABAAAAAAAAAAAAAAAFQQAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC50ZXh0AAAAsgAAAAAQAAAAAgAAAAIAAAAAAAAAAAAAAAAAACAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUEAAAiBAAAAAAAABVi+xRUVNTuAcAAAAPosHrEGaD4wGJXfxbg0X8MI1F+GoAUI1F/GoBUGr1/xUAEEAAUP8VBBBAAItF/FuDwND32BvAQMnDzMx8EAAAAAAAAAAAAACkEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlBAAAIgQAAAAAAAApANXcml0ZUZpbGUAuQFHZXRTdGRIYW5kbGUAAEtFUk5FTDMyLmRsbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==')) -AsByteStream +          .\avx512f.exe && echo " AVX512F: YES" && ( echo HAS_AVX512F=1 >> $env:GITHUB_ENV ) || echo " AVX512F: NO" +        - name: Test          id: cmake_test +        if: ${{ matrix.build != 'avx512' || env.HAS_AVX512F == '1' }} # Test AVX-512 only when possible          run: |            cd build            ctest -C Release --output-on-failure @@ -140,12 +192,39 @@ jobs:          id: pack_artifacts          if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}          run: | -          7z a llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-x64.zip .\build\bin\Release\* +          7z a llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-${{ matrix.build }}-x64.zip .\build\bin\Release\* + +      - name: Upload artifacts +        if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} +        uses: actions/upload-artifact@v3 +        with: +          path: | +            llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-${{ matrix.build }}-x64.zip + +  release: +    if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} + +    runs-on: ubuntu-latest + +    needs: +      - ubuntu-latest-make +      - ubuntu-latest-cmake +      - macOS-latest-make +      - macOS-latest-cmake +      - windows-latest-cmake + +    steps: +      - name: Download artifacts +        id: download-artifact +        uses: actions/download-artifact@v3 + +      - name: Get commit hash +        id: commit +        uses: pr-mpt/actions-commit-hash@v2        - name: Create release          id: create_release -        if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} -        uses: zendesk/action-create-release@v1 +        uses: anzz1/action-create-release@v1          env:            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}          with: @@ -153,15 +232,25 @@ jobs:        - name: Upload release          id: upload_release -        if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }} -        uses: actions/upload-release-asset@v1 -        env: -          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +        uses: actions/github-script@v3          with: -          upload_url: ${{ steps.create_release.outputs.upload_url }}  -          asset_path: .\llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-x64.zip -          asset_name: llama-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-bin-win-x64.zip -          asset_content_type: application/octet-stream +          github-token: ${{secrets.GITHUB_TOKEN}} +          script: | +            const path = require('path'); +            const fs = require('fs'); +            const release_id = '${{ steps.create_release.outputs.id }}'; +            for (let file of await fs.readdirSync('./artifact')) { +              if (path.extname(file) === '.zip') { +                console.log('uploadReleaseAsset', file); +                await github.repos.uploadReleaseAsset({ +                  owner: context.repo.owner, +                  repo: context.repo.repo, +                  release_id: release_id, +                  name: file, +                  data: await fs.readFileSync(`./artifact/${file}`) +                }); +              } +            }  #  ubuntu-latest-gcc:  #    runs-on: ubuntu-latest | 
