From 06dac0f80df0db82946684c56fabad0a7ce5528b Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 29 Apr 2023 21:35:36 +0500 Subject: [PATCH] Use main ggml repo (#45) --- .github/workflows/build.yml | 6 +++--- .gitmodules | 4 ++-- CMakeLists.txt | 38 +++++++++++++++---------------------- README.md | 6 +++--- ggml | 2 +- 5 files changed, 24 insertions(+), 32 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4d79a6c..787a44a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: run: | mkdir build cd build - cmake -DBUILD_SHARED_LIBS=ON .. + cmake .. cmake --build . --config Release - name: Test @@ -135,7 +135,7 @@ jobs: run: | mkdir build cd build - cmake -DBUILD_SHARED_LIBS=ON -DRWKV_AVX2=OFF -DRWKV_FMA=OFF .. + cmake -DRWKV_AVX2=OFF -DRWKV_FMA=OFF .. cmake --build . --config Release - name: Test @@ -197,7 +197,7 @@ jobs: run: | mkdir build cd build - cmake .. -DBUILD_SHARED_LIBS=ON ${{ matrix.defines }} + cmake .. ${{ matrix.defines }} cmake --build . --config Release - name: Check AVX512F support diff --git a/.gitmodules b/.gitmodules index 69a6451..8527898 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "ggml"] path = ggml - url = https://github.com/saharNooby/ggml - branch = master-2023-04-29 + url = https://github.com/ggerganov/ggml + branch = master diff --git a/CMakeLists.txt b/CMakeLists.txt index 7556082..8ba5818 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ -cmake_minimum_required(VERSION 3.12) # Don't bump this version for no reason +cmake_minimum_required(VERSION 3.12) + project("rwkv.cpp" C CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -10,23 +11,12 @@ endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -if (EMSCRIPTEN) - set(BUILD_SHARED_LIBS_DEFAULT OFF) - - option(RWKV_WASM_SINGLE_FILE "rwkv: embed WASM inside the generated rwkv.js" ON) -else() - if (MINGW) - set(BUILD_SHARED_LIBS_DEFAULT OFF) - else() - set(BUILD_SHARED_LIBS_DEFAULT ON) - endif() -endif() - # # Option list # # General +option(RWKV_BUILD_SHARED_LIBRARY "rwkv: build as a shared library" ON) option(RWKV_STATIC "rwkv: static link libraries" OFF) option(RWKV_NATIVE "rwkv: enable -march=native flag" OFF) option(RWKV_LTO "rwkv: enable link time optimization" OFF) @@ -54,26 +44,25 @@ option(RWKV_OPENBLAS "rwkv: use OpenBLAS" # Compile flags # +set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED true) +set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED true) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) if (NOT MSVC) if (RWKV_SANITIZE_THREAD) - message(STATUS "Using RWKV_SANITIZE_THREAD") add_compile_options(-fsanitize=thread) link_libraries(-fsanitize=thread) endif() if (RWKV_SANITIZE_ADDRESS) - message(STATUS "Using RWKV_SANITIZE_ADDRESS") add_compile_options(-fsanitize=address -fno-omit-frame-pointer) link_libraries(-fsanitize=address) endif() if (RWKV_SANITIZE_UNDEFINED) - message(STATUS "Using RWKV_SANITIZE_UNDEFINED") add_compile_options(-fsanitize=undefined) link_libraries(-fsanitize=undefined) endif() @@ -127,6 +116,7 @@ if (RWKV_ALL_WARNINGS) -Wpedantic -Wcast-qual -Wno-unused-function + -Wno-multichar ) else() # TODO [llama.cpp]: msvc @@ -201,9 +191,7 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$") endif() if (RWKV_AVX512) add_compile_options(-mavx512f) - # add_compile_options(-mavx512cd) - # add_compile_options(-mavx512dq) - # add_compile_options(-mavx512bw) + add_compile_options(-mavx512bw) endif() endif() else() @@ -221,17 +209,21 @@ endif() add_subdirectory(ggml) -if (BUILD_SHARED_LIBS) +if (RWKV_BUILD_SHARED_LIBRARY) set_target_properties(ggml PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() -add_library(rwkv rwkv.cpp rwkv.h) +if (RWKV_BUILD_SHARED_LIBRARY) + add_library(rwkv SHARED rwkv.cpp rwkv.h) +else() + add_library(rwkv rwkv.cpp rwkv.h) +endif() target_include_directories(rwkv PUBLIC .) -target_compile_features(rwkv PUBLIC cxx_std_11) # Don't bump +target_compile_features(rwkv PUBLIC cxx_std_11) target_link_libraries(rwkv PRIVATE ggml ${RWKV_EXTRA_LIBS}) -if (BUILD_SHARED_LIBS) +if (RWKV_BUILD_SHARED_LIBRARY) set_target_properties(rwkv PROPERTIES POSITION_INDEPENDENT_CODE ON) target_compile_definitions(rwkv PRIVATE RWKV_SHARED RWKV_BUILD) endif() diff --git a/README.md b/README.md index 6489426..feee4f7 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ On Windows: to check whether your CPU supports AVX2 or AVX-512, [use CPU-Z](http **Requirements**: [CMake](https://cmake.org/download/) or [CMake from anaconda](https://anaconda.org/conda-forge/cmake), MSVC compiler. ```commandline -cmake -DBUILD_SHARED_LIBS=ON . +cmake . cmake --build . --config Release ``` @@ -66,11 +66,11 @@ If everything went OK, `bin\Release\rwkv.dll` file should appear. **Requirements**: CMake (Linux: `sudo apt install cmake`, MacOS: `brew install cmake`, anaconoda: [cmake package](https://anaconda.org/conda-forge/cmake)). ```commandline -cmake -DBUILD_SHARED_LIBS=ON . +cmake . cmake --build . --config Release ``` -**Anaconda & M1 users**: please verify that `CMAKE_SYSTEM_PROCESSOR: arm64` after running `cmake -DBUILD_SHARED_LIBS=ON .` — if it detects `x86_64`, edit the `CMakeLists.txt` file under the `# Compile flags` to add `set(CMAKE_SYSTEM_PROCESSOR "arm64")`. +**Anaconda & M1 users**: please verify that `CMAKE_SYSTEM_PROCESSOR: arm64` after running `cmake .` — if it detects `x86_64`, edit the `CMakeLists.txt` file under the `# Compile flags` to add `set(CMAKE_SYSTEM_PROCESSOR "arm64")`. If everything went OK, `librwkv.so` (Linux) or `librwkv.dylib` (MacOS) file should appear in the base repo folder. diff --git a/ggml b/ggml index a0687a3..b237714 160000 --- a/ggml +++ b/ggml @@ -1 +1 @@ -Subproject commit a0687a3a3c4b31811219d7a61adfb66230b09201 +Subproject commit b237714db49cc09b63a372aeb33ca83bc56b3977