Skip to content

Commit 8782ea2

Browse files
author
Daniele Briggi
committed
feat(linux): safe resource free up
- Linux x86_64 build setup
1 parent 7d12ce9 commit 8782ea2

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

.github/workflows/main.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- os: LinuxARM64
2323
arch: arm64
2424
name: linux-vulkan
25-
make: LLAMA="-DGGML_BACKEND_DL=ON -DGGML_NATIVE=OFF -DGGML_CPU_ALL_VARIANTS=ON -DGGML_VULKAN=ON"
25+
make: LLAMA="-DGGML_BACKEND_DL=ON -DGGML_NATIVE=OFF -DGGML_VULKAN=ON"
2626
- os: macos-latest
2727
name: macos
2828
- os: windows-latest
@@ -63,13 +63,24 @@ jobs:
6363
mingw-w64-x86_64-cmake
6464
make
6565
66+
- name: linux install dependencies
67+
if: matrix.name == 'linux-vulkan'
68+
run: |
69+
sudo apt-get update -y
70+
sudo apt-get install -y build-essential wget git cmake ccache sqlite3 libcurl4-openssl-dev
71+
6672
- name: linux install vulkan
6773
if: matrix.name == 'linux-vulkan'
6874
run: |
6975
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
7076
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list https://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list
7177
sudo apt-get update -y
72-
sudo apt-get install -y build-essential mesa-vulkan-drivers vulkan-sdk libcurl4-openssl-dev
78+
sudo apt-get install -y mesa-vulkan-drivers
79+
# Vulkan is no longer packed for Ubuntu
80+
wget https://sdk.lunarg.com/sdk/download/latest/linux/vulkan-sdk.tar.xz?Human=true -O vulkan-sdk.tar.xz
81+
tar -xf vulkan-sdk.tar.xz
82+
cd $(ls -d 1.* | head -n1)
83+
source setup-env.sh
7384
7485
- name: windows build sqlite-ai
7586
if: matrix.name == 'windows'

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ MAKEFLAGS += -j$(CPUS)
2828
CC = gcc
2929
CXX = g++
3030
CFLAGS = -Wall -Wextra -Wno-unused-parameter -I$(SRC_DIR) -I$(LLAMA_DIR)/ggml/include -I$(LLAMA_DIR)/include
31-
LDFLAGS = -L./$(BUILD_LLAMA)/common -L./$(BUILD_LLAMA)/ggml/src -L./$(BUILD_LLAMA)/src -L./$(BUILD_WHISPER)/src -lcommon -lggml -lggml-base -lggml-cpu -lllama -lwhisper
31+
LDFLAGS = -L./$(BUILD_LLAMA)/common -L./$(BUILD_LLAMA)/ggml/src -L./$(BUILD_LLAMA)/src -L./$(BUILD_WHISPER)/src -lcommon -lggml -lggml-base -lllama -lwhisper
3232
LLAMA_OPTIONS = $(LLAMA) -DLLAMA_CURL=OFF -DLLAMA_BUILD_EXAMPLES=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=OFF -DLLAMA_BUILD_SERVER=OFF
3333
WHISPER_OPTIONS = $(WHISPER) -DWHISPER_BUILD_EXAMPLES=OFF -DWHISPER_BUILD_TESTS=OFF -DWHISPER_BUILD_SERVER=OFF
3434

@@ -107,7 +107,7 @@ else ifeq ($(PLATFORM),isim)
107107
WHISPER_OPTIONS += -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_SYSROOT=iphonesimulator -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DWHISPER_COREML=ON
108108
else # linux
109109
TARGET := $(DIST_DIR)/ai.so
110-
LDFLAGS += -shared
110+
LDFLAGS += -shared -L./$(BUILD_LLAMA)/bin -Wl,-rpath,./$(BUILD_LLAMA)/bin -Wl,-rpath,./$(BUILD_LLAMA)/common -Wl,-rpath,./$(BUILD_LLAMA)/ggml/src -Wl,-rpath,./$(BUILD_LLAMA)/src -Wl,-rpath,./$(BUILD_WHISPER)/src
111111
LLAMA_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
112112
WHISPER_OPTIONS += -DGGML_OPENMP=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
113113
STRIP = strip --strip-unneeded $@
@@ -147,12 +147,12 @@ test: $(TARGET)
147147

148148
# Build submodules
149149
build/llama.cpp.stamp:
150-
cmake -B $(BUILD_LLAMA) -DBUILD_SHARED_LIBS=OFF $(LLAMA_OPTIONS) $(LLAMA_DIR)
150+
cmake -B $(BUILD_LLAMA) -DBUILD_SHARED_LIBS=ON $(LLAMA_OPTIONS) $(LLAMA_DIR)
151151
cmake --build $(BUILD_LLAMA) --config Release -- -j$(CPUS)
152152
touch $@
153153

154154
build/whisper.cpp.stamp:
155-
cmake -B $(BUILD_WHISPER) -DBUILD_SHARED_LIBS=OFF $(WHISPER_OPTIONS) $(WHISPER_DIR)
155+
cmake -B $(BUILD_WHISPER) -DBUILD_SHARED_LIBS=ON $(WHISPER_OPTIONS) $(WHISPER_DIR)
156156
cmake --build $(BUILD_WHISPER) --config Release -- -j$(CPUS)
157157
touch $@
158158

src/sqlite-ai.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ static bool ai_options_callback (sqlite3_context *context, void *xdata, const ch
246246
void *ai_sqlite_context_create (sqlite3 *db) {
247247
ai_context *ai = (ai_context *)sqlite3_malloc(sizeof(ai_context));
248248
if (ai) {
249+
memset(ai, 0, sizeof(ai_context));
249250
ai_options_init(&ai->options);
250251
ai->db = db;
251252
}
@@ -258,7 +259,9 @@ void ai_sqlite_context_free (void *ctx) {
258259
ai_context *ai = (ai_context *)ctx;
259260
if (ai->model) llama_model_free(ai->model);
260261
if (ai->ctx) llama_free(ai->ctx);
262+
if (ai->sampler) llama_sampler_free(ai->sampler);
261263
if (ai->token_buffer) sqlite3_free(ai->token_buffer);
264+
sqlite3_free(ai);
262265
}
263266

264267
void ai_logger (enum ggml_log_level level, const char *text, void *user_data) {

0 commit comments

Comments
 (0)