mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-11-14 06:49:54 +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:
parent
d250c9d61d
commit
6e4e973b26
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
|
||||||
|
@ -176,7 +176,7 @@ struct ggml_metal_context {
|
|||||||
// MSL code
|
// MSL code
|
||||||
// TODO: move the contents here when ready
|
// TODO: move the contents here when ready
|
||||||
// for now it is easier to work in a separate file
|
// for now it is easier to work in a separate file
|
||||||
//static NSString * const msl_library_source = @"see metal.metal";
|
// static NSString * const msl_library_source = @"see metal.metal";
|
||||||
|
|
||||||
// Here to assist with NSBundle Path Hack
|
// Here to assist with NSBundle Path Hack
|
||||||
@interface GGMLMetalClass : NSObject
|
@interface GGMLMetalClass : NSObject
|
||||||
|
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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user