+++ /dev/null
-node('x86_runner1'){ // Running on x86 runner containing latest vector qemu, latest vector gcc and all the necessary libraries
- stage('Cleanup'){
- cleanWs() // Cleaning previous CI build in workspace
- }
- stage('checkout repo'){
- retry(5){ // Retry if the cloning fails due to some reason
- checkout scm // Clone the repo on Runner
- }
- }
- stage('Compiling llama.cpp'){
- sh'''#!/bin/bash
- make RISCV=1 RISCV_CROSS_COMPILE=1 # Compiling llama for RISC-V
- '''
- }
- stage('Running llama.cpp'){
- sh'''#!/bin/bash
- module load gnu-bin2/0.1 # loading latest versions of vector qemu and vector gcc
- qemu-riscv64 -L /softwares/gnu-bin2/sysroot -cpu rv64,v=true,vlen=256,elen=64,vext_spec=v1.0 ./llama-cli -m /home/alitariq/codellama-7b.Q4_K_M.gguf -p "Anything" -n 9 > llama_log.txt # Running llama.cpp on vector qemu-riscv64
- cat llama_log.txt # Printing results
- '''
- }
-}
--- /dev/null
+name: Build on RISCV Linux Machine by Cloud-V
+on:
+ workflow_dispatch:
+ workflow_call:
+
+jobs:
+ bianbu-riscv64-native: # Bianbu 2.2
+ runs-on: self-hosted
+
+ steps:
+ - name: Install prerequisites
+ run: |
+ sudo apt-get update || true
+ sudo apt-get install -y libatomic1
+ - uses: actions/checkout@v4
+ - name: Setup Riscv
+ run: |
+ sudo apt-get update || true
+ sudo apt-get install -y --no-install-recommends \
+ build-essential \
+ gcc-14-riscv64-linux-gnu \
+ g++-14-riscv64-linux-gnu \
+ cmake
+
+ - name: Build
+ run: |
+ cmake -B build -DLLAMA_CURL=OFF \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DGGML_OPENMP=OFF \
+ -DLLAMA_BUILD_EXAMPLES=ON \
+ -DLLAMA_BUILD_TOOLS=ON \
+ -DLLAMA_BUILD_TESTS=OFF \
+ -DCMAKE_SYSTEM_NAME=Linux \
+ -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
+ -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
+ -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
+ -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
+ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
+ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
+ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
+
+ cmake --build build --config Release -j $(nproc)