2023-03-12 20:08:24 +00:00
|
|
|
name: CI
|
2023-03-18 07:27:12 +00:00
|
|
|
|
|
|
|
on:
|
|
|
|
workflow_dispatch: # allows manual triggering
|
|
|
|
inputs:
|
|
|
|
create_release:
|
|
|
|
description: 'Create new release'
|
|
|
|
required: true
|
|
|
|
type: boolean
|
|
|
|
push:
|
2023-04-17 15:00:10 +00:00
|
|
|
branches:
|
|
|
|
- master
|
2024-06-26 19:59:28 +00:00
|
|
|
paths: ['.github/workflows/build.yml', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal']
|
2023-03-18 07:27:12 +00:00
|
|
|
pull_request:
|
2023-04-22 13:12:29 +00:00
|
|
|
types: [opened, synchronize, reopened]
|
2024-06-26 19:59:28 +00:00
|
|
|
paths: ['.github/workflows/build.yml', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal']
|
2023-03-18 07:27:12 +00:00
|
|
|
|
2024-03-22 17:15:06 +00:00
|
|
|
concurrency:
|
2024-04-04 16:30:53 +00:00
|
|
|
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
|
2024-03-22 17:15:06 +00:00
|
|
|
cancel-in-progress: true
|
|
|
|
|
2023-03-18 07:27:12 +00:00
|
|
|
env:
|
2023-07-07 16:24:01 +00:00
|
|
|
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
|
|
|
GGML_NLOOP: 3
|
2023-07-07 18:23:57 +00:00
|
|
|
GGML_N_THREADS: 1
|
2024-09-15 17:46:12 +00:00
|
|
|
LLAMA_LOG_COLORS: 1
|
|
|
|
LLAMA_LOG_PREFIX: 1
|
|
|
|
LLAMA_LOG_TIMESTAMPS: 1
|
2023-03-12 20:08:24 +00:00
|
|
|
|
|
|
|
jobs:
|
2024-03-21 09:13:12 +00:00
|
|
|
macOS-latest-cmake-arm64:
|
|
|
|
runs-on: macos-14
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-04-19 17:03:35 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2024-03-21 09:13:12 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
continue-on-error: true
|
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
sysctl -a
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-08-12 16:17:03 +00:00
|
|
|
cmake -DLLAMA_FATAL_WARNINGS=ON -DGGML_METAL_EMBED_LIBRARY=ON -DLLAMA_CURL=ON -DGGML_RPC=ON -DBUILD_SHARED_LIBS=OFF ..
|
2024-03-21 09:13:12 +00:00
|
|
|
cmake --build . --config Release -j $(sysctl -n hw.logicalcpu)
|
|
|
|
|
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
|
|
|
run: |
|
|
|
|
cd build
|
2024-04-11 12:51:07 +00:00
|
|
|
ctest -L 'main|curl' --verbose --timeout 900
|
2024-03-21 09:13:12 +00:00
|
|
|
|
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
run: |
|
|
|
|
cp LICENSE ./build/bin/
|
|
|
|
zip -r llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.zip ./build/bin/*
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/upload-artifact@v4
|
2024-03-21 09:13:12 +00:00
|
|
|
with:
|
2024-04-04 15:08:55 +00:00
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-macos-arm64.zip
|
|
|
|
name: llama-bin-macos-arm64.zip
|
2024-03-21 09:13:12 +00:00
|
|
|
|
|
|
|
macOS-latest-cmake-x64:
|
2024-06-14 17:28:34 +00:00
|
|
|
runs-on: macos-12
|
2024-03-21 09:13:12 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-04-19 17:03:35 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2024-03-21 09:13:12 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
continue-on-error: true
|
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
sysctl -a
|
2024-04-12 08:15:05 +00:00
|
|
|
# Metal is disabled due to intermittent failures with Github runners not having a GPU:
|
|
|
|
# https://github.com/ggerganov/llama.cpp/actions/runs/8635935781/job/23674807267#step:5:2313
|
2024-08-12 16:17:03 +00:00
|
|
|
cmake -B build -DLLAMA_FATAL_WARNINGS=ON -DGGML_METAL=OFF -DLLAMA_CURL=ON -DGGML_RPC=ON -DBUILD_SHARED_LIBS=OFF
|
2024-06-12 23:41:52 +00:00
|
|
|
cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
|
2024-03-21 09:13:12 +00:00
|
|
|
|
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
|
|
|
run: |
|
|
|
|
cd build
|
|
|
|
ctest -L main --verbose --timeout 900
|
|
|
|
|
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
2024-03-21 09:30:40 +00:00
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-03-21 09:13:12 +00:00
|
|
|
run: |
|
|
|
|
cp LICENSE ./build/bin/
|
|
|
|
zip -r llama-${{ steps.tag.outputs.name }}-bin-macos-x64.zip ./build/bin/*
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/upload-artifact@v4
|
2024-03-21 09:13:12 +00:00
|
|
|
with:
|
2024-04-04 15:08:55 +00:00
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-macos-x64.zip
|
|
|
|
name: llama-bin-macos-x64.zip
|
2024-03-21 09:13:12 +00:00
|
|
|
|
2023-04-24 15:38:26 +00:00
|
|
|
ubuntu-focal-make:
|
|
|
|
runs-on: ubuntu-20.04
|
2024-03-22 13:09:07 +00:00
|
|
|
env:
|
|
|
|
LLAMA_NODE_AVAILABLE: true
|
|
|
|
LLAMA_PYTHON_AVAILABLE: true
|
2023-03-12 20:08:24 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
2023-03-18 07:27:12 +00:00
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
2023-03-18 07:27:12 +00:00
|
|
|
id: depends
|
2023-03-12 20:08:24 +00:00
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
2023-04-24 15:38:26 +00:00
|
|
|
sudo apt-get install build-essential gcc-8
|
2023-03-12 20:08:24 +00:00
|
|
|
|
2024-03-22 13:09:07 +00:00
|
|
|
- uses: actions/setup-node@v4
|
|
|
|
with:
|
|
|
|
node-version: "20"
|
|
|
|
|
2024-04-03 18:01:13 +00:00
|
|
|
- uses: actions/setup-python@v5
|
2024-03-22 13:09:07 +00:00
|
|
|
with:
|
|
|
|
python-version: "3.11"
|
|
|
|
|
2023-03-12 20:08:24 +00:00
|
|
|
- name: Build
|
2023-03-18 07:27:12 +00:00
|
|
|
id: make_build
|
2024-02-17 21:03:14 +00:00
|
|
|
env:
|
|
|
|
LLAMA_FATAL_WARNINGS: 1
|
2023-03-12 20:08:24 +00:00
|
|
|
run: |
|
2023-09-28 19:31:04 +00:00
|
|
|
CC=gcc-8 make -j $(nproc)
|
2023-03-12 20:08:24 +00:00
|
|
|
|
2023-08-30 09:42:51 +00:00
|
|
|
- name: Test
|
|
|
|
id: make_test
|
|
|
|
run: |
|
2023-09-28 19:31:04 +00:00
|
|
|
CC=gcc-8 make tests -j $(nproc)
|
|
|
|
make test -j $(nproc)
|
2023-08-30 09:42:51 +00:00
|
|
|
|
2024-03-17 18:12:37 +00:00
|
|
|
ubuntu-focal-make-curl:
|
|
|
|
runs-on: ubuntu-20.04
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-03-17 18:12:37 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install build-essential gcc-8 libcurl4-openssl-dev
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: make_build
|
|
|
|
env:
|
|
|
|
LLAMA_FATAL_WARNINGS: 1
|
|
|
|
LLAMA_CURL: 1
|
|
|
|
run: |
|
|
|
|
CC=gcc-8 make -j $(nproc)
|
|
|
|
|
2023-03-17 16:38:24 +00:00
|
|
|
ubuntu-latest-cmake:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
2023-03-23 02:20:34 +00:00
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-04-19 17:03:35 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2023-03-17 16:38:24 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
2023-03-23 02:20:34 +00:00
|
|
|
id: depends
|
2023-03-17 16:38:24 +00:00
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
2024-04-11 12:51:07 +00:00
|
|
|
sudo apt-get install build-essential libcurl4-openssl-dev
|
2023-03-17 16:38:24 +00:00
|
|
|
|
|
|
|
- name: Build
|
2023-03-23 02:20:34 +00:00
|
|
|
id: cmake_build
|
2023-03-17 16:38:24 +00:00
|
|
|
run: |
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-08-12 16:17:03 +00:00
|
|
|
cmake .. -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_CURL=ON -DGGML_RPC=ON -DBUILD_SHARED_LIBS=OFF
|
2023-09-28 19:31:04 +00:00
|
|
|
cmake --build . --config Release -j $(nproc)
|
2023-03-23 02:20:34 +00:00
|
|
|
|
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
|
|
|
run: |
|
|
|
|
cd build
|
2024-04-11 12:51:07 +00:00
|
|
|
ctest -L 'main|curl' --verbose --timeout 900
|
2023-03-17 16:38:24 +00:00
|
|
|
|
2024-03-22 18:49:06 +00:00
|
|
|
- name: Test llama2c conversion
|
|
|
|
id: llama2c_test
|
|
|
|
run: |
|
|
|
|
cd build
|
|
|
|
echo "Fetch tokenizer"
|
|
|
|
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories260K/tok512.bin
|
|
|
|
echo "Fetch llama2c model"
|
|
|
|
wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories260K/stories260K.bin
|
2024-06-12 23:41:52 +00:00
|
|
|
./bin/llama-convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf
|
|
|
|
./bin/llama-cli -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256
|
2024-03-22 18:49:06 +00:00
|
|
|
|
2024-04-19 17:03:35 +00:00
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
run: |
|
|
|
|
cp LICENSE ./build/bin/
|
|
|
|
zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-x64.zip ./build/bin/*
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
uses: actions/upload-artifact@v4
|
|
|
|
with:
|
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-x64.zip
|
|
|
|
name: llama-bin-ubuntu-x64.zip
|
|
|
|
|
2024-05-18 15:55:54 +00:00
|
|
|
ubuntu-latest-cmake-sanitizer:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
continue-on-error: true
|
|
|
|
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
sanitizer: [ADDRESS, THREAD, UNDEFINED]
|
|
|
|
build_type: [Debug, Release]
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install build-essential
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
2024-06-03 15:14:15 +00:00
|
|
|
if: ${{ matrix.sanitizer != 'THREAD' }}
|
2024-05-18 15:55:54 +00:00
|
|
|
run: |
|
|
|
|
mkdir build
|
|
|
|
cd build
|
|
|
|
cmake .. -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
|
|
|
cmake --build . --config ${{ matrix.build_type }} -j $(nproc)
|
|
|
|
|
2024-06-03 15:14:15 +00:00
|
|
|
- name: Build (no OpenMP)
|
|
|
|
id: cmake_build_no_openmp
|
|
|
|
if: ${{ matrix.sanitizer == 'THREAD' }}
|
|
|
|
run: |
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake .. -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DGGML_OPENMP=OFF
|
2024-06-03 15:14:15 +00:00
|
|
|
cmake --build . --config ${{ matrix.build_type }} -j $(nproc)
|
|
|
|
|
2024-05-18 15:55:54 +00:00
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
|
|
|
run: |
|
|
|
|
cd build
|
|
|
|
ctest -L main --verbose --timeout 900
|
2023-03-25 21:38:11 +00:00
|
|
|
|
2024-05-14 11:27:19 +00:00
|
|
|
ubuntu-latest-cmake-rpc:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
continue-on-error: true
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
|
|
|
- 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
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -DGGML_RPC=ON ..
|
2024-05-14 11:27:19 +00:00
|
|
|
cmake --build . --config Release -j $(nproc)
|
|
|
|
|
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
|
|
|
run: |
|
|
|
|
cd build
|
|
|
|
ctest -L main --verbose
|
|
|
|
|
2024-03-01 08:54:53 +00:00
|
|
|
ubuntu-22-cmake-vulkan:
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-03-01 08:54:53 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
run: |
|
2024-07-13 16:12:39 +00:00
|
|
|
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
|
|
|
|
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list https://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list
|
|
|
|
sudo apt-get update -y
|
|
|
|
sudo apt-get install -y build-essential vulkan-sdk
|
2024-03-01 08:54:53 +00:00
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -DGGML_VULKAN=ON ..
|
2024-03-01 08:54:53 +00:00
|
|
|
cmake --build . --config Release -j $(nproc)
|
|
|
|
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
ubuntu-22-cmake-hip:
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
container: rocm/dev-ubuntu-22.04:6.0.2
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-09-12 11:27:45 +00:00
|
|
|
uses: actions/checkout@v4
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
run: |
|
|
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install -y build-essential git cmake rocblas-dev hipblas-dev
|
|
|
|
|
|
|
|
- name: Build with native CMake HIP support
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -B build -S . -DCMAKE_HIP_COMPILER="$(hipconfig -l)/clang" -DGGML_HIPBLAS=ON
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
cmake --build build --config Release -j $(nproc)
|
|
|
|
|
|
|
|
- name: Build with legacy HIP support
|
|
|
|
id: cmake_build_legacy_hip
|
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -B build2 -S . -DCMAKE_C_COMPILER=hipcc -DCMAKE_CXX_COMPILER=hipcc -DGGML_HIPBLAS=ON
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
cmake --build build2 --config Release -j $(nproc)
|
|
|
|
|
ggml : add unified SYCL backend for Intel GPUs (#2690)
* first update for migration
* update init_cublas
* add debug functio, commit all help code
* step 1
* step 2
* step3 add fp16, slower 31->28
* add GGML_LIST_DEVICE function
* step 5 format device and print
* step6, enhance error check, remove CUDA macro, enhance device id to fix none-zero id issue
* support main device is non-zero
* step7 add debug for code path, rm log
* step 8, rename all macro & func from cuda by sycl
* fix error of select non-zero device, format device list
* ren ggml-sycl.hpp -> ggml-sycl.h
* clear CMAKE to rm unused lib and options
* correct queue: rm dtct:get_queue
* add print tensor function to debug
* fix error: wrong result in 658746bb26702e50f2c59c0e4ada8e9da6010481
* summary dpct definition in one header file to replace folder:dpct
* refactor device log
* mv dpct definition from folder dpct to ggml-sycl.h
* update readme, refactor build script
* fix build with sycl
* set nthread=1 when sycl, increase performance
* add run script, comment debug code
* add ls-sycl-device tool
* add ls-sycl-device, rm unused files
* rm rear space
* dos2unix
* Update README_sycl.md
* fix return type
* remove sycl version from include path
* restore rm code to fix hang issue
* add syc and link for sycl readme
* rm original sycl code before refactor
* fix code err
* add know issue for pvc hang issue
* enable SYCL_F16 support
* align pr4766
* check for sycl blas, better performance
* cleanup 1
* remove extra endif
* add build&run script, clean CMakefile, update guide by review comments
* rename macro to intel hardware
* editor config format
* format fixes
* format fixes
* editor format fix
* Remove unused headers
* skip build sycl tool for other code path
* replace tab by space
* fix blas matmul function
* fix mac build
* restore hip dependency
* fix conflict
* ren as review comments
* mv internal function to .cpp file
* export funciton print_sycl_devices(), mv class dpct definition to source file
* update CI/action for sycl code, fix CI error of repeat/dup
* fix action ID format issue
* rm unused strategy
* enable llama_f16 in ci
* fix conflict
* fix build break on MacOS, due to CI of MacOS depend on external ggml, instead of internal ggml
* fix ci cases for unsupported data type
* revert unrelated changed in cuda cmake
remove useless nommq
fix typo of GGML_USE_CLBLAS_SYCL
* revert hip cmake changes
* fix indent
* add prefix in func name
* revert no mmq
* rm cpu blas duplicate
* fix no_new_line
* fix src1->type==F16 bug.
* pass batch offset for F16 src1
* fix batch error
* fix wrong code
* revert sycl checking in test-sampling
* pass void as arguments of ggml_backend_sycl_print_sycl_devices
* remove extra blank line in test-sampling
* revert setting n_threads in sycl
* implement std::isinf for icpx with fast math.
* Update ci/run.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* add copyright and MIT license declare
* update the cmd example
---------
Co-authored-by: jianyuzh <jianyu.zhang@intel.com>
Co-authored-by: luoyu-intel <yu.luo@intel.com>
Co-authored-by: Meng, Hengyu <hengyu.meng@intel.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-01-28 15:56:23 +00:00
|
|
|
ubuntu-22-cmake-sycl:
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
|
|
|
|
continue-on-error: true
|
|
|
|
|
|
|
|
steps:
|
2024-09-12 11:27:45 +00:00
|
|
|
- uses: actions/checkout@v4
|
ggml : add unified SYCL backend for Intel GPUs (#2690)
* first update for migration
* update init_cublas
* add debug functio, commit all help code
* step 1
* step 2
* step3 add fp16, slower 31->28
* add GGML_LIST_DEVICE function
* step 5 format device and print
* step6, enhance error check, remove CUDA macro, enhance device id to fix none-zero id issue
* support main device is non-zero
* step7 add debug for code path, rm log
* step 8, rename all macro & func from cuda by sycl
* fix error of select non-zero device, format device list
* ren ggml-sycl.hpp -> ggml-sycl.h
* clear CMAKE to rm unused lib and options
* correct queue: rm dtct:get_queue
* add print tensor function to debug
* fix error: wrong result in 658746bb26702e50f2c59c0e4ada8e9da6010481
* summary dpct definition in one header file to replace folder:dpct
* refactor device log
* mv dpct definition from folder dpct to ggml-sycl.h
* update readme, refactor build script
* fix build with sycl
* set nthread=1 when sycl, increase performance
* add run script, comment debug code
* add ls-sycl-device tool
* add ls-sycl-device, rm unused files
* rm rear space
* dos2unix
* Update README_sycl.md
* fix return type
* remove sycl version from include path
* restore rm code to fix hang issue
* add syc and link for sycl readme
* rm original sycl code before refactor
* fix code err
* add know issue for pvc hang issue
* enable SYCL_F16 support
* align pr4766
* check for sycl blas, better performance
* cleanup 1
* remove extra endif
* add build&run script, clean CMakefile, update guide by review comments
* rename macro to intel hardware
* editor config format
* format fixes
* format fixes
* editor format fix
* Remove unused headers
* skip build sycl tool for other code path
* replace tab by space
* fix blas matmul function
* fix mac build
* restore hip dependency
* fix conflict
* ren as review comments
* mv internal function to .cpp file
* export funciton print_sycl_devices(), mv class dpct definition to source file
* update CI/action for sycl code, fix CI error of repeat/dup
* fix action ID format issue
* rm unused strategy
* enable llama_f16 in ci
* fix conflict
* fix build break on MacOS, due to CI of MacOS depend on external ggml, instead of internal ggml
* fix ci cases for unsupported data type
* revert unrelated changed in cuda cmake
remove useless nommq
fix typo of GGML_USE_CLBLAS_SYCL
* revert hip cmake changes
* fix indent
* add prefix in func name
* revert no mmq
* rm cpu blas duplicate
* fix no_new_line
* fix src1->type==F16 bug.
* pass batch offset for F16 src1
* fix batch error
* fix wrong code
* revert sycl checking in test-sampling
* pass void as arguments of ggml_backend_sycl_print_sycl_devices
* remove extra blank line in test-sampling
* revert setting n_threads in sycl
* implement std::isinf for icpx with fast math.
* Update ci/run.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* add copyright and MIT license declare
* update the cmd example
---------
Co-authored-by: jianyuzh <jianyu.zhang@intel.com>
Co-authored-by: luoyu-intel <yu.luo@intel.com>
Co-authored-by: Meng, Hengyu <hengyu.meng@intel.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-01-28 15:56:23 +00:00
|
|
|
|
|
|
|
- name: add oneAPI to apt
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
cd /tmp
|
|
|
|
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
|
|
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
|
|
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
|
|
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
|
|
|
|
|
|
|
|
- name: install oneAPI dpcpp compiler
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install intel-oneapi-compiler-dpcpp-cpp
|
|
|
|
|
|
|
|
- name: install oneAPI MKL library
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
sudo apt install intel-oneapi-mkl-devel
|
|
|
|
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
ggml : add unified SYCL backend for Intel GPUs (#2690)
* first update for migration
* update init_cublas
* add debug functio, commit all help code
* step 1
* step 2
* step3 add fp16, slower 31->28
* add GGML_LIST_DEVICE function
* step 5 format device and print
* step6, enhance error check, remove CUDA macro, enhance device id to fix none-zero id issue
* support main device is non-zero
* step7 add debug for code path, rm log
* step 8, rename all macro & func from cuda by sycl
* fix error of select non-zero device, format device list
* ren ggml-sycl.hpp -> ggml-sycl.h
* clear CMAKE to rm unused lib and options
* correct queue: rm dtct:get_queue
* add print tensor function to debug
* fix error: wrong result in 658746bb26702e50f2c59c0e4ada8e9da6010481
* summary dpct definition in one header file to replace folder:dpct
* refactor device log
* mv dpct definition from folder dpct to ggml-sycl.h
* update readme, refactor build script
* fix build with sycl
* set nthread=1 when sycl, increase performance
* add run script, comment debug code
* add ls-sycl-device tool
* add ls-sycl-device, rm unused files
* rm rear space
* dos2unix
* Update README_sycl.md
* fix return type
* remove sycl version from include path
* restore rm code to fix hang issue
* add syc and link for sycl readme
* rm original sycl code before refactor
* fix code err
* add know issue for pvc hang issue
* enable SYCL_F16 support
* align pr4766
* check for sycl blas, better performance
* cleanup 1
* remove extra endif
* add build&run script, clean CMakefile, update guide by review comments
* rename macro to intel hardware
* editor config format
* format fixes
* format fixes
* editor format fix
* Remove unused headers
* skip build sycl tool for other code path
* replace tab by space
* fix blas matmul function
* fix mac build
* restore hip dependency
* fix conflict
* ren as review comments
* mv internal function to .cpp file
* export funciton print_sycl_devices(), mv class dpct definition to source file
* update CI/action for sycl code, fix CI error of repeat/dup
* fix action ID format issue
* rm unused strategy
* enable llama_f16 in ci
* fix conflict
* fix build break on MacOS, due to CI of MacOS depend on external ggml, instead of internal ggml
* fix ci cases for unsupported data type
* revert unrelated changed in cuda cmake
remove useless nommq
fix typo of GGML_USE_CLBLAS_SYCL
* revert hip cmake changes
* fix indent
* add prefix in func name
* revert no mmq
* rm cpu blas duplicate
* fix no_new_line
* fix src1->type==F16 bug.
* pass batch offset for F16 src1
* fix batch error
* fix wrong code
* revert sycl checking in test-sampling
* pass void as arguments of ggml_backend_sycl_print_sycl_devices
* remove extra blank line in test-sampling
* revert setting n_threads in sycl
* implement std::isinf for icpx with fast math.
* Update ci/run.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* add copyright and MIT license declare
* update the cmd example
---------
Co-authored-by: jianyuzh <jianyu.zhang@intel.com>
Co-authored-by: luoyu-intel <yu.luo@intel.com>
Co-authored-by: Meng, Hengyu <hengyu.meng@intel.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-01-28 15:56:23 +00:00
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
source /opt/intel/oneapi/setvars.sh
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx ..
|
ggml : add unified SYCL backend for Intel GPUs (#2690)
* first update for migration
* update init_cublas
* add debug functio, commit all help code
* step 1
* step 2
* step3 add fp16, slower 31->28
* add GGML_LIST_DEVICE function
* step 5 format device and print
* step6, enhance error check, remove CUDA macro, enhance device id to fix none-zero id issue
* support main device is non-zero
* step7 add debug for code path, rm log
* step 8, rename all macro & func from cuda by sycl
* fix error of select non-zero device, format device list
* ren ggml-sycl.hpp -> ggml-sycl.h
* clear CMAKE to rm unused lib and options
* correct queue: rm dtct:get_queue
* add print tensor function to debug
* fix error: wrong result in 658746bb26702e50f2c59c0e4ada8e9da6010481
* summary dpct definition in one header file to replace folder:dpct
* refactor device log
* mv dpct definition from folder dpct to ggml-sycl.h
* update readme, refactor build script
* fix build with sycl
* set nthread=1 when sycl, increase performance
* add run script, comment debug code
* add ls-sycl-device tool
* add ls-sycl-device, rm unused files
* rm rear space
* dos2unix
* Update README_sycl.md
* fix return type
* remove sycl version from include path
* restore rm code to fix hang issue
* add syc and link for sycl readme
* rm original sycl code before refactor
* fix code err
* add know issue for pvc hang issue
* enable SYCL_F16 support
* align pr4766
* check for sycl blas, better performance
* cleanup 1
* remove extra endif
* add build&run script, clean CMakefile, update guide by review comments
* rename macro to intel hardware
* editor config format
* format fixes
* format fixes
* editor format fix
* Remove unused headers
* skip build sycl tool for other code path
* replace tab by space
* fix blas matmul function
* fix mac build
* restore hip dependency
* fix conflict
* ren as review comments
* mv internal function to .cpp file
* export funciton print_sycl_devices(), mv class dpct definition to source file
* update CI/action for sycl code, fix CI error of repeat/dup
* fix action ID format issue
* rm unused strategy
* enable llama_f16 in ci
* fix conflict
* fix build break on MacOS, due to CI of MacOS depend on external ggml, instead of internal ggml
* fix ci cases for unsupported data type
* revert unrelated changed in cuda cmake
remove useless nommq
fix typo of GGML_USE_CLBLAS_SYCL
* revert hip cmake changes
* fix indent
* add prefix in func name
* revert no mmq
* rm cpu blas duplicate
* fix no_new_line
* fix src1->type==F16 bug.
* pass batch offset for F16 src1
* fix batch error
* fix wrong code
* revert sycl checking in test-sampling
* pass void as arguments of ggml_backend_sycl_print_sycl_devices
* remove extra blank line in test-sampling
* revert setting n_threads in sycl
* implement std::isinf for icpx with fast math.
* Update ci/run.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* add copyright and MIT license declare
* update the cmd example
---------
Co-authored-by: jianyuzh <jianyu.zhang@intel.com>
Co-authored-by: luoyu-intel <yu.luo@intel.com>
Co-authored-by: Meng, Hengyu <hengyu.meng@intel.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-01-28 15:56:23 +00:00
|
|
|
cmake --build . --config Release -j $(nproc)
|
2024-02-08 17:09:10 +00:00
|
|
|
|
|
|
|
ubuntu-22-cmake-sycl-fp16:
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
|
|
|
|
continue-on-error: true
|
|
|
|
|
|
|
|
steps:
|
2024-09-12 11:27:45 +00:00
|
|
|
- uses: actions/checkout@v4
|
2024-02-08 17:09:10 +00:00
|
|
|
|
|
|
|
- name: add oneAPI to apt
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
cd /tmp
|
|
|
|
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
|
|
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
|
|
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
|
|
|
|
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
|
|
|
|
|
|
|
|
- name: install oneAPI dpcpp compiler
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
sudo apt update
|
|
|
|
sudo apt install intel-oneapi-compiler-dpcpp-cpp
|
|
|
|
|
|
|
|
- name: install oneAPI MKL library
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
sudo apt install intel-oneapi-mkl-devel
|
|
|
|
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-02-08 17:09:10 +00:00
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
source /opt/intel/oneapi/setvars.sh
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL_F16=ON ..
|
2024-02-08 17:09:10 +00:00
|
|
|
cmake --build . --config Release -j $(nproc)
|
ggml : add unified SYCL backend for Intel GPUs (#2690)
* first update for migration
* update init_cublas
* add debug functio, commit all help code
* step 1
* step 2
* step3 add fp16, slower 31->28
* add GGML_LIST_DEVICE function
* step 5 format device and print
* step6, enhance error check, remove CUDA macro, enhance device id to fix none-zero id issue
* support main device is non-zero
* step7 add debug for code path, rm log
* step 8, rename all macro & func from cuda by sycl
* fix error of select non-zero device, format device list
* ren ggml-sycl.hpp -> ggml-sycl.h
* clear CMAKE to rm unused lib and options
* correct queue: rm dtct:get_queue
* add print tensor function to debug
* fix error: wrong result in 658746bb26702e50f2c59c0e4ada8e9da6010481
* summary dpct definition in one header file to replace folder:dpct
* refactor device log
* mv dpct definition from folder dpct to ggml-sycl.h
* update readme, refactor build script
* fix build with sycl
* set nthread=1 when sycl, increase performance
* add run script, comment debug code
* add ls-sycl-device tool
* add ls-sycl-device, rm unused files
* rm rear space
* dos2unix
* Update README_sycl.md
* fix return type
* remove sycl version from include path
* restore rm code to fix hang issue
* add syc and link for sycl readme
* rm original sycl code before refactor
* fix code err
* add know issue for pvc hang issue
* enable SYCL_F16 support
* align pr4766
* check for sycl blas, better performance
* cleanup 1
* remove extra endif
* add build&run script, clean CMakefile, update guide by review comments
* rename macro to intel hardware
* editor config format
* format fixes
* format fixes
* editor format fix
* Remove unused headers
* skip build sycl tool for other code path
* replace tab by space
* fix blas matmul function
* fix mac build
* restore hip dependency
* fix conflict
* ren as review comments
* mv internal function to .cpp file
* export funciton print_sycl_devices(), mv class dpct definition to source file
* update CI/action for sycl code, fix CI error of repeat/dup
* fix action ID format issue
* rm unused strategy
* enable llama_f16 in ci
* fix conflict
* fix build break on MacOS, due to CI of MacOS depend on external ggml, instead of internal ggml
* fix ci cases for unsupported data type
* revert unrelated changed in cuda cmake
remove useless nommq
fix typo of GGML_USE_CLBLAS_SYCL
* revert hip cmake changes
* fix indent
* add prefix in func name
* revert no mmq
* rm cpu blas duplicate
* fix no_new_line
* fix src1->type==F16 bug.
* pass batch offset for F16 src1
* fix batch error
* fix wrong code
* revert sycl checking in test-sampling
* pass void as arguments of ggml_backend_sycl_print_sycl_devices
* remove extra blank line in test-sampling
* revert setting n_threads in sycl
* implement std::isinf for icpx with fast math.
* Update ci/run.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update examples/sycl/run-llama2.sh
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* Update CMakeLists.txt
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* add copyright and MIT license declare
* update the cmd example
---------
Co-authored-by: jianyuzh <jianyu.zhang@intel.com>
Co-authored-by: luoyu-intel <yu.luo@intel.com>
Co-authored-by: Meng, Hengyu <hengyu.meng@intel.com>
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
2024-01-28 15:56:23 +00:00
|
|
|
|
2024-06-26 15:33:02 +00:00
|
|
|
# TODO: build with GGML_NO_METAL because test-backend-ops fail on "Apple Paravirtual device" and I don't know
|
2023-12-07 20:26:54 +00:00
|
|
|
# how to debug it.
|
|
|
|
# ref: https://github.com/ggerganov/llama.cpp/actions/runs/7131777249/job/19420981052#step:5:1124
|
2023-03-17 16:38:24 +00:00
|
|
|
macOS-latest-make:
|
2023-03-17 09:47:06 +00:00
|
|
|
runs-on: macos-latest
|
2023-03-12 20:08:24 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
2023-03-18 07:27:12 +00:00
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
2023-03-18 07:27:12 +00:00
|
|
|
id: depends
|
2023-07-03 23:50:12 +00:00
|
|
|
continue-on-error: true
|
2023-03-12 20:08:24 +00:00
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: Build
|
2023-03-18 07:27:12 +00:00
|
|
|
id: make_build
|
2024-02-17 21:03:14 +00:00
|
|
|
env:
|
|
|
|
LLAMA_FATAL_WARNINGS: 1
|
2023-03-12 20:08:24 +00:00
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
GGML_NO_METAL=1 make -j $(sysctl -n hw.logicalcpu)
|
2023-03-12 20:08:24 +00:00
|
|
|
|
2023-08-30 09:42:51 +00:00
|
|
|
- name: Test
|
|
|
|
id: make_test
|
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
GGML_NO_METAL=1 make tests -j $(sysctl -n hw.logicalcpu)
|
|
|
|
GGML_NO_METAL=1 make test -j $(sysctl -n hw.logicalcpu)
|
2023-08-30 09:42:51 +00:00
|
|
|
|
2024-06-26 15:33:02 +00:00
|
|
|
# TODO: build with GGML_METAL=OFF because test-backend-ops fail on "Apple Paravirtual device" and I don't know
|
2023-12-07 20:26:54 +00:00
|
|
|
# how to debug it.
|
|
|
|
# ref: https://github.com/ggerganov/llama.cpp/actions/runs/7132125951/job/19422043567?pr=4359#step:5:6584
|
|
|
|
# would be great if we fix these
|
2023-03-17 16:38:24 +00:00
|
|
|
macOS-latest-cmake:
|
2023-05-07 11:20:09 +00:00
|
|
|
runs-on: macos-latest
|
2023-03-17 16:38:24 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
2023-03-23 02:20:34 +00:00
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-03-17 16:38:24 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
2023-03-23 02:20:34 +00:00
|
|
|
id: depends
|
2023-07-03 23:50:12 +00:00
|
|
|
continue-on-error: true
|
2023-03-17 16:38:24 +00:00
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: Build
|
2023-03-23 02:20:34 +00:00
|
|
|
id: cmake_build
|
2023-03-17 16:38:24 +00:00
|
|
|
run: |
|
2023-07-05 16:13:06 +00:00
|
|
|
sysctl -a
|
2023-03-17 16:38:24 +00:00
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -DLLAMA_FATAL_WARNINGS=ON -DGGML_METAL=OFF ..
|
2023-09-28 19:31:04 +00:00
|
|
|
cmake --build . --config Release -j $(sysctl -n hw.logicalcpu)
|
2023-03-23 02:20:34 +00:00
|
|
|
|
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
|
|
|
run: |
|
|
|
|
cd build
|
2024-01-26 12:18:00 +00:00
|
|
|
ctest -L main --verbose --timeout 900
|
2023-03-17 16:38:24 +00:00
|
|
|
|
2023-09-11 11:49:06 +00:00
|
|
|
macOS-latest-cmake-ios:
|
|
|
|
runs-on: macos-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-09-12 11:27:45 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-09-11 11:49:06 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
continue-on-error: true
|
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
sysctl -a
|
|
|
|
mkdir build
|
|
|
|
cd build
|
|
|
|
cmake -G Xcode .. \
|
2024-06-26 15:33:02 +00:00
|
|
|
-DGGML_METAL_EMBED_LIBRARY=ON \
|
2023-09-11 11:49:06 +00:00
|
|
|
-DLLAMA_BUILD_EXAMPLES=OFF \
|
|
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
|
|
-DLLAMA_BUILD_SERVER=OFF \
|
|
|
|
-DCMAKE_SYSTEM_NAME=iOS \
|
2024-06-26 15:33:02 +00:00
|
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 \
|
|
|
|
-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml
|
|
|
|
cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO
|
2023-09-11 11:49:06 +00:00
|
|
|
|
|
|
|
macOS-latest-cmake-tvos:
|
|
|
|
runs-on: macos-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-09-12 11:27:45 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-09-11 11:49:06 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
continue-on-error: true
|
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
sysctl -a
|
|
|
|
mkdir build
|
|
|
|
cd build
|
|
|
|
cmake -G Xcode .. \
|
2024-06-26 15:33:02 +00:00
|
|
|
-DGGML_METAL_EMBED_LIBRARY=ON \
|
2023-09-11 11:49:06 +00:00
|
|
|
-DLLAMA_BUILD_EXAMPLES=OFF \
|
|
|
|
-DLLAMA_BUILD_TESTS=OFF \
|
|
|
|
-DLLAMA_BUILD_SERVER=OFF \
|
|
|
|
-DCMAKE_SYSTEM_NAME=tvOS \
|
2024-06-26 15:33:02 +00:00
|
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 \
|
|
|
|
-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml
|
|
|
|
cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO
|
2023-09-11 11:49:06 +00:00
|
|
|
|
2023-10-05 13:56:21 +00:00
|
|
|
macOS-latest-swift:
|
|
|
|
runs-on: macos-latest
|
|
|
|
|
|
|
|
strategy:
|
|
|
|
matrix:
|
2023-10-06 10:36:43 +00:00
|
|
|
destination: ['generic/platform=macOS', 'generic/platform=iOS', 'generic/platform=tvOS']
|
2023-10-05 13:56:21 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-09-12 11:27:45 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-10-05 13:56:21 +00:00
|
|
|
|
|
|
|
- name: Dependencies
|
|
|
|
id: depends
|
|
|
|
continue-on-error: true
|
|
|
|
run: |
|
|
|
|
brew update
|
|
|
|
|
|
|
|
- name: xcodebuild for swift package
|
|
|
|
id: xcodebuild
|
|
|
|
run: |
|
|
|
|
xcodebuild -scheme llama -destination "${{ matrix.destination }}"
|
|
|
|
|
2023-10-11 11:14:05 +00:00
|
|
|
- name: Build Swift Example
|
|
|
|
id: make_build_swift_example
|
|
|
|
run: |
|
|
|
|
make swift
|
|
|
|
|
2024-04-29 12:59:47 +00:00
|
|
|
windows-msys2:
|
|
|
|
runs-on: windows-latest
|
|
|
|
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
include:
|
|
|
|
- { sys: UCRT64, env: ucrt-x86_64, build: Release }
|
|
|
|
- { sys: CLANG64, env: clang-x86_64, build: Release }
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
|
|
|
- name: Setup ${{ matrix.sys }}
|
|
|
|
uses: msys2/setup-msys2@v2
|
|
|
|
with:
|
|
|
|
update: true
|
|
|
|
msystem: ${{matrix.sys}}
|
|
|
|
install: >-
|
|
|
|
base-devel
|
|
|
|
mingw-w64-${{matrix.env}}-toolchain
|
|
|
|
mingw-w64-${{matrix.env}}-cmake
|
|
|
|
mingw-w64-${{matrix.env}}-openblas
|
|
|
|
|
|
|
|
- name: Build using make
|
|
|
|
shell: msys2 {0}
|
|
|
|
run: |
|
|
|
|
make -j $(nproc)
|
|
|
|
|
|
|
|
- name: Clean after building using make
|
|
|
|
shell: msys2 {0}
|
|
|
|
run: |
|
|
|
|
make clean
|
|
|
|
|
|
|
|
- name: Build using make w/ OpenBLAS
|
|
|
|
shell: msys2 {0}
|
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
make GGML_OPENBLAS=1 -j $(nproc)
|
2024-04-29 12:59:47 +00:00
|
|
|
|
|
|
|
- name: Build using CMake
|
|
|
|
shell: msys2 {0}
|
|
|
|
run: |
|
|
|
|
cmake -B build
|
|
|
|
cmake --build build --config ${{ matrix.build }} -j $(nproc)
|
|
|
|
|
|
|
|
- name: Clean after building using CMake
|
|
|
|
shell: msys2 {0}
|
|
|
|
run: |
|
|
|
|
rm -rf build
|
|
|
|
|
|
|
|
- name: Build using CMake w/ OpenBLAS
|
|
|
|
shell: msys2 {0}
|
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS
|
2024-04-29 12:59:47 +00:00
|
|
|
cmake --build build --config ${{ matrix.build }} -j $(nproc)
|
|
|
|
|
2023-03-17 16:38:24 +00:00
|
|
|
windows-latest-cmake:
|
2024-06-11 05:59:20 +00:00
|
|
|
runs-on: windows-2019
|
2023-07-07 16:24:01 +00:00
|
|
|
|
2023-05-07 11:20:09 +00:00
|
|
|
env:
|
|
|
|
OPENBLAS_VERSION: 0.3.23
|
2024-01-22 08:55:05 +00:00
|
|
|
SDE_VERSION: 9.33.0-2024-01-07
|
2024-01-29 20:50:50 +00:00
|
|
|
VULKAN_VERSION: 1.3.261.1
|
2023-03-13 20:29:10 +00:00
|
|
|
|
2023-03-25 21:38:11 +00:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'noavx-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'avx2-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'avx-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_AVX2=OFF -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'avx512-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_AVX512=ON -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'openblas-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_BLAS=ON -DBUILD_SHARED_LIBS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'kompute-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_KOMPUTE=ON -DKOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK=ON -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'vulkan-x64'
|
2024-08-12 16:17:03 +00:00
|
|
|
defines: '-DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_VULKAN=ON -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'llvm-arm64'
|
2024-06-26 15:33:02 +00:00
|
|
|
defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON'
|
2024-05-16 02:47:36 +00:00
|
|
|
- build: 'msvc-arm64'
|
2024-06-26 15:33:02 +00:00
|
|
|
defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-msvc.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=ON'
|
2023-03-25 21:38:11 +00:00
|
|
|
|
2023-03-13 20:29:10 +00:00
|
|
|
steps:
|
|
|
|
- name: Clone
|
2023-03-18 07:27:12 +00:00
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-09-15 19:18:15 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2023-03-13 20:29:10 +00:00
|
|
|
|
2024-01-29 20:50:50 +00:00
|
|
|
- name: Clone Kompute submodule
|
|
|
|
id: clone_kompute
|
2024-05-16 02:47:36 +00:00
|
|
|
if: ${{ matrix.build == 'kompute-x64' }}
|
2024-01-29 20:50:50 +00:00
|
|
|
run: |
|
2024-06-26 15:33:02 +00:00
|
|
|
git submodule update --init ggml/src/kompute
|
2024-01-29 20:50:50 +00:00
|
|
|
|
2023-05-07 11:20:09 +00:00
|
|
|
- name: Download OpenBLAS
|
|
|
|
id: get_openblas
|
2024-05-16 02:47:36 +00:00
|
|
|
if: ${{ matrix.build == 'openblas-x64' }}
|
2023-05-07 11:20:09 +00:00
|
|
|
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
|
|
|
|
|
2024-01-29 20:50:50 +00:00
|
|
|
- name: Install Vulkan SDK
|
|
|
|
id: get_vulkan
|
2024-05-16 02:47:36 +00:00
|
|
|
if: ${{ matrix.build == 'kompute-x64' || matrix.build == 'vulkan-x64' }}
|
2024-01-29 20:50:50 +00:00
|
|
|
run: |
|
|
|
|
curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe"
|
|
|
|
& "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install
|
|
|
|
Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}"
|
|
|
|
Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin"
|
|
|
|
|
2024-05-16 02:47:36 +00:00
|
|
|
- name: Install Ninja
|
|
|
|
id: install_ninja
|
|
|
|
run: |
|
|
|
|
choco install ninja
|
|
|
|
|
2023-03-13 20:29:10 +00:00
|
|
|
- name: Build
|
2023-03-18 07:27:12 +00:00
|
|
|
id: cmake_build
|
2023-03-13 20:29:10 +00:00
|
|
|
run: |
|
2024-05-16 02:47:36 +00:00
|
|
|
cmake -S . -B build ${{ matrix.defines }}
|
|
|
|
cmake --build build --config Release -j ${env:NUMBER_OF_PROCESSORS}
|
2023-05-07 11:20:09 +00:00
|
|
|
|
|
|
|
- name: Add libopenblas.dll
|
|
|
|
id: add_libopenblas_dll
|
2024-05-16 02:47:36 +00:00
|
|
|
if: ${{ matrix.build == 'openblas-x64' }}
|
2023-05-07 11:20:09 +00:00
|
|
|
run: |
|
|
|
|
cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build/bin/Release/openblas.dll
|
|
|
|
cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt
|
2023-03-23 02:20:34 +00:00
|
|
|
|
2023-03-25 21:38:11 +00:00
|
|
|
- name: Check AVX512F support
|
|
|
|
id: check_avx512f
|
2024-05-16 02:47:36 +00:00
|
|
|
if: ${{ matrix.build == 'avx512-x64' }}
|
2023-03-25 21:38:11 +00:00
|
|
|
continue-on-error: true
|
|
|
|
run: |
|
2023-03-29 20:44:39 +00:00
|
|
|
cd build
|
|
|
|
$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()))
|
|
|
|
$cl = $(join-path $msvc 'bin\Hostx64\x64\cl.exe')
|
|
|
|
echo 'int main(void){unsigned int a[4];__cpuid(a,7);return !(a[1]&65536);}' >> avx512f.c
|
|
|
|
& $cl /O2 /GS- /kernel avx512f.c /link /nodefaultlib /entry:main
|
|
|
|
.\avx512f.exe && echo "AVX512F: YES" && ( echo HAS_AVX512F=1 >> $env:GITHUB_ENV ) || echo "AVX512F: NO"
|
2023-03-25 21:38:11 +00:00
|
|
|
|
2023-03-23 02:20:34 +00:00
|
|
|
- name: Test
|
|
|
|
id: cmake_test
|
2024-01-29 20:50:50 +00:00
|
|
|
# not all machines have native AVX-512
|
2024-06-04 18:23:20 +00:00
|
|
|
if: ${{ matrix.build != 'msvc-arm64' && matrix.build != 'llvm-arm64' && matrix.build != 'kompute-x64' && matrix.build != 'vulkan-x64' && (matrix.build != 'avx512-x64' || env.HAS_AVX512F == '1') }}
|
2023-03-23 02:20:34 +00:00
|
|
|
run: |
|
|
|
|
cd build
|
2024-01-26 12:18:00 +00:00
|
|
|
ctest -L main -C Release --verbose --timeout 900
|
2023-03-13 20:29:10 +00:00
|
|
|
|
2023-11-05 07:46:44 +00:00
|
|
|
- name: Test (Intel SDE)
|
|
|
|
id: cmake_test_sde
|
2024-05-16 02:47:36 +00:00
|
|
|
if: ${{ matrix.build == 'avx512-x64' && env.HAS_AVX512F == '0' }} # use Intel SDE for AVX-512 emulation
|
2023-11-05 07:46:44 +00:00
|
|
|
run: |
|
2024-01-22 08:55:05 +00:00
|
|
|
curl.exe -o $env:RUNNER_TEMP/sde.tar.xz -L "https://downloadmirror.intel.com/813591/sde-external-${env:SDE_VERSION}-win.tar.xz"
|
2023-11-05 07:46:44 +00:00
|
|
|
# for some weird reason windows tar doesn't like sde tar.xz
|
|
|
|
7z x "-o${env:RUNNER_TEMP}" $env:RUNNER_TEMP/sde.tar.xz
|
|
|
|
7z x "-o${env:RUNNER_TEMP}" $env:RUNNER_TEMP/sde.tar
|
|
|
|
$sde = $(join-path $env:RUNNER_TEMP sde-external-${env:SDE_VERSION}-win/sde.exe)
|
|
|
|
cd build
|
2024-06-28 17:02:05 +00:00
|
|
|
$env:LLAMA_SKIP_TESTS_SLOW_ON_EMULATOR = 1
|
2024-01-26 12:18:00 +00:00
|
|
|
& $sde -future -- ctest -L main -C Release --verbose --timeout 900
|
2023-11-05 07:46:44 +00:00
|
|
|
|
2023-08-24 13:58:02 +00:00
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
2023-03-18 07:27:12 +00:00
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
run: |
|
2023-05-27 14:24:06 +00:00
|
|
|
Copy-Item LICENSE .\build\bin\Release\llama.cpp.txt
|
2024-05-16 02:47:36 +00:00
|
|
|
7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip .\build\bin\Release\*
|
2023-03-25 21:38:11 +00:00
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-03-25 21:38:11 +00:00
|
|
|
with:
|
2024-05-16 02:47:36 +00:00
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}.zip
|
|
|
|
name: llama-bin-win-${{ matrix.build }}.zip
|
2023-03-25 21:38:11 +00:00
|
|
|
|
2024-03-26 00:16:01 +00:00
|
|
|
windows-latest-cmake-cuda:
|
2024-06-11 05:59:20 +00:00
|
|
|
runs-on: windows-2019
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
strategy:
|
|
|
|
matrix:
|
2023-09-14 17:21:25 +00:00
|
|
|
cuda: ['12.2.0', '11.7.1']
|
2024-03-26 00:16:01 +00:00
|
|
|
build: ['cuda']
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-09-15 19:18:15 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2023-05-05 20:56:09 +00:00
|
|
|
|
2024-06-11 05:59:20 +00:00
|
|
|
- name: Install CUDA toolkit
|
2023-05-05 20:56:09 +00:00
|
|
|
id: cuda-toolkit
|
2024-06-11 05:59:20 +00:00
|
|
|
uses: Jimver/cuda-toolkit@v0.2.15
|
2023-05-05 20:56:09 +00:00
|
|
|
with:
|
|
|
|
cuda: ${{ matrix.cuda }}
|
2023-09-18 00:21:47 +00:00
|
|
|
method: 'network'
|
2023-09-14 17:21:25 +00:00
|
|
|
sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]'
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
mkdir build
|
|
|
|
cd build
|
2024-09-05 22:34:36 +00:00
|
|
|
cmake .. -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=ON -DGGML_RPC=ON
|
2024-07-28 20:32:44 +00:00
|
|
|
cmake --build . --config Release -j $((${env:NUMBER_OF_PROCESSORS} - 1)) -t ggml
|
|
|
|
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
|
2023-05-05 20:56:09 +00:00
|
|
|
|
2023-08-24 13:58:02 +00:00
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
run: |
|
2023-08-24 13:58:02 +00:00
|
|
|
7z a llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip .\build\bin\Release\*
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-05-05 20:56:09 +00:00
|
|
|
with:
|
2024-04-04 15:08:55 +00:00
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-win-${{ matrix.build }}-cu${{ matrix.cuda }}-x64.zip
|
|
|
|
name: llama-bin-win-cu${{ matrix.cuda }}-x64.zip
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
- name: Copy and pack Cuda runtime
|
|
|
|
run: |
|
|
|
|
echo "Cuda install location: ${{steps.cuda-toolkit.outputs.CUDA_PATH}}"
|
2023-09-14 17:21:25 +00:00
|
|
|
$dst='.\build\bin\cudart\'
|
|
|
|
robocopy "${{steps.cuda-toolkit.outputs.CUDA_PATH}}\bin" $dst cudart64_*.dll cublas64_*.dll cublasLt64_*.dll
|
|
|
|
7z a cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip $dst\*
|
2023-05-05 20:56:09 +00:00
|
|
|
|
|
|
|
- name: Upload Cuda runtime
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/upload-artifact@v4
|
2023-05-05 20:56:09 +00:00
|
|
|
with:
|
2024-04-04 15:08:55 +00:00
|
|
|
path: cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip
|
|
|
|
name: cudart-llama-bin-win-cu${{ matrix.cuda }}-x64.zip
|
2023-05-05 20:56:09 +00:00
|
|
|
|
2024-01-31 02:38:07 +00:00
|
|
|
windows-latest-cmake-sycl:
|
|
|
|
runs-on: windows-latest
|
2024-03-24 01:44:01 +00:00
|
|
|
|
2024-01-31 02:38:07 +00:00
|
|
|
defaults:
|
|
|
|
run:
|
|
|
|
shell: bash
|
|
|
|
|
|
|
|
env:
|
2024-05-13 00:02:55 +00:00
|
|
|
WINDOWS_BASEKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7dff44ba-e3af-4448-841c-0d616c8da6e7/w_BaseKit_p_2024.1.0.595_offline.exe
|
2024-01-31 02:38:07 +00:00
|
|
|
WINDOWS_DPCPP_MKL: intel.oneapi.win.cpp-dpcpp-common:intel.oneapi.win.mkl.devel
|
2024-05-13 00:04:29 +00:00
|
|
|
ONEAPI_ROOT: "C:/Program Files (x86)/Intel/oneAPI"
|
2024-01-31 02:38:07 +00:00
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-01-31 02:38:07 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
|
|
|
|
|
|
|
- name: Install
|
|
|
|
run: scripts/install-oneapi.bat $WINDOWS_BASEKIT_URL $WINDOWS_DPCPP_MKL
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: examples/sycl/win-build-sycl.bat
|
|
|
|
|
2024-03-24 01:44:01 +00:00
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
run: |
|
2024-05-13 00:04:29 +00:00
|
|
|
echo "cp oneAPI running time dll files in ${{ env.ONEAPI_ROOT }} to ./build/bin"
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_sycl_blas.4.dll" ./build/bin
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_core.2.dll" ./build/bin
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/mkl/latest/bin/mkl_tbb_thread.2.dll" ./build/bin
|
|
|
|
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/pi_win_proxy_loader.dll" ./build/bin
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/pi_level_zero.dll" ./build/bin
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/sycl7.dll" ./build/bin
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/svml_dispmd.dll" ./build/bin
|
|
|
|
cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/libmmd.dll" ./build/bin
|
2024-09-26 09:38:31 +00:00
|
|
|
cp "${{ env.ONEAPI_ROOT }}/compiler/latest/bin/libiomp5md.dll" ./build/bin
|
2024-05-13 00:04:29 +00:00
|
|
|
echo "cp oneAPI running time dll files to ./build/bin done"
|
2024-03-27 01:47:06 +00:00
|
|
|
7z a llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip ./build/bin/*
|
2024-03-24 01:44:01 +00:00
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/upload-artifact@v4
|
2024-03-24 01:44:01 +00:00
|
|
|
with:
|
2024-04-04 15:08:55 +00:00
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-win-sycl-x64.zip
|
|
|
|
name: llama-bin-win-sycl-x64.zip
|
2024-03-24 01:44:01 +00:00
|
|
|
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
windows-latest-cmake-hip:
|
2024-09-21 00:39:41 +00:00
|
|
|
if: ${{ github.event.inputs.create_release != 'true' }}
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
runs-on: windows-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-09-12 11:27:45 +00:00
|
|
|
uses: actions/checkout@v4
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
|
|
|
|
- name: Install
|
|
|
|
id: depends
|
|
|
|
run: |
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
write-host "Downloading AMD HIP SDK Installer"
|
2024-09-12 11:28:43 +00:00
|
|
|
Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q3-WinSvr2022-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe"
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
write-host "Installing AMD HIP SDK"
|
|
|
|
Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -Wait
|
|
|
|
write-host "Completed AMD HIP SDK installation"
|
|
|
|
|
|
|
|
- name: Verify ROCm
|
|
|
|
id: verify
|
|
|
|
run: |
|
|
|
|
& 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' --version
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
$env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)
|
|
|
|
$env:CMAKE_PREFIX_PATH="${env:HIP_PATH}"
|
2024-09-21 00:39:41 +00:00
|
|
|
cmake -G "Unix Makefiles" -B build -S . -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" -DGGML_HIPBLAS=ON -DCMAKE_BUILD_TYPE=Release -DGGML_RPC=ON
|
|
|
|
cmake --build build -j ${env:NUMBER_OF_PROCESSORS}
|
|
|
|
|
|
|
|
windows-latest-cmake-hip-release:
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
runs-on: windows-latest
|
|
|
|
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
gpu_target: [gfx1100, gfx1101, gfx1030]
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
|
|
|
- name: Install
|
|
|
|
id: depends
|
|
|
|
run: |
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
write-host "Downloading AMD HIP SDK Installer"
|
|
|
|
Invoke-WebRequest -Uri "https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-24.Q3-WinSvr2022-For-HIP.exe" -OutFile "${env:RUNNER_TEMP}\rocm-install.exe"
|
|
|
|
write-host "Installing AMD HIP SDK"
|
|
|
|
Start-Process "${env:RUNNER_TEMP}\rocm-install.exe" -ArgumentList '-install' -NoNewWindow -Wait
|
|
|
|
write-host "Completed AMD HIP SDK installation"
|
|
|
|
|
|
|
|
- name: Verify ROCm
|
|
|
|
id: verify
|
|
|
|
run: |
|
|
|
|
& 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' --version
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
id: cmake_build
|
|
|
|
run: |
|
|
|
|
$env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)
|
|
|
|
$env:CMAKE_PREFIX_PATH="${env:HIP_PATH}"
|
|
|
|
cmake -G "Unix Makefiles" -B build -S . -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" -DGGML_HIPBLAS=ON -DCMAKE_BUILD_TYPE=Release -DGPU_TARGETS=${{ matrix.gpu_target }} -DGGML_RPC=ON
|
|
|
|
cmake --build build -j ${env:NUMBER_OF_PROCESSORS}
|
|
|
|
md "build\bin\rocblas\library\"
|
|
|
|
cp "${env:HIP_PATH}\bin\hipblas.dll" "build\bin\"
|
|
|
|
cp "${env:HIP_PATH}\bin\rocblas.dll" "build\bin\"
|
|
|
|
cp "${env:HIP_PATH}\bin\rocblas\library\*" "build\bin\rocblas\library\"
|
|
|
|
|
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
|
|
|
|
|
|
|
- name: Pack artifacts
|
|
|
|
id: pack_artifacts
|
|
|
|
run: |
|
|
|
|
7z a llama-${{ steps.tag.outputs.name }}-bin-win-hip-x64-${{ matrix.gpu_target }}.zip .\build\bin\*
|
|
|
|
|
|
|
|
- name: Upload artifacts
|
|
|
|
uses: actions/upload-artifact@v4
|
|
|
|
with:
|
|
|
|
path: llama-${{ steps.tag.outputs.name }}-bin-win-hip-x64-${{ matrix.gpu_target }}.zip
|
|
|
|
name: llama-bin-win-hip-x64-${{ matrix.gpu_target }}.zip
|
ROCm: use native CMake HIP support (#5966)
Supercedes #4024 and #4813.
CMake's native HIP support has become the
recommended way to add HIP code into a project (see
[here](https://rocm.docs.amd.com/en/docs-6.0.0/conceptual/cmake-packages.html#using-hip-in-cmake)).
This PR makes the following changes:
1. The environment variable `HIPCXX` or CMake option
`CMAKE_HIP_COMPILER` should be used to specify the HIP
compiler. Notably this shouldn't be `hipcc`, but ROCm's clang,
which usually resides in `$ROCM_PATH/llvm/bin/clang`. Previously
this was control by `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER`.
Note that since native CMake HIP support is not yet available on
Windows, on Windows we fall back to the old behavior.
2. CMake option `CMAKE_HIP_ARCHITECTURES` is used to control the
GPU architectures to build for. Previously this was controled by
`GPU_TARGETS`.
3. Updated the Nix recipe to account for these new changes.
4. The GPU targets to build against in the Nix recipe is now
consistent with the supported GPU targets in nixpkgs.
5. Added CI checks for HIP on both Linux and Windows. On Linux, we test
both the new and old behavior.
The most important part about this PR is the separation of the
HIP compiler and the C/C++ compiler. This allows users to choose
a different C/C++ compiler if desired, compared to the current
situation where when building for ROCm support, everything must be
compiled with ROCm's clang.
~~Makefile is unchanged. Please let me know if we want to be
consistent on variables' naming because Makefile still uses
`GPU_TARGETS` to control architectures to build for, but I feel
like setting `CMAKE_HIP_ARCHITECTURES` is a bit awkward when you're
calling `make`.~~ Makefile used `GPU_TARGETS` but the README says
to use `AMDGPU_TARGETS`. For consistency with CMake, all usage of
`GPU_TARGETS` in Makefile has been updated to `AMDGPU_TARGETS`.
Thanks to the suggestion of @jin-eld, to maintain backwards
compatibility (and not break too many downstream users' builds), if
`CMAKE_CXX_COMPILER` ends with `hipcc`, then we still compile using
the original behavior and emit a warning that recommends switching
to the new HIP support. Similarly, if `AMDGPU_TARGETS` is set but
`CMAKE_HIP_ARCHITECTURES` is not, then we forward `AMDGPU_TARGETS`
to `CMAKE_HIP_ARCHITECTURES` to ease the transition to the new
HIP support.
Signed-off-by: Gavin Zhao <git@gzgz.dev>
2024-05-17 15:03:03 +00:00
|
|
|
|
2023-11-27 14:56:52 +00:00
|
|
|
ios-xcode-build:
|
|
|
|
runs-on: macos-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Checkout code
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-11-27 14:56:52 +00:00
|
|
|
|
|
|
|
- name: Build Xcode project
|
|
|
|
run: xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' build
|
|
|
|
|
2024-01-16 13:47:34 +00:00
|
|
|
android-build:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2024-01-16 13:47:34 +00:00
|
|
|
|
|
|
|
- name: Set up JDK
|
|
|
|
uses: actions/setup-java@v3
|
|
|
|
with:
|
|
|
|
java-version: 17
|
|
|
|
distribution: zulu
|
|
|
|
|
|
|
|
- name: Setup Android SDK
|
|
|
|
uses: android-actions/setup-android@v3
|
|
|
|
with:
|
|
|
|
log-accepted-android-sdk-licenses: false
|
|
|
|
|
|
|
|
- name: Build
|
|
|
|
run: |
|
|
|
|
cd examples/llama.android
|
|
|
|
|
2024-02-25 18:43:00 +00:00
|
|
|
./gradlew build --no-daemon
|
2024-01-16 13:47:34 +00:00
|
|
|
|
2023-09-28 16:36:36 +00:00
|
|
|
# freeBSD-latest:
|
|
|
|
# runs-on: macos-12
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-09-28 16:36:36 +00:00
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# uses: cross-platform-actions/action@v0.19.0
|
|
|
|
# with:
|
|
|
|
# operating_system: freebsd
|
|
|
|
# version: '13.2'
|
|
|
|
# hypervisor: 'qemu'
|
|
|
|
# run: |
|
|
|
|
# sudo pkg update
|
2024-06-04 18:23:20 +00:00
|
|
|
# sudo pkg install -y gmake automake autoconf pkgconf llvm15 openblas
|
2023-09-28 19:31:04 +00:00
|
|
|
# gmake CC=/usr/local/bin/clang15 CXX=/usr/local/bin/clang++15 -j `sysctl -n hw.ncpu`
|
2023-09-14 17:21:25 +00:00
|
|
|
|
2023-03-25 21:38:11 +00:00
|
|
|
release:
|
|
|
|
if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true' }}
|
|
|
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
needs:
|
2023-04-24 15:38:26 +00:00
|
|
|
- ubuntu-focal-make
|
2023-03-25 21:38:11 +00:00
|
|
|
- ubuntu-latest-cmake
|
|
|
|
- macOS-latest-make
|
|
|
|
- macOS-latest-cmake
|
|
|
|
- windows-latest-cmake
|
2024-03-26 00:16:01 +00:00
|
|
|
- windows-latest-cmake-cuda
|
2024-09-21 00:39:41 +00:00
|
|
|
- windows-latest-cmake-hip-release
|
2024-03-21 09:13:12 +00:00
|
|
|
- macOS-latest-cmake-arm64
|
|
|
|
- macOS-latest-cmake-x64
|
2023-03-25 21:38:11 +00:00
|
|
|
|
|
|
|
steps:
|
2023-08-24 13:58:02 +00:00
|
|
|
- name: Clone
|
|
|
|
id: checkout
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/checkout@v4
|
2023-09-15 19:18:15 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2023-08-24 13:58:02 +00:00
|
|
|
|
|
|
|
- name: Determine tag name
|
|
|
|
id: tag
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
BUILD_NUMBER="$(git rev-list --count HEAD)"
|
|
|
|
SHORT_HASH="$(git rev-parse --short=7 HEAD)"
|
|
|
|
if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then
|
|
|
|
echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT
|
|
|
|
else
|
|
|
|
SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-')
|
|
|
|
echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT
|
|
|
|
fi
|
|
|
|
|
2023-03-25 21:38:11 +00:00
|
|
|
- name: Download artifacts
|
|
|
|
id: download-artifact
|
2024-04-03 18:01:13 +00:00
|
|
|
uses: actions/download-artifact@v4
|
2024-04-11 17:52:21 +00:00
|
|
|
with:
|
|
|
|
path: ./artifact
|
|
|
|
|
|
|
|
- name: Move artifacts
|
|
|
|
id: move_artifacts
|
|
|
|
run: mkdir -p ./artifact/release && mv ./artifact/*/*.zip ./artifact/release
|
2023-03-25 21:38:11 +00:00
|
|
|
|
2023-03-18 07:27:12 +00:00
|
|
|
- name: Create release
|
|
|
|
id: create_release
|
2023-03-25 21:38:11 +00:00
|
|
|
uses: anzz1/action-create-release@v1
|
2023-03-18 07:27:12 +00:00
|
|
|
env:
|
|
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
with:
|
2023-08-24 13:58:02 +00:00
|
|
|
tag_name: ${{ steps.tag.outputs.name }}
|
2023-03-18 07:27:12 +00:00
|
|
|
|
|
|
|
- name: Upload release
|
|
|
|
id: upload_release
|
2023-03-25 21:38:11 +00:00
|
|
|
uses: actions/github-script@v3
|
2023-03-18 07:27:12 +00:00
|
|
|
with:
|
2023-03-25 21:38:11 +00:00
|
|
|
github-token: ${{secrets.GITHUB_TOKEN}}
|
|
|
|
script: |
|
|
|
|
const path = require('path');
|
|
|
|
const fs = require('fs');
|
|
|
|
const release_id = '${{ steps.create_release.outputs.id }}';
|
2024-04-11 17:52:21 +00:00
|
|
|
for (let file of await fs.readdirSync('./artifact/release')) {
|
2023-03-25 21:38:11 +00:00
|
|
|
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,
|
2024-04-11 17:52:21 +00:00
|
|
|
data: await fs.readFileSync(`./artifact/release/${file}`)
|
2023-03-25 21:38:11 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
2023-03-18 07:27:12 +00:00
|
|
|
|
2023-03-12 20:08:24 +00:00
|
|
|
# ubuntu-latest-gcc:
|
|
|
|
# runs-on: ubuntu-latest
|
|
|
|
#
|
|
|
|
# strategy:
|
|
|
|
# matrix:
|
|
|
|
# build: [Debug, Release]
|
|
|
|
#
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
#
|
|
|
|
# - name: Dependencies
|
|
|
|
# run: |
|
|
|
|
# sudo apt-get update
|
|
|
|
# sudo apt-get install build-essential
|
|
|
|
# sudo apt-get install cmake
|
|
|
|
#
|
|
|
|
# - name: Configure
|
|
|
|
# run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# run: |
|
|
|
|
# make
|
|
|
|
#
|
|
|
|
# ubuntu-latest-clang:
|
|
|
|
# runs-on: ubuntu-latest
|
|
|
|
#
|
|
|
|
# strategy:
|
|
|
|
# matrix:
|
|
|
|
# build: [Debug, Release]
|
|
|
|
#
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
#
|
|
|
|
# - name: Dependencies
|
|
|
|
# run: |
|
|
|
|
# sudo apt-get update
|
|
|
|
# sudo apt-get install build-essential
|
|
|
|
# sudo apt-get install cmake
|
|
|
|
#
|
|
|
|
# - name: Configure
|
|
|
|
# run: cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
|
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# run: |
|
|
|
|
# make
|
|
|
|
#
|
|
|
|
# ubuntu-latest-gcc-sanitized:
|
|
|
|
# runs-on: ubuntu-latest
|
|
|
|
#
|
|
|
|
# strategy:
|
|
|
|
# matrix:
|
|
|
|
# sanitizer: [ADDRESS, THREAD, UNDEFINED]
|
|
|
|
#
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
#
|
|
|
|
# - name: Dependencies
|
|
|
|
# run: |
|
|
|
|
# sudo apt-get update
|
|
|
|
# sudo apt-get install build-essential
|
|
|
|
# sudo apt-get install cmake
|
|
|
|
#
|
|
|
|
# - name: Configure
|
|
|
|
# run: cmake . -DCMAKE_BUILD_TYPE=Debug -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON
|
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# run: |
|
|
|
|
# make
|
|
|
|
#
|
|
|
|
# windows:
|
|
|
|
# runs-on: windows-latest
|
|
|
|
#
|
|
|
|
# strategy:
|
|
|
|
# matrix:
|
|
|
|
# build: [Release]
|
|
|
|
# arch: [Win32, x64]
|
|
|
|
# include:
|
|
|
|
# - arch: Win32
|
|
|
|
# s2arc: x86
|
|
|
|
# - arch: x64
|
|
|
|
# s2arc: x64
|
|
|
|
#
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
#
|
|
|
|
# - name: Add msbuild to PATH
|
|
|
|
# uses: microsoft/setup-msbuild@v1
|
|
|
|
#
|
|
|
|
# - name: Configure
|
|
|
|
# run: >
|
|
|
|
# cmake -S . -B ./build -A ${{ matrix.arch }}
|
|
|
|
# -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# run: |
|
|
|
|
# cd ./build
|
|
|
|
# msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }}
|
|
|
|
#
|
|
|
|
# - name: Upload binaries
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/upload-artifact@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
# with:
|
|
|
|
# name: llama-bin-${{ matrix.arch }}
|
|
|
|
# path: build/bin/${{ matrix.build }}
|
|
|
|
#
|
|
|
|
# windows-blas:
|
|
|
|
# runs-on: windows-latest
|
|
|
|
#
|
|
|
|
# strategy:
|
|
|
|
# matrix:
|
|
|
|
# build: [Release]
|
|
|
|
# arch: [Win32, x64]
|
|
|
|
# blas: [ON]
|
|
|
|
# include:
|
|
|
|
# - arch: Win32
|
|
|
|
# obzip: https://github.com/xianyi/OpenBLAS/releases/download/v0.3.21/OpenBLAS-0.3.21-x86.zip
|
|
|
|
# s2arc: x86
|
|
|
|
# - arch: x64
|
|
|
|
# obzip: https://github.com/xianyi/OpenBLAS/releases/download/v0.3.21/OpenBLAS-0.3.21-x64.zip
|
|
|
|
# s2arc: x64
|
|
|
|
#
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
#
|
|
|
|
# - name: Add msbuild to PATH
|
|
|
|
# uses: microsoft/setup-msbuild@v1
|
|
|
|
#
|
|
|
|
# - name: Fetch OpenBLAS
|
|
|
|
# if: matrix.blas == 'ON'
|
|
|
|
# run: |
|
|
|
|
# C:/msys64/usr/bin/wget.exe -qO blas.zip ${{ matrix.obzip }}
|
|
|
|
# 7z x blas.zip -oblas -y
|
|
|
|
# copy blas/include/cblas.h .
|
|
|
|
# copy blas/include/openblas_config.h .
|
|
|
|
# echo "blasdir=$env:GITHUB_WORKSPACE/blas" >> $env:GITHUB_ENV
|
|
|
|
#
|
|
|
|
# - name: Configure
|
|
|
|
# run: >
|
|
|
|
# cmake -S . -B ./build -A ${{ matrix.arch }}
|
|
|
|
# -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
# -DLLAMA_SUPPORT_OPENBLAS=${{ matrix.blas }}
|
|
|
|
# -DCMAKE_LIBRARY_PATH="$env:blasdir/lib"
|
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# run: |
|
|
|
|
# cd ./build
|
|
|
|
# msbuild ALL_BUILD.vcxproj -t:build -p:configuration=${{ matrix.build }} -p:platform=${{ matrix.arch }}
|
|
|
|
#
|
|
|
|
# - name: Copy libopenblas.dll
|
|
|
|
# if: matrix.blas == 'ON'
|
|
|
|
# run: copy "$env:blasdir/bin/libopenblas.dll" build/bin/${{ matrix.build }}
|
|
|
|
#
|
|
|
|
# - name: Upload binaries
|
|
|
|
# if: matrix.blas == 'ON'
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/upload-artifact@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
# with:
|
|
|
|
# name: llama-blas-bin-${{ matrix.arch }}
|
|
|
|
# path: build/bin/${{ matrix.build }}
|
|
|
|
#
|
|
|
|
# emscripten:
|
|
|
|
# runs-on: ubuntu-latest
|
|
|
|
#
|
|
|
|
# strategy:
|
|
|
|
# matrix:
|
|
|
|
# build: [Release]
|
|
|
|
#
|
|
|
|
# steps:
|
|
|
|
# - name: Clone
|
2024-04-03 18:01:13 +00:00
|
|
|
# uses: actions/checkout@v4
|
2023-03-12 20:08:24 +00:00
|
|
|
#
|
|
|
|
# - name: Dependencies
|
|
|
|
# run: |
|
|
|
|
# wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz
|
|
|
|
# tar -xvf master.tar.gz
|
|
|
|
# emsdk-master/emsdk update
|
|
|
|
# emsdk-master/emsdk install latest
|
|
|
|
# emsdk-master/emsdk activate latest
|
|
|
|
#
|
|
|
|
# - name: Configure
|
|
|
|
# run: echo "tmp"
|
|
|
|
#
|
|
|
|
# - name: Build
|
|
|
|
# run: |
|
|
|
|
# pushd emsdk-master
|
|
|
|
# source ./emsdk_env.sh
|
|
|
|
# popd
|
|
|
|
# emcmake cmake . -DCMAKE_BUILD_TYPE=${{ matrix.build }}
|
|
|
|
# make
|