Skip to content

Commit 1265c67

Browse files
authored
Revert "move ndk code to a new library (ggml-org#6951)" (ggml-org#7282)
This reverts commit efc8f76.
1 parent 5e31828 commit 1265c67

File tree

14 files changed

+49
-145
lines changed

14 files changed

+49
-145
lines changed

examples/llama.android/app/build.gradle.kts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ android {
77
namespace = "com.example.llama"
88
compileSdk = 34
99

10+
ndkVersion = "26.1.10909125"
11+
1012
defaultConfig {
1113
applicationId = "com.example.llama"
1214
minSdk = 33
@@ -18,6 +20,17 @@ android {
1820
vectorDrawables {
1921
useSupportLibrary = true
2022
}
23+
ndk {
24+
// Add NDK properties if wanted, e.g.
25+
// abiFilters += listOf("arm64-v8a")
26+
}
27+
externalNativeBuild {
28+
cmake {
29+
arguments += "-DCMAKE_BUILD_TYPE=Release"
30+
cppFlags += listOf()
31+
arguments += listOf()
32+
}
33+
}
2134
}
2235

2336
buildTypes {
@@ -42,6 +55,17 @@ android {
4255
composeOptions {
4356
kotlinCompilerExtensionVersion = "1.5.1"
4457
}
58+
packaging {
59+
resources {
60+
excludes += "/META-INF/{AL2.0,LGPL2.1}"
61+
}
62+
}
63+
externalNativeBuild {
64+
cmake {
65+
path = file("src/main/cpp/CMakeLists.txt")
66+
version = "3.22.1"
67+
}
68+
}
4569
}
4670

4771
dependencies {
@@ -54,7 +78,6 @@ dependencies {
5478
implementation("androidx.compose.ui:ui-graphics")
5579
implementation("androidx.compose.ui:ui-tooling-preview")
5680
implementation("androidx.compose.material3:material3")
57-
implementation(project(":llama"))
5881
testImplementation("junit:junit:4.13.2")
5982
androidTestImplementation("androidx.test.ext:junit:1.1.5")
6083
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")

examples/llama.android/llama/CMakeLists.txt renamed to examples/llama.android/app/src/main/cpp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ FetchContent_MakeAvailable(llama)
3737
# used in the AndroidManifest.xml file.
3838
add_library(${CMAKE_PROJECT_NAME} SHARED
3939
# List C/C++ source files with relative paths to this CMakeLists.txt.
40-
llama-android.cpp)
40+
llama-android.cpp)
4141

4242
# Specifies libraries CMake should link to your target library. You
4343
# can link libraries from various origins, such as libraries defined in this

examples/llama.android/llama/src/main/cpp/llama-android.cpp renamed to examples/llama.android/app/src/main/cpp/llama-android.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ static void log_callback(ggml_log_level level, const char * fmt, void * data) {
8181

8282
extern "C"
8383
JNIEXPORT jlong JNICALL
84-
Java_android_llama_cpp_LLamaAndroid_load_1model(JNIEnv *env, jobject, jstring filename) {
84+
Java_com_example_llama_Llm_load_1model(JNIEnv *env, jobject, jstring filename) {
8585
llama_model_params model_params = llama_model_default_params();
8686

8787
auto path_to_model = env->GetStringUTFChars(filename, 0);
@@ -101,13 +101,13 @@ Java_android_llama_cpp_LLamaAndroid_load_1model(JNIEnv *env, jobject, jstring fi
101101

102102
extern "C"
103103
JNIEXPORT void JNICALL
104-
Java_android_llama_cpp_LLamaAndroid_free_1model(JNIEnv *, jobject, jlong model) {
104+
Java_com_example_llama_Llm_free_1model(JNIEnv *, jobject, jlong model) {
105105
llama_free_model(reinterpret_cast<llama_model *>(model));
106106
}
107107

108108
extern "C"
109109
JNIEXPORT jlong JNICALL
110-
Java_android_llama_cpp_LLamaAndroid_new_1context(JNIEnv *env, jobject, jlong jmodel) {
110+
Java_com_example_llama_Llm_new_1context(JNIEnv *env, jobject, jlong jmodel) {
111111
auto model = reinterpret_cast<llama_model *>(jmodel);
112112

113113
if (!model) {
@@ -139,25 +139,25 @@ Java_android_llama_cpp_LLamaAndroid_new_1context(JNIEnv *env, jobject, jlong jmo
139139

140140
extern "C"
141141
JNIEXPORT void JNICALL
142-
Java_android_llama_cpp_LLamaAndroid_free_1context(JNIEnv *, jobject, jlong context) {
142+
Java_com_example_llama_Llm_free_1context(JNIEnv *, jobject, jlong context) {
143143
llama_free(reinterpret_cast<llama_context *>(context));
144144
}
145145

146146
extern "C"
147147
JNIEXPORT void JNICALL
148-
Java_android_llama_cpp_LLamaAndroid_backend_1free(JNIEnv *, jobject) {
148+
Java_com_example_llama_Llm_backend_1free(JNIEnv *, jobject) {
149149
llama_backend_free();
150150
}
151151

152152
extern "C"
153153
JNIEXPORT void JNICALL
154-
Java_android_llama_cpp_LLamaAndroid_log_1to_1android(JNIEnv *, jobject) {
154+
Java_com_example_llama_Llm_log_1to_1android(JNIEnv *, jobject) {
155155
llama_log_set(log_callback, NULL);
156156
}
157157

158158
extern "C"
159159
JNIEXPORT jstring JNICALL
160-
Java_android_llama_cpp_LLamaAndroid_bench_1model(
160+
Java_com_example_llama_Llm_bench_1model(
161161
JNIEnv *env,
162162
jobject,
163163
jlong context_pointer,
@@ -271,13 +271,13 @@ Java_android_llama_cpp_LLamaAndroid_bench_1model(
271271

272272
extern "C"
273273
JNIEXPORT void JNICALL
274-
Java_android_llama_cpp_LLamaAndroid_free_1batch(JNIEnv *, jobject, jlong batch_pointer) {
274+
Java_com_example_llama_Llm_free_1batch(JNIEnv *, jobject, jlong batch_pointer) {
275275
llama_batch_free(*reinterpret_cast<llama_batch *>(batch_pointer));
276276
}
277277

278278
extern "C"
279279
JNIEXPORT jlong JNICALL
280-
Java_android_llama_cpp_LLamaAndroid_new_1batch(JNIEnv *, jobject, jint n_tokens, jint embd, jint n_seq_max) {
280+
Java_com_example_llama_Llm_new_1batch(JNIEnv *, jobject, jint n_tokens, jint embd, jint n_seq_max) {
281281

282282
// Source: Copy of llama.cpp:llama_batch_init but heap-allocated.
283283

@@ -313,19 +313,19 @@ Java_android_llama_cpp_LLamaAndroid_new_1batch(JNIEnv *, jobject, jint n_tokens,
313313

314314
extern "C"
315315
JNIEXPORT void JNICALL
316-
Java_android_llama_cpp_LLamaAndroid_backend_1init(JNIEnv *, jobject) {
316+
Java_com_example_llama_Llm_backend_1init(JNIEnv *, jobject) {
317317
llama_backend_init();
318318
}
319319

320320
extern "C"
321321
JNIEXPORT jstring JNICALL
322-
Java_android_llama_cpp_LLamaAndroid_system_1info(JNIEnv *env, jobject) {
322+
Java_com_example_llama_Llm_system_1info(JNIEnv *env, jobject) {
323323
return env->NewStringUTF(llama_print_system_info());
324324
}
325325

326326
extern "C"
327327
JNIEXPORT jint JNICALL
328-
Java_android_llama_cpp_LLamaAndroid_completion_1init(
328+
Java_com_example_llama_Llm_completion_1init(
329329
JNIEnv *env,
330330
jobject,
331331
jlong context_pointer,
@@ -376,7 +376,7 @@ Java_android_llama_cpp_LLamaAndroid_completion_1init(
376376

377377
extern "C"
378378
JNIEXPORT jstring JNICALL
379-
Java_android_llama_cpp_LLamaAndroid_completion_1loop(
379+
Java_com_example_llama_Llm_completion_1loop(
380380
JNIEnv * env,
381381
jobject,
382382
jlong context_pointer,
@@ -438,6 +438,6 @@ Java_android_llama_cpp_LLamaAndroid_completion_1loop(
438438

439439
extern "C"
440440
JNIEXPORT void JNICALL
441-
Java_android_llama_cpp_LLamaAndroid_kv_1cache_1clear(JNIEnv *, jobject, jlong context) {
441+
Java_com_example_llama_Llm_kv_1cache_1clear(JNIEnv *, jobject, jlong context) {
442442
llama_kv_cache_clear(reinterpret_cast<llama_context *>(context));
443443
}

examples/llama.android/llama/src/main/java/android/llama/cpp/LLamaAndroid.kt renamed to examples/llama.android/app/src/main/java/com/example/llama/Llm.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package android.llama.cpp
1+
package com.example.llama
22

33
import android.util.Log
44
import kotlinx.coroutines.CoroutineDispatcher
@@ -10,7 +10,7 @@ import kotlinx.coroutines.withContext
1010
import java.util.concurrent.Executors
1111
import kotlin.concurrent.thread
1212

13-
class LLamaAndroid {
13+
class Llm {
1414
private val tag: String? = this::class.simpleName
1515

1616
private val threadLocalState: ThreadLocal<State> = ThreadLocal.withInitial { State.Idle }
@@ -165,8 +165,8 @@ class LLamaAndroid {
165165
}
166166

167167
// Enforce only one instance of Llm.
168-
private val _instance: LLamaAndroid = LLamaAndroid()
168+
private val _instance: Llm = Llm()
169169

170-
fun instance(): LLamaAndroid = _instance
170+
fun instance(): Llm = _instance
171171
}
172172
}

examples/llama.android/app/src/main/java/com/example/llama/MainViewModel.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.example.llama
22

3-
import android.llama.cpp.LLamaAndroid
43
import android.util.Log
54
import androidx.compose.runtime.getValue
65
import androidx.compose.runtime.mutableStateOf
@@ -10,7 +9,7 @@ import androidx.lifecycle.viewModelScope
109
import kotlinx.coroutines.flow.catch
1110
import kotlinx.coroutines.launch
1211

13-
class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instance()): ViewModel() {
12+
class MainViewModel(private val llm: Llm = Llm.instance()): ViewModel() {
1413
companion object {
1514
@JvmStatic
1615
private val NanosPerSecond = 1_000_000_000.0
@@ -29,7 +28,7 @@ class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instan
2928

3029
viewModelScope.launch {
3130
try {
32-
llamaAndroid.unload()
31+
llm.unload()
3332
} catch (exc: IllegalStateException) {
3433
messages += exc.message!!
3534
}
@@ -45,7 +44,7 @@ class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instan
4544
messages += ""
4645

4746
viewModelScope.launch {
48-
llamaAndroid.send(text)
47+
llm.send(text)
4948
.catch {
5049
Log.e(tag, "send() failed", it)
5150
messages += it.message!!
@@ -58,7 +57,7 @@ class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instan
5857
viewModelScope.launch {
5958
try {
6059
val start = System.nanoTime()
61-
val warmupResult = llamaAndroid.bench(pp, tg, pl, nr)
60+
val warmupResult = llm.bench(pp, tg, pl, nr)
6261
val end = System.nanoTime()
6362

6463
messages += warmupResult
@@ -71,7 +70,7 @@ class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instan
7170
return@launch
7271
}
7372

74-
messages += llamaAndroid.bench(512, 128, 1, 3)
73+
messages += llm.bench(512, 128, 1, 3)
7574
} catch (exc: IllegalStateException) {
7675
Log.e(tag, "bench() failed", exc)
7776
messages += exc.message!!
@@ -82,7 +81,7 @@ class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instan
8281
fun load(pathToModel: String) {
8382
viewModelScope.launch {
8483
try {
85-
llamaAndroid.load(pathToModel)
84+
llm.load(pathToModel)
8685
messages += "Loaded $pathToModel"
8786
} catch (exc: IllegalStateException) {
8887
Log.e(tag, "load() failed", exc)

examples/llama.android/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@
22
plugins {
33
id("com.android.application") version "8.2.0" apply false
44
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
5-
id("com.android.library") version "8.2.0" apply false
65
}

examples/llama.android/llama/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

examples/llama.android/llama/consumer-rules.pro

Whitespace-only changes.

examples/llama.android/llama/proguard-rules.pro

Lines changed: 0 additions & 21 deletions
This file was deleted.

examples/llama.android/llama/src/androidTest/java/android/llama/cpp/ExampleInstrumentedTest.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)