Skip to content

fix(ci-windows): Fix cmake build -j nproc #19

fix(ci-windows): Fix cmake build -j nproc

fix(ci-windows): Fix cmake build -j nproc #19

Workflow file for this run

name: CI
on:
workflow_dispatch: # allows manual triggering
inputs:
create_release:
description: 'Create new release'
required: true
type: boolean
push:
branches:
- master
- 57-add-github-ci-cd-for-windows
paths: ['.github/workflows/**', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu']
pull_request:
types: [opened, synchronize, reopened]
paths: ['**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu']
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
jobs:
# ubuntu-amd64-build:
# runs-on: ubuntu-20.04
# permissions:
# contents: write
# steps:
# - name: Clone
# id: checkout
# uses: actions/checkout@v3
# with:
# submodules: recursive
# - name: Dependencies
# id: depends
# run: |
# sudo apt-get update
# sudo apt-get install build-essential gcc-8
# - name: Build
# id: make_build
# run: |
# ./install_deps.sh
# mkdir build && cd build
# cmake ..
# CC=gcc-8 make -j $(nproc)
# ls -la
# - name: Extract branch name
# shell: bash
# id: extract_branch
# run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
# - name: Extract commit short SHA
# id: extract_commit_id
# run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
# - name: Package
# shell: bash
# run: |
# mkdir -p nitro && mkdir -p nitro/config
# cp config.json nitro/config/
# cp build/nitro nitro/
# zip -r nitro.zip nitro
# - name: Upload binaries to release
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: nitro.zip
# asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64.zip
# tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }}
# ubuntu-amd64-cuda-build:
# runs-on: linux-gpu
# permissions:
# contents: write
# steps:
# - name: Clone
# id: checkout
# uses: actions/checkout@v3
# with:
# submodules: recursive
# # - name: Dependencies
# # id: depends
# # run: |
# # sudo apt-get update
# # sudo apt-get install build-essential gcc-8 uuid-dev
# - name: Build
# id: make_build
# run: |
# ./install_deps.sh
# mkdir build && cd build
# cmake -DLLAMA_CUBLAS=ON ..
# CC=gcc-8 make -j $(nproc)
# ls -la
# - name: Extract branch name
# shell: bash
# id: extract_branch
# run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
# - name: Extract commit short SHA
# id: extract_commit_id
# run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
# - name: Package
# shell: bash
# run: |
# mkdir -p nitro && mkdir -p nitro/config
# cp config.json nitro/config/
# cp build/nitro nitro/
# zip -r nitro.zip nitro
# - name: Upload binaries to release
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: nitro.zip
# asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-linux-amd64-cuda.zip
# tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }}
# macOS-M-build:
# runs-on: mac-silicon
# permissions:
# contents: write
# steps:
# - name: Clone
# id: checkout
# uses: actions/checkout@v3
# with:
# submodules: recursive
# - name: Dependencies
# id: depends
# continue-on-error: true
# run: |
# brew update
# brew install cmake gcc@8
# - name: Build
# id: cmake_build
# run: |
# ./install_deps.sh
# mkdir build && cd build
# cmake ..
# CC=gcc-8 make -j $(nproc)
# ls -la
# - name: Extract branch name
# shell: bash
# id: extract_branch
# run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
# - name: Extract commit short SHA
# id: extract_commit_id
# run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
# - name: Package
# shell: bash
# run: |
# mkdir -p nitro && mkdir -p nitro/config
# cp config.json nitro/config/
# cp llama.cpp/ggml-metal.h nitro/
# cp build/nitro nitro/
# zip -r nitro.zip nitro
# - name: Upload binaries to release
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: nitro.zip
# asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-arm64.zip
# tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }}
# macOS-Intel-build:
# runs-on: macos-latest
# permissions:
# contents: write
# steps:
# - name: Clone
# id: checkout
# uses: actions/checkout@v3
# with:
# submodules: recursive
# - name: Dependencies
# id: depends
# continue-on-error: true
# run: |
# brew update
# - name: Build
# id: cmake_build
# run: |
# ./install_deps.sh
# mkdir build && cd build
# cmake -DLLAMA_METAL=OFF ..
# CC=gcc-8 make -j $(nproc)
# ls -la
# - name: Extract branch name
# shell: bash
# id: extract_branch
# run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
# - name: Extract commit short SHA
# id: extract_commit_id
# run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
# - name: Package
# shell: bash
# run: |
# mkdir -p nitro && mkdir -p nitro/config
# cp config.json nitro/config/
# cp build/nitro nitro/
# zip -r nitro.zip nitro
# - name: Upload binaries to release
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: nitro.zip
# asset_name: nitro-${{ steps.extract_commit_id.outputs.sha_short }}-mac-amd64.zip
# tag: ${{ steps.extract_branch.outputs.branch }}-${{ steps.extract_commit_id.outputs.sha_short }}
windows-amd64-build:
runs-on: windows-latest
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' }}
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: Build
id: cmake_build
shell: cmd
run: |
cmake -S ./nitro_deps -B ./build_deps/nitro_deps
cmake --build ./build_deps/nitro_deps --config Release
mkdir build
cd build
cmake .. ${{ matrix.defines }}
cmake --build . --config Release -j $(nproc)
- 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
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
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\*
- name: Upload binaries to release
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
uses: svenstaro/upload-release-action@v2
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 }}
windows-amd64-cuda-build:
runs-on: windows-nvidia
permissions:
contents: write
strategy:
matrix:
cuda: ['12.2.0']
build: ['cublas']
steps:
- name: Clone
id: checkout
uses: actions/checkout@v3
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: Build
id: cmake_build
shell: cmd
run: |
cmake -S ./nitro_deps -B ./build_deps/nitro_deps
cmake --build ./build_deps/nitro_deps --config Release
mkdir build
cd build
cmake .. -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_CUBLAS=ON -DBUILD_SHARED_LIBS=ON
cmake --build . --config Release -j $(nproc)
- 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
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
run: |
$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
# if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
uses: svenstaro/upload-release-action@v2
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 }}