cactus-react-native 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +230 -0
- package/android/build.gradle +104 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/CMakeLists.txt +104 -0
- package/android/src/main/java/com/cactus/Cactus.java +646 -0
- package/android/src/main/java/com/cactus/CactusPackage.java +48 -0
- package/android/src/main/java/com/cactus/LlamaContext.java +579 -0
- package/android/src/main/jni-utils.h +100 -0
- package/android/src/main/jni.cpp +1254 -0
- package/android/src/main/jniLibs/arm64-v8a/libcactus.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libcactus_v8.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2_dotprod.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2_dotprod_i8mm.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libcactus_v8_2_i8mm.so +0 -0
- package/android/src/main/jniLibs/x86_64/libcactus.so +0 -0
- package/android/src/main/jniLibs/x86_64/libcactus_x86_64.so +0 -0
- package/android/src/newarch/java/com/cactus/CactusModule.java +124 -0
- package/android/src/oldarch/java/com/cactus/CactusModule.java +125 -0
- package/cactus-react-native.podspec +45 -0
- package/ios/CMakeLists.txt +109 -0
- package/ios/Cactus.h +6 -0
- package/ios/Cactus.mm +405 -0
- package/ios/CactusContext.h +57 -0
- package/ios/CactusContext.mm +835 -0
- package/ios/cactus.xcframework/info.plist +74 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/cactus.h +133 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/chat.h +143 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/common.h +683 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-alloc.h +76 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-backend-impl.h +255 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-backend.h +354 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-common.h +1851 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpp.h +39 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-cpu.h +138 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-impl.h +567 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-metal-impl.h +530 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-metal.h +66 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-opt.h +216 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-quants.h +100 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml-threading.h +14 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/ggml.h +2221 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/gguf.h +202 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/json.hpp +24766 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-adapter.h +76 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-arch.h +421 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-batch.h +88 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-chat.h +53 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-context.h +265 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-cparams.h +38 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-cpp.h +30 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-grammar.h +173 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-graph.h +574 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-hparams.h +148 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-impl.h +61 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-io.h +35 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-kv-cache.h +287 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-memory.h +21 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-mmap.h +68 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-model-loader.h +167 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-model.h +403 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-sampling.h +32 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama-vocab.h +125 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/llama.h +1416 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/log.h +103 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/minja/chat-template.hpp +529 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/minja/minja.hpp +2915 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/sampling.h +107 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/sgemm.h +14 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/unicode-data.h +20 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Headers/unicode.h +66 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/Info.plist +0 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/ios-arm64/cactus.framework/ggml-llama.metallib +0 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/cactus.h +133 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/chat.h +143 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/common.h +683 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-alloc.h +76 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend-impl.h +255 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend.h +354 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-common.h +1851 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpp.h +39 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu.h +138 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-impl.h +567 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal-impl.h +530 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal.h +66 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-opt.h +216 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-quants.h +100 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml-threading.h +14 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/ggml.h +2221 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/gguf.h +202 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/json.hpp +24766 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-adapter.h +76 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-arch.h +421 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-batch.h +88 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-chat.h +53 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-context.h +265 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-cparams.h +38 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-cpp.h +30 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-grammar.h +173 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-graph.h +574 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-hparams.h +148 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-impl.h +61 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-io.h +35 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-kv-cache.h +287 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-memory.h +21 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-mmap.h +68 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-model-loader.h +167 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-model.h +403 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-sampling.h +32 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama-vocab.h +125 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/llama.h +1416 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/log.h +103 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/minja/chat-template.hpp +529 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/minja/minja.hpp +2915 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/sampling.h +107 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/sgemm.h +14 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/unicode-data.h +20 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Headers/unicode.h +66 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/Info.plist +0 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/_CodeSignature/CodeResources +101 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/ios-arm64_x86_64-simulator/cactus.framework/ggml-llama-sim.metallib +0 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/cactus.h +133 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/chat.h +143 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/common.h +683 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-alloc.h +76 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-backend-impl.h +255 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-backend.h +354 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-common.h +1851 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpp.h +39 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-cpu.h +138 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-impl.h +567 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-metal-impl.h +530 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-metal.h +66 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-opt.h +216 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-quants.h +100 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml-threading.h +14 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/ggml.h +2221 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/gguf.h +202 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/json.hpp +24766 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-adapter.h +76 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-arch.h +421 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-batch.h +88 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-chat.h +53 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-context.h +265 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-cparams.h +38 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-cpp.h +30 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-grammar.h +173 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-graph.h +574 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-hparams.h +148 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-impl.h +61 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-io.h +35 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-kv-cache.h +287 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-memory.h +21 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-mmap.h +68 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-model-loader.h +167 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-model.h +403 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-sampling.h +32 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama-vocab.h +125 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/llama.h +1416 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/log.h +103 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/minja/chat-template.hpp +529 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/minja/minja.hpp +2915 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/sampling.h +107 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/sgemm.h +14 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/unicode-data.h +20 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Headers/unicode.h +66 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/Info.plist +0 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/tvos-arm64/cactus.framework/ggml-llama.metallib +0 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/cactus.h +133 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/chat.h +143 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/common.h +683 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-alloc.h +76 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend-impl.h +255 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-backend.h +354 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-common.h +1851 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpp.h +39 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-aarch64.h +8 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-impl.h +531 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-quants.h +63 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu-traits.h +38 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-cpu.h +138 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-impl.h +567 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal-impl.h +530 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-metal.h +66 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-opt.h +216 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-quants.h +100 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml-threading.h +14 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/ggml.h +2221 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/gguf.h +202 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/json-schema-to-grammar.h +21 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/json.hpp +24766 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-adapter.h +76 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-arch.h +421 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-batch.h +88 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-chat.h +53 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-context.h +265 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-cparams.h +38 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-cpp.h +30 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-grammar.h +173 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-graph.h +574 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-hparams.h +148 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-impl.h +61 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-io.h +35 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-kv-cache.h +287 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-memory.h +21 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-mmap.h +68 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-model-loader.h +167 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-model.h +403 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-sampling.h +32 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama-vocab.h +125 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/llama.h +1416 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/log.h +103 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/minja/chat-template.hpp +529 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/minja/minja.hpp +2915 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/sampling.h +107 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/sgemm.h +14 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/unicode-data.h +20 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Headers/unicode.h +66 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/Info.plist +0 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/_CodeSignature/CodeResources +101 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/cactus +0 -0
- package/ios/cactus.xcframework/tvos-arm64_x86_64-simulator/cactus.framework/ggml-llama-sim.metallib +0 -0
- package/lib/commonjs/NativeCactus.js +9 -0
- package/lib/commonjs/NativeCactus.js.map +1 -0
- package/lib/commonjs/chat.js +37 -0
- package/lib/commonjs/chat.js.map +1 -0
- package/lib/commonjs/grammar.js +560 -0
- package/lib/commonjs/grammar.js.map +1 -0
- package/lib/commonjs/index.js +300 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/NativeCactus.js +5 -0
- package/lib/module/NativeCactus.js.map +1 -0
- package/lib/module/chat.js +33 -0
- package/lib/module/chat.js.map +1 -0
- package/lib/module/grammar.js +553 -0
- package/lib/module/grammar.js.map +1 -0
- package/lib/module/index.js +277 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/NativeCactus.d.ts +357 -0
- package/lib/typescript/NativeCactus.d.ts.map +1 -0
- package/lib/typescript/chat.d.ts +10 -0
- package/lib/typescript/chat.d.ts.map +1 -0
- package/lib/typescript/grammar.d.ts +37 -0
- package/lib/typescript/grammar.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +96 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +223 -0
- package/src/NativeCactus.ts +418 -0
- package/src/chat.ts +44 -0
- package/src/grammar.ts +854 -0
- package/src/index.ts +482 -0
package/README.md
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Cactus for React Native
|
|
2
|
+
|
|
3
|
+
A lightweight, high-performance framework for running AI models on mobile devices with React Native.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Using npm
|
|
9
|
+
npm install cactus-react-native
|
|
10
|
+
|
|
11
|
+
# Using yarn
|
|
12
|
+
yarn add cactus-react-native
|
|
13
|
+
|
|
14
|
+
# For iOS, install pods if not on Expo
|
|
15
|
+
npx pod-install
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Basic Usage
|
|
19
|
+
|
|
20
|
+
### Initialize a Model
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { initLlama, LlamaContext } from 'cactus-react-native';
|
|
24
|
+
|
|
25
|
+
// Initialize the model
|
|
26
|
+
const context = await initLlama({
|
|
27
|
+
model: 'models/llama-2-7b-chat.gguf', // Path to your model
|
|
28
|
+
n_ctx: 2048, // Context size
|
|
29
|
+
n_batch: 512, // Batch size for prompt processing
|
|
30
|
+
n_threads: 4 // Number of threads to use
|
|
31
|
+
});
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Text Completion
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// Generate text completion
|
|
38
|
+
const result = await context.completion({
|
|
39
|
+
prompt: "Explain quantum computing in simple terms",
|
|
40
|
+
temperature: 0.7,
|
|
41
|
+
top_k: 40,
|
|
42
|
+
top_p: 0.95,
|
|
43
|
+
n_predict: 512
|
|
44
|
+
}, (token) => {
|
|
45
|
+
// Process each token as it's generated
|
|
46
|
+
console.log(token.token);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// Clean up when done
|
|
50
|
+
await context.release();
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Chat Completion
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// Chat messages following OpenAI format
|
|
57
|
+
const messages = [
|
|
58
|
+
{ role: "system", content: "You are a helpful assistant." },
|
|
59
|
+
{ role: "user", content: "What is machine learning?" }
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
// Generate chat completion
|
|
63
|
+
const result = await context.completion({
|
|
64
|
+
messages: messages,
|
|
65
|
+
temperature: 0.7,
|
|
66
|
+
top_k: 40,
|
|
67
|
+
top_p: 0.95,
|
|
68
|
+
n_predict: 512
|
|
69
|
+
}, (token) => {
|
|
70
|
+
// Process each token
|
|
71
|
+
console.log(token.token);
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Advanced Features
|
|
76
|
+
|
|
77
|
+
### JSON Mode with Schema Validation
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// Define a JSON schema
|
|
81
|
+
const schema = {
|
|
82
|
+
type: "object",
|
|
83
|
+
properties: {
|
|
84
|
+
name: { type: "string" },
|
|
85
|
+
age: { type: "number" },
|
|
86
|
+
hobbies: {
|
|
87
|
+
type: "array",
|
|
88
|
+
items: { type: "string" }
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
required: ["name", "age"]
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// Generate JSON-structured output
|
|
95
|
+
const result = await context.completion({
|
|
96
|
+
prompt: "Generate a profile for a fictional person",
|
|
97
|
+
response_format: {
|
|
98
|
+
type: "json_schema",
|
|
99
|
+
json_schema: {
|
|
100
|
+
schema: schema,
|
|
101
|
+
strict: true
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
temperature: 0.7,
|
|
105
|
+
n_predict: 512
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// The result will be valid JSON according to the schema
|
|
109
|
+
const jsonData = JSON.parse(result.text);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Working with Embeddings
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// Generate embeddings for text
|
|
116
|
+
const embedding = await context.embedding("This is a sample text", {
|
|
117
|
+
pooling_type: "mean" // Options: "none", "mean", "cls", "last", "rank"
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
console.log(`Embedding dimensions: ${embedding.embedding.length}`);
|
|
121
|
+
// Use the embedding for similarity comparison, clustering, etc.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Session Management
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// Save the current session state
|
|
128
|
+
const tokenCount = await context.saveSession("session.bin", { tokenSize: 1024 });
|
|
129
|
+
console.log(`Saved session with ${tokenCount} tokens`);
|
|
130
|
+
|
|
131
|
+
// Load a saved session
|
|
132
|
+
const loadResult = await context.loadSession("session.bin");
|
|
133
|
+
console.log(`Loaded session: ${loadResult.success}`);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Working with LoRA Adapters
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
// Apply LoRA adapters to the model
|
|
140
|
+
await context.applyLoraAdapters([
|
|
141
|
+
{ path: "models/lora_adapter.bin", scaled: 0.8 }
|
|
142
|
+
]);
|
|
143
|
+
|
|
144
|
+
// Get currently loaded adapters
|
|
145
|
+
const loadedAdapters = await context.getLoadedLoraAdapters();
|
|
146
|
+
|
|
147
|
+
// Remove all LoRA adapters
|
|
148
|
+
await context.removeLoraAdapters();
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Model Benchmarking
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
// Benchmark the model performance
|
|
155
|
+
const benchResult = await context.bench(
|
|
156
|
+
32, // pp: prompt processing tests
|
|
157
|
+
32, // tg: token generation tests
|
|
158
|
+
512, // pl: prompt length
|
|
159
|
+
5 // nr: number of runs
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
console.log(`Average token generation speed: ${benchResult.tgAvg} tokens/sec`);
|
|
163
|
+
console.log(`Model size: ${benchResult.modelSize} bytes`);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Native Logging
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
import { addNativeLogListener, toggleNativeLog } from 'cactus-react-native';
|
|
170
|
+
|
|
171
|
+
// Enable native logging
|
|
172
|
+
await toggleNativeLog(true);
|
|
173
|
+
|
|
174
|
+
// Add a listener for native logs
|
|
175
|
+
const logListener = addNativeLogListener((level, text) => {
|
|
176
|
+
console.log(`[${level}] ${text}`);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Remove the listener when no longer needed
|
|
180
|
+
logListener.remove();
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Error Handling
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
try {
|
|
187
|
+
const context = await initLlama({
|
|
188
|
+
model: 'models/non-existent-model.gguf',
|
|
189
|
+
n_ctx: 2048,
|
|
190
|
+
n_threads: 4
|
|
191
|
+
});
|
|
192
|
+
} catch (error) {
|
|
193
|
+
console.error('Failed to initialize model:', error);
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Best Practices
|
|
198
|
+
|
|
199
|
+
1. **Model Management**
|
|
200
|
+
- Store models in the app's document directory
|
|
201
|
+
- Consider model size when targeting specific devices
|
|
202
|
+
- Smaller models like SmolLM (135M) work well on most devices
|
|
203
|
+
|
|
204
|
+
2. **Performance Optimization**
|
|
205
|
+
- Adjust `n_threads` based on the device's capabilities
|
|
206
|
+
- Use a smaller `n_ctx` for memory-constrained devices
|
|
207
|
+
- Consider INT8 or INT4 quantized models for better performance
|
|
208
|
+
|
|
209
|
+
3. **Battery Efficiency**
|
|
210
|
+
- Release the model context when not in use
|
|
211
|
+
- Process inference in smaller batches
|
|
212
|
+
- Consider background processing for long generations
|
|
213
|
+
|
|
214
|
+
4. **Memory Management**
|
|
215
|
+
- Always call `context.release()` when done with a model
|
|
216
|
+
- Use `releaseAllLlama()` when switching between multiple models
|
|
217
|
+
|
|
218
|
+
## Example App
|
|
219
|
+
|
|
220
|
+
For a complete working example, check out the [React Native example app](https://github.com/cactus-compute/cactus/tree/main/examples/react-example) in the repository.
|
|
221
|
+
|
|
222
|
+
This example demonstrates:
|
|
223
|
+
- Loading and initializing models
|
|
224
|
+
- Building a chat interface
|
|
225
|
+
- Streaming responses
|
|
226
|
+
- Proper resource management
|
|
227
|
+
|
|
228
|
+
## License
|
|
229
|
+
|
|
230
|
+
This project is licensed under the MIT License.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
buildscript {
|
|
2
|
+
repositories {
|
|
3
|
+
google()
|
|
4
|
+
mavenCentral()
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
dependencies {
|
|
8
|
+
classpath "com.android.tools.build:gradle:7.2.1"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
def isNewArchitectureEnabled() {
|
|
13
|
+
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
apply plugin: "com.android.library"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
|
|
20
|
+
|
|
21
|
+
if (isNewArchitectureEnabled()) {
|
|
22
|
+
apply plugin: "com.facebook.react"
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
def getExtOrDefault(name) {
|
|
26
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["Cactus_" + name]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def getExtOrIntegerDefault(name) {
|
|
30
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["Cactus_" + name]).toInteger()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def reactNativeArchitectures() {
|
|
34
|
+
def value = project.getProperties().get("reactNativeArchitectures")
|
|
35
|
+
def archs = value ? value.split(",") : ["x86_64", "arm64-v8a"]
|
|
36
|
+
return archs.findAll { it != "armeabi-v7a" && it != "x86" } // Not building for 32-bit architectures
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
android {
|
|
40
|
+
ndkVersion getExtOrDefault("ndkVersion")
|
|
41
|
+
def ndkVersionMajor = ndkVersion.split("\\.")[0].toInteger()
|
|
42
|
+
if (ndkVersionMajor < 24) {
|
|
43
|
+
ndkVersion = project.properties["Cactus_ndkversion"]
|
|
44
|
+
}
|
|
45
|
+
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
|
|
46
|
+
|
|
47
|
+
defaultConfig {
|
|
48
|
+
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
|
|
49
|
+
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
|
|
50
|
+
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
|
51
|
+
externalNativeBuild {
|
|
52
|
+
cmake {
|
|
53
|
+
abiFilters (*reactNativeArchitectures())
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
buildTypes {
|
|
59
|
+
release {
|
|
60
|
+
minifyEnabled false
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
lintOptions {
|
|
65
|
+
disable "GradleCompatible"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
compileOptions {
|
|
69
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
|
70
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
sourceSets {
|
|
74
|
+
main {
|
|
75
|
+
if (isNewArchitectureEnabled()) {
|
|
76
|
+
java.srcDirs += ['src/newarch']
|
|
77
|
+
} else {
|
|
78
|
+
java.srcDirs += ['src/oldarch']
|
|
79
|
+
}
|
|
80
|
+
jniLibs.srcDirs = ['src/main/jniLibs']
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
repositories {
|
|
86
|
+
mavenCentral()
|
|
87
|
+
google()
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
dependencies {
|
|
92
|
+
// For < 0.71, this will be from the local maven repo
|
|
93
|
+
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
|
|
94
|
+
//noinspection GradleDynamicVersion
|
|
95
|
+
implementation "com.facebook.react:react-native:+"
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (isNewArchitectureEnabled()) {
|
|
99
|
+
react {
|
|
100
|
+
jsRootDir = file("../src/")
|
|
101
|
+
libraryName = "Cactus"
|
|
102
|
+
codegenJavaPackageName = "com.cactus"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.10)
|
|
2
|
+
|
|
3
|
+
project(cactus)
|
|
4
|
+
|
|
5
|
+
set(CMAKE_CXX_STANDARD 17)
|
|
6
|
+
# Use cactus as the C++ source directory
|
|
7
|
+
set(SOURCE_DIR ${CMAKE_SOURCE_DIR}/../../../cactus)
|
|
8
|
+
|
|
9
|
+
include_directories(${SOURCE_DIR})
|
|
10
|
+
|
|
11
|
+
set(
|
|
12
|
+
SOURCE_FILES
|
|
13
|
+
${SOURCE_DIR}/ggml.c
|
|
14
|
+
${SOURCE_DIR}/ggml-alloc.c
|
|
15
|
+
${SOURCE_DIR}/ggml-backend.cpp
|
|
16
|
+
${SOURCE_DIR}/ggml-backend-reg.cpp
|
|
17
|
+
${SOURCE_DIR}/ggml-cpu.c
|
|
18
|
+
${SOURCE_DIR}/ggml-cpu.cpp
|
|
19
|
+
${SOURCE_DIR}/ggml-cpu-aarch64.cpp
|
|
20
|
+
${SOURCE_DIR}/ggml-cpu-quants.c
|
|
21
|
+
${SOURCE_DIR}/ggml-cpu-traits.cpp
|
|
22
|
+
${SOURCE_DIR}/ggml-opt.cpp
|
|
23
|
+
${SOURCE_DIR}/ggml-threading.cpp
|
|
24
|
+
${SOURCE_DIR}/ggml-quants.c
|
|
25
|
+
${SOURCE_DIR}/gguf.cpp
|
|
26
|
+
${SOURCE_DIR}/log.cpp
|
|
27
|
+
${SOURCE_DIR}/llama-impl.cpp
|
|
28
|
+
${SOURCE_DIR}/llama-grammar.cpp
|
|
29
|
+
${SOURCE_DIR}/llama-sampling.cpp
|
|
30
|
+
${SOURCE_DIR}/llama-vocab.cpp
|
|
31
|
+
${SOURCE_DIR}/llama-adapter.cpp
|
|
32
|
+
${SOURCE_DIR}/llama-chat.cpp
|
|
33
|
+
${SOURCE_DIR}/llama-context.cpp
|
|
34
|
+
${SOURCE_DIR}/llama-kv-cache.cpp
|
|
35
|
+
${SOURCE_DIR}/llama-arch.cpp
|
|
36
|
+
${SOURCE_DIR}/llama-batch.cpp
|
|
37
|
+
${SOURCE_DIR}/llama-cparams.cpp
|
|
38
|
+
${SOURCE_DIR}/llama-hparams.cpp
|
|
39
|
+
${SOURCE_DIR}/llama.cpp
|
|
40
|
+
${SOURCE_DIR}/llama-model.cpp
|
|
41
|
+
${SOURCE_DIR}/llama-model-loader.cpp
|
|
42
|
+
${SOURCE_DIR}/llama-mmap.cpp
|
|
43
|
+
${SOURCE_DIR}/llama-vocab.cpp
|
|
44
|
+
${SOURCE_DIR}/llama-memory.cpp
|
|
45
|
+
${SOURCE_DIR}/llama-io.cpp
|
|
46
|
+
${SOURCE_DIR}/llama-graph.cpp
|
|
47
|
+
${SOURCE_DIR}/sampling.cpp
|
|
48
|
+
${SOURCE_DIR}/unicode-data.cpp
|
|
49
|
+
${SOURCE_DIR}/unicode.cpp
|
|
50
|
+
${SOURCE_DIR}/sgemm.cpp
|
|
51
|
+
${SOURCE_DIR}/common.cpp
|
|
52
|
+
${SOURCE_DIR}/chat.cpp
|
|
53
|
+
${SOURCE_DIR}/json-schema-to-grammar.cpp
|
|
54
|
+
${SOURCE_DIR}/json.hpp
|
|
55
|
+
${SOURCE_DIR}/amx/amx.cpp
|
|
56
|
+
${SOURCE_DIR}/amx/mmq.cpp
|
|
57
|
+
${SOURCE_DIR}/minja/minja.hpp
|
|
58
|
+
${SOURCE_DIR}/minja/chat-template.hpp
|
|
59
|
+
${SOURCE_DIR}/cactus.cpp
|
|
60
|
+
${CMAKE_SOURCE_DIR}/jni-utils.h
|
|
61
|
+
${CMAKE_SOURCE_DIR}/jni.cpp
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
find_library(LOG_LIB log)
|
|
65
|
+
|
|
66
|
+
function(build_library target_name cpu_flags)
|
|
67
|
+
add_library(
|
|
68
|
+
${target_name}
|
|
69
|
+
SHARED
|
|
70
|
+
${SOURCE_FILES}
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
target_link_libraries(${target_name} ${LOG_LIB} android)
|
|
74
|
+
|
|
75
|
+
target_compile_options(${target_name} PRIVATE -DLM_GGML_USE_CPU -DLM_GGML_USE_CPU_AARCH64 -pthread ${cpu_flags})
|
|
76
|
+
|
|
77
|
+
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
|
78
|
+
target_compile_options(${target_name} PRIVATE -DCACTUS_ANDROID_ENABLE_LOGGING)
|
|
79
|
+
endif ()
|
|
80
|
+
|
|
81
|
+
target_compile_options(${target_name} PRIVATE -O3 -DNDEBUG)
|
|
82
|
+
target_compile_options(${target_name} PRIVATE -fvisibility=hidden -fvisibility-inlines-hidden)
|
|
83
|
+
target_compile_options(${target_name} PRIVATE -ffunction-sections -fdata-sections)
|
|
84
|
+
|
|
85
|
+
target_link_options(${target_name} PRIVATE -Wl,--gc-sections)
|
|
86
|
+
target_link_options(${target_name} PRIVATE -Wl,--exclude-libs,ALL)
|
|
87
|
+
target_link_options(${target_name} PRIVATE -flto)
|
|
88
|
+
|
|
89
|
+
endfunction()
|
|
90
|
+
|
|
91
|
+
# Default target (no specific CPU features)
|
|
92
|
+
build_library("cactus" "")
|
|
93
|
+
|
|
94
|
+
if (${ANDROID_ABI} STREQUAL "arm64-v8a")
|
|
95
|
+
build_library("cactus_v8" "-march=armv8-a")
|
|
96
|
+
build_library("cactus_v8_2" "-march=armv8.2-a")
|
|
97
|
+
build_library("cactus_v8_2_dotprod" "-march=armv8.2-a+dotprod")
|
|
98
|
+
build_library("cactus_v8_2_i8mm" "-march=armv8.2-a+i8mm")
|
|
99
|
+
build_library("cactus_v8_2_dotprod_i8mm" "-march=armv8.2-a+dotprod+i8mm")
|
|
100
|
+
|
|
101
|
+
elseif (${ANDROID_ABI} STREQUAL "x86_64")
|
|
102
|
+
build_library("cactus_x86_64" "-march=x86-64" "-mtune=intel" "-msse4.2" "-mpopcnt")
|
|
103
|
+
|
|
104
|
+
endif ()
|