Skip to content

Commit

Permalink
Refactor CICD windows nitro
Browse files Browse the repository at this point in the history
  • Loading branch information
hiento09 authored and Hien To committed Oct 13, 2023
1 parent 3348406 commit aafcb82
Showing 1 changed file with 49 additions and 84 deletions.
133 changes: 49 additions & 84 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,29 +45,15 @@ jobs:
if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped')
permissions:
contents: write

env:
OPENBLAS_VERSION: 0.3.23
OPENCL_VERSION: 2023.04.17
CLBLAST_VERSION: 1.6.0

strategy:
matrix:
include:
- build: 'openblas'
defines: '-DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'

steps:
- name: Clone

id: checkout
uses: actions/checkout@v3
with:
submodules: recursive

- name: Download OpenBLAS
id: get_openblas
if: ${{ matrix.build == 'openblas' }}
- name: Dependencies
id: depends
run: |
sudo apt-get update
sudo apt-get install build-essential gcc-8
Expand Down Expand Up @@ -167,7 +153,6 @@ jobs:
- name: Build
id: cmake_build
shell: cmd
run: |
./install_deps.sh
mkdir build && cd build
Expand Down Expand Up @@ -225,12 +210,10 @@ jobs:
- name: Package
shell: bash
run: |
$dst='.\build\Release'
robocopy build_deps\_install\bin\zlib.dll $dst
robocopy build\bin\Release\llama.dll $dst
mkdir -p .\build\Release\config
robocopy config.json .\build\Release\config
7z a nitro.zip .\build\Release\*
mkdir -p nitro && mkdir -p nitro/config
cp config.json nitro/config/
cp build/nitro nitro/
zip -r nitro.zip nitro
- uses: actions/[email protected]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
Expand All @@ -244,6 +227,8 @@ jobs:

windows-amd64-build:
runs-on: windows-latest
needs: create-draft-release
if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped')
permissions:
contents: write

Expand All @@ -255,7 +240,7 @@ jobs:
strategy:
matrix:
include:
- build: 'openblas'
- build: 'normal'
defines: '-DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'

steps:
Expand All @@ -266,18 +251,17 @@ jobs:
with:
submodules: recursive

- name: Download OpenBLAS
id: get_openblas
if: ${{ matrix.build == 'openblas' }}
run: |
curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
mkdir $env:RUNNER_TEMP/openblas
tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
$vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
$msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
$lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
& $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
- name: Setup VSWhere.exe
uses: warrenbuckley/Setup-VSWhere@v1
with:
version: latest
silent: true
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true


- name: actions-setup-cmake
uses: jwlawson/[email protected]

- name: Build
id: cmake_build
Expand All @@ -287,26 +271,9 @@ jobs:
cmake --build ./build_deps/nitro_deps --config Release
mkdir build
cd build
cmake .. ${{ matrix.defines }}
cmake ..
cmake --build . --config Release -j 4
- name: Add libopenblas.dll
id: add_libopenblas_dll
if: ${{ matrix.build == 'openblas' }}
run: |
cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build/Release/openblas.dll
cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt
- name: Extract branch name
shell: cmd
id: extract_branch
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"

- name: Extract commit short SHA
shell: cmd
id: extract_commit_id
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"

- name: Pack artifacts
id: pack_artifacts
run: |
Expand All @@ -317,16 +284,20 @@ jobs:
robocopy config.json .\build\Release\config
7z a nitro.zip .\build\Release\*
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
- uses: actions/[email protected]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: nitro.zip
asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-win-amd64-${{ matrix.build }}.zip
tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }}
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
asset_path: ./nitro.zip
asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-win-amd64-${{ matrix.build }}.zip
asset_content_type: application/zip

windows-amd64-cuda-build:
runs-on: windows-nvidia
needs: create-draft-release
if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped')
permissions:
contents: write

Expand All @@ -342,12 +313,13 @@ jobs:
with:
submodules: recursive

# - uses: Jimver/[email protected]
# id: cuda-toolkit
# with:
# cuda: ${{ matrix.cuda }}
# method: 'network'
# sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]'
- name: Setup VSWhere.exe
uses: warrenbuckley/Setup-VSWhere@v1
with:
version: latest
silent: true
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true

- name: Build
id: cmake_build
Expand All @@ -360,35 +332,28 @@ jobs:
cmake .. -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUBLAS=ON -DBUILD_SHARED_LIBS=ON
cmake --build . --config Release -j 4
- name: Extract branch name
shell: cmd
id: extract_branch
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"

- name: Extract commit short SHA
shell: cmd
id: extract_commit_id
run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"


- name: Pack artifacts
id: pack_artifacts
shell: cmd
run: |
set PATH=%PATH%;C:\Program Files\7-Zip\
echo %PATH%
$dst='.\build\Release'
robocopy build_deps\_install\bin\zlib.dll $dst
robocopy build\bin\Release\llama.dll $dst
robocopy "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin" $dst cudart64_*.dll cublas64_*.dll cublasLt64_*.dll
mkdir -p .\build\Release\config
robocopy config.json .\build\Release\config
7z a nitro.zip .\build\Release\*
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
- uses: actions/[email protected]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: nitro.zip
asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-win-amd64-${{ matrix.build }}-cu${{ matrix.cuda }}.zip
tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }}
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
asset_path: ./nitro.zip
asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-win-amd64-${{ matrix.build }}-cu${{ matrix.cuda }}.zip
asset_content_type: application/zip

update_release_draft:
needs: [ubuntu-amd64-build, ubuntu-amd64-cuda-build, macOS-M-build, macOS-Intel-build, windows-amd64-build, windows-amd64-cuda-build]
Expand Down

0 comments on commit aafcb82

Please sign in to comment.