-
Notifications
You must be signed in to change notification settings - Fork 11.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding missing features of CMakeLists.txt & Refactoring #131
Conversation
Refactoring: 1. Simplify more options that are negation of negation. LLAMA_NO_ACCELERATE -> LLAMA_ACCELERATE 2. Changed to an optional expression instead of forcing to enable AVX2 in MSVC. 3. Make CMAKE_CXX_STANDARD, which is different from Makefile, the same. 4. Use add_compile_options instead of adding options to CMAKE_C_FLAGS. 5. Make utils use target_link_libraries instead of directly referencing code. Added features: 1. Added some options. LLAMA_STATIC_LINK,LLAMA_NATIVE,LLAMA_LTO,LLAMA_GPROF,LLAMA_OPENBLAS
Someone figure out with the Windows build is failing and merge |
LLAMA_LTO was changed so that it can be used outside of Release so that it can be built on Windows. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ggerganov should we upgrade form cmake 3.9 to 3.12 ?
What is the reasoning for changing C++11 standard to C++17 since the project does not use any of C++17 extensions? To my knowledge all compiler versions which support C++17 also support C++11, but not vice-versa. |
readme: Include reference to go port
We have come up with several changes to CMakeLists.txt that are expected to improve performance, compatibility, and maintainability, and we have drafted them.
Change list :
Change LLAMA_NO_ACCELERATE to LLAMA_ACCELERATE to avoid "NOT NO" in if statements.
I see no reason to make it Apple-only. It should be possible to enable/disable on all platforms.
Use "add_compile_options" instead of writing directly to CMAKE_C_FLAGS to avoid double flags and compile errors due to typos.
LLAMA_STATIC_LINK, LLAMA_NATIVE, and LLAMA_LTO were added.
LLAMA_STATIC_LINK is an option to enable static linking. This will be useful when compiling for Windows with MinGW and for future distribution.
Also, LLAMA_NATIVE to add -march=native and LLAMA_LTO for link-time optimization will both be useful options for this project for speed.
cmake_minimum_required was changed to 3.9 for LTO support.
CMAKE_CXX_STANDARD was changed to c++11, the same as in the Makefile.
I made utils build using add_library and link to it.
Added Threads link since it was missing.
Added option LLAMA_OPENBLAS. (Not tested).
We have confirmed that it works on MSVC, MSVC Clang GUN like (not clang-cl), MinGW, and Cygwin on Windows, but have not confirmed that it works on other platforms.
Also, prioritizing CMake's features may sometimes sacrifice simplicity.
P.S. Sorry if there is any strange English. This is using automatic translation.