mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-31 08:51:55 +00:00 
			
		
		
		
	ci : add an option to fail on compile warning (#3952)
* feat(ci): add an option to fail on compile warning * Update CMakeLists.txt * minor : fix compile warnings ggml-ci * ggml : fix unreachable code warnings ggml-ci * ci : disable fatal warnings for windows, ios and tvos * ggml : fix strncpy warning * ci : disable fatal warnings for MPI build * ci : add fatal warnings to ggml-ci ggml-ci --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
This commit is contained in:
		
							
								
								
									
										10
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -37,6 +37,8 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         id: make_build |         id: make_build | ||||||
|  |         env: | ||||||
|  |             LLAMA_FATAL_WARNINGS: 1 | ||||||
|         run: | |         run: | | ||||||
|           CC=gcc-8 make -j $(nproc) |           CC=gcc-8 make -j $(nproc) | ||||||
|  |  | ||||||
| @@ -65,7 +67,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           mkdir build |           mkdir build | ||||||
|           cd build |           cd build | ||||||
|           cmake .. |           cmake .. -DLLAMA_FATAL_WARNINGS=ON | ||||||
|           cmake --build . --config Release -j $(nproc) |           cmake --build . --config Release -j $(nproc) | ||||||
|  |  | ||||||
|       - name: Test |       - name: Test | ||||||
| @@ -100,7 +102,7 @@ jobs: | |||||||
|         run: | |         run: | | ||||||
|           mkdir build |           mkdir build | ||||||
|           cd build |           cd build | ||||||
|           cmake .. -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} |           cmake .. -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | ||||||
|           cmake --build . --config ${{ matrix.build_type }} -j $(nproc) |           cmake --build . --config ${{ matrix.build_type }} -j $(nproc) | ||||||
|  |  | ||||||
|       - name: Test |       - name: Test | ||||||
| @@ -244,6 +246,8 @@ jobs: | |||||||
|  |  | ||||||
|       - name: Build |       - name: Build | ||||||
|         id: make_build |         id: make_build | ||||||
|  |         env: | ||||||
|  |             LLAMA_FATAL_WARNINGS: 1 | ||||||
|         run: | |         run: | | ||||||
|           LLAMA_NO_METAL=1 make -j $(sysctl -n hw.logicalcpu) |           LLAMA_NO_METAL=1 make -j $(sysctl -n hw.logicalcpu) | ||||||
|  |  | ||||||
| @@ -277,7 +281,7 @@ jobs: | |||||||
|           sysctl -a |           sysctl -a | ||||||
|           mkdir build |           mkdir build | ||||||
|           cd build |           cd build | ||||||
|           cmake -DLLAMA_METAL=OFF .. |           cmake -DLLAMA_FATAL_WARNINGS=ON -DLLAMA_METAL=OFF .. | ||||||
|           cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) |           cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) | ||||||
|  |  | ||||||
|       - name: Test |       - name: Test | ||||||
|   | |||||||
| @@ -55,6 +55,9 @@ option(LLAMA_ALL_WARNINGS               "llama: enable all compiler warnings" | |||||||
| option(LLAMA_ALL_WARNINGS_3RD_PARTY     "llama: enable all compiler warnings in 3rd party libs" OFF) | option(LLAMA_ALL_WARNINGS_3RD_PARTY     "llama: enable all compiler warnings in 3rd party libs" OFF) | ||||||
| option(LLAMA_GPROF                      "llama: enable gprof"                                   OFF) | option(LLAMA_GPROF                      "llama: enable gprof"                                   OFF) | ||||||
|  |  | ||||||
|  | # build | ||||||
|  | option(LLAMA_FATAL_WARNINGS             "llama: enable -Werror flag"                            OFF) | ||||||
|  |  | ||||||
| # sanitizers | # sanitizers | ||||||
| option(LLAMA_SANITIZE_THREAD            "llama: enable thread sanitizer"                        OFF) | option(LLAMA_SANITIZE_THREAD            "llama: enable thread sanitizer"                        OFF) | ||||||
| option(LLAMA_SANITIZE_ADDRESS           "llama: enable address sanitizer"                       OFF) | option(LLAMA_SANITIZE_ADDRESS           "llama: enable address sanitizer"                       OFF) | ||||||
| @@ -142,6 +145,14 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) | |||||||
| find_package(Threads REQUIRED) | find_package(Threads REQUIRED) | ||||||
| include(CheckCXXCompilerFlag) | include(CheckCXXCompilerFlag) | ||||||
|  |  | ||||||
|  | if (LLAMA_FATAL_WARNINGS) | ||||||
|  |     if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||||||
|  |         add_compile_options(-Werror) | ||||||
|  |     elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") | ||||||
|  |         add_compile_options(/WX) | ||||||
|  |     endif() | ||||||
|  | endif() | ||||||
|  |  | ||||||
| # enable libstdc++ assertions for debug builds | # enable libstdc++ assertions for debug builds | ||||||
| if (CMAKE_SYSTEM_NAME MATCHES "Linux") | if (CMAKE_SYSTEM_NAME MATCHES "Linux") | ||||||
|     add_compile_definitions($<$<CONFIG:Debug>:_GLIBCXX_ASSERTIONS>) |     add_compile_definitions($<$<CONFIG:Debug>:_GLIBCXX_ASSERTIONS>) | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								Makefile
									
									
									
									
									
								
							| @@ -215,6 +215,35 @@ MK_CFLAGS    += $(WARN_FLAGS) -Wshadow -Wstrict-prototypes -Wpointer-arith -Wmis | |||||||
| 				-Werror=implicit-function-declaration | 				-Werror=implicit-function-declaration | ||||||
| MK_CXXFLAGS  += $(WARN_FLAGS) -Wmissing-declarations -Wmissing-noreturn | MK_CXXFLAGS  += $(WARN_FLAGS) -Wmissing-declarations -Wmissing-noreturn | ||||||
|  |  | ||||||
|  | ifeq ($(LLAMA_FATAL_WARNINGS),1) | ||||||
|  | 	MK_CFLAGS += -Werror | ||||||
|  | 	MK_CXXFLAGS += -Werror | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifeq ($(CC_IS_CLANG), 1) | ||||||
|  | 	# clang options | ||||||
|  | 	MK_CFLAGS        += -Wunreachable-code-break -Wunreachable-code-return | ||||||
|  | 	MK_HOST_CXXFLAGS += -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi | ||||||
|  |  | ||||||
|  | 	ifneq '' '$(and $(CC_IS_LLVM_CLANG),$(filter 1,$(shell expr $(CC_VER) \>= 030800)))' | ||||||
|  | 		MK_CFLAGS += -Wdouble-promotion | ||||||
|  | 	endif | ||||||
|  | 	ifneq '' '$(and $(CC_IS_APPLE_CLANG),$(filter 1,$(shell expr $(CC_VER) \>= 070300)))' | ||||||
|  | 		MK_CFLAGS += -Wdouble-promotion | ||||||
|  | 	endif | ||||||
|  | else | ||||||
|  | 	# gcc options | ||||||
|  | 	MK_CFLAGS        += -Wdouble-promotion | ||||||
|  | 	MK_HOST_CXXFLAGS += -Wno-array-bounds | ||||||
|  |  | ||||||
|  | 	ifeq ($(shell expr $(CC_VER) \>= 070100), 1) | ||||||
|  | 		MK_HOST_CXXFLAGS += -Wno-format-truncation | ||||||
|  | 	endif | ||||||
|  | 	ifeq ($(shell expr $(CC_VER) \>= 080100), 1) | ||||||
|  | 		MK_HOST_CXXFLAGS += -Wextra-semi | ||||||
|  | 	endif | ||||||
|  | endif | ||||||
|  |  | ||||||
| # this version of Apple ld64 is buggy | # this version of Apple ld64 is buggy | ||||||
| ifneq '' '$(findstring dyld-1015.7,$(shell $(CC) $(LDFLAGS) -Wl,-v 2>&1))' | ifneq '' '$(findstring dyld-1015.7,$(shell $(CC) $(LDFLAGS) -Wl,-v 2>&1))' | ||||||
| 	MK_CPPFLAGS += -DHAVE_BUGGY_APPLE_LINKER | 	MK_CPPFLAGS += -DHAVE_BUGGY_APPLE_LINKER | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ sd=`dirname $0` | |||||||
| cd $sd/../ | cd $sd/../ | ||||||
| SRC=`pwd` | SRC=`pwd` | ||||||
|  |  | ||||||
| CMAKE_EXTRA="" | CMAKE_EXTRA="-DLLAMA_FATAL_WARNINGS=ON" | ||||||
|  |  | ||||||
| if [ ! -z ${GG_BUILD_METAL} ]; then | if [ ! -z ${GG_BUILD_METAL} ]; then | ||||||
|     CMAKE_EXTRA="${CMAKE_EXTRA} -DLLAMA_METAL_SHADER_DEBUG=ON" |     CMAKE_EXTRA="${CMAKE_EXTRA} -DLLAMA_METAL_SHADER_DEBUG=ON" | ||||||
|   | |||||||
| @@ -7,8 +7,6 @@ | |||||||
| #include <string> | #include <string> | ||||||
| #include <thread> | #include <thread> | ||||||
|  |  | ||||||
| static const size_t tensor_alignment = 32; |  | ||||||
|  |  | ||||||
| struct lora_info { | struct lora_info { | ||||||
|     std::string filename; |     std::string filename; | ||||||
|     float scale; |     float scale; | ||||||
|   | |||||||
| @@ -1006,6 +1006,7 @@ static int ggml_backend_sched_backend_from_buffer(ggml_backend_sched_t sched, gg | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     GGML_ASSERT(false && "tensor buffer type not supported by any backend"); |     GGML_ASSERT(false && "tensor buffer type not supported by any backend"); | ||||||
|  |     return -1; // silence warning | ||||||
| } | } | ||||||
|  |  | ||||||
| #if 0 | #if 0 | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								ggml.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								ggml.c
									
									
									
									
									
								
							| @@ -868,7 +868,7 @@ do {                                                              \ | |||||||
|     const __m128 t0 = _mm_add_ps(_mm256_castps256_ps128(x[0]),    \ |     const __m128 t0 = _mm_add_ps(_mm256_castps256_ps128(x[0]),    \ | ||||||
|                                  _mm256_extractf128_ps(x[0], 1)); \ |                                  _mm256_extractf128_ps(x[0], 1)); \ | ||||||
|     const __m128 t1 = _mm_hadd_ps(t0, t0);                        \ |     const __m128 t1 = _mm_hadd_ps(t0, t0);                        \ | ||||||
|     res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \ |     res = (ggml_float) _mm_cvtss_f32(_mm_hadd_ps(t1, t1));        \ | ||||||
| } while (0) | } while (0) | ||||||
| // TODO: is this optimal ? | // TODO: is this optimal ? | ||||||
|  |  | ||||||
| @@ -1149,7 +1149,7 @@ inline static void __wasm_f16x4_store(ggml_fp16_t * p, v128_t x) { | |||||||
|         x[i] = _mm_add_ps(x[i], x[offset+i]);                     \ |         x[i] = _mm_add_ps(x[i], x[offset+i]);                     \ | ||||||
|     }                                                             \ |     }                                                             \ | ||||||
|     const __m128 t0 = _mm_hadd_ps(x[0], x[0]);                    \ |     const __m128 t0 = _mm_hadd_ps(x[0], x[0]);                    \ | ||||||
|     res = _mm_cvtss_f32(_mm_hadd_ps(t0, t0));                     \ |     res = (ggml_float) _mm_cvtss_f32(_mm_hadd_ps(t0, t0));        \ | ||||||
| } | } | ||||||
| // TODO: is this optimal ? | // TODO: is this optimal ? | ||||||
|  |  | ||||||
| @@ -2086,6 +2086,7 @@ void ggml_numa_init(enum ggml_numa_strategy numa_flag) { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| #else | #else | ||||||
|  |     GGML_UNUSED(numa_flag); | ||||||
|     // TODO |     // TODO | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| @@ -3219,7 +3220,7 @@ const char * ggml_get_name(const struct ggml_tensor * tensor) { | |||||||
| } | } | ||||||
|  |  | ||||||
| struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name) { | struct ggml_tensor * ggml_set_name(struct ggml_tensor * tensor, const char * name) { | ||||||
|     strncpy(tensor->name, name, sizeof(tensor->name)); |     strncpy(tensor->name, name, sizeof(tensor->name) - 1); | ||||||
|     tensor->name[sizeof(tensor->name) - 1] = '\0'; |     tensor->name[sizeof(tensor->name) - 1] = '\0'; | ||||||
|     return tensor; |     return tensor; | ||||||
| } | } | ||||||
| @@ -18575,7 +18576,9 @@ static enum ggml_opt_result linesearch_backtracking( | |||||||
|         (*step) *= width; |         (*step) *= width; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     GGML_UNREACHABLE(); |     GGML_ASSERT(false && "line search failed"); | ||||||
|  |  | ||||||
|  |     return GGML_LINESEARCH_FAIL; | ||||||
| } | } | ||||||
|  |  | ||||||
| static enum ggml_opt_result ggml_opt_lbfgs( | static enum ggml_opt_result ggml_opt_lbfgs( | ||||||
| @@ -18843,7 +18846,9 @@ static enum ggml_opt_result ggml_opt_lbfgs( | |||||||
|         step[0] = 1.0; |         step[0] = 1.0; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     GGML_UNREACHABLE(); |     GGML_ASSERT(false && "lbfgs failed"); | ||||||
|  |  | ||||||
|  |     return GGML_OPT_DID_NOT_CONVERGE; | ||||||
| } | } | ||||||
|  |  | ||||||
| struct ggml_opt_params ggml_opt_default_params(enum ggml_opt_type type) { | struct ggml_opt_params ggml_opt_default_params(enum ggml_opt_type type) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ananta Bastola
					Ananta Bastola