From b6f9640157aa6046e2312f072cf616f7af55cc73 Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Sat, 11 Jan 2025 17:00:01 +0200 Subject: [PATCH] contrib : add TODO for preprocessor directives [no ci] --- CONTRIBUTING.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e82851dd6..d35a3ec9e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,16 +23,24 @@ - Vertical alignment makes things more readable and easier to batch edit - Clean-up any trailing whitespaces, use 4 spaces for indentation, brackets on the same line, `void * ptr`, `int & a` - Use sized integer types in the public API -- Declare structs with `struct x {}` instead of `typedef struct x {} x` +- Declare structs with `struct foo {}` instead of `typedef struct foo {} foo` - In C++ code omit the `struct` keyword whenever it is not necessary > [!NOTE] > This guideline is yet to be applied to the `llama.cpp` codebase. New code should follow this guideline. +- Try to follow the existing patterns in the code (indentation, spaces, etc.). In case of doubt use `clang-format` to format the added code - Tensors store data in row-major order. We refer to dimension 0 as columns, 1 as rows, 2 as matrices - Matrix multiplication is unconventional: [`C = ggml_mul_mat(ctx, A, B)`](https://github.com/ggerganov/llama.cpp/blob/880e352277fc017df4d5794f0c21c44e1eae2b84/ggml.h#L1058-L1064) means $C^T = A B^T \Leftrightarrow C = B A^T.$ -- Try to follow the existing patterns in the code (indentation, spaces, etc.). In case of doubt use `clang-format` to format the added code ![matmul](media/matmul.png) +- Preprocessor directives + - (TODO: add guidelines with examples and apply them to the codebase) + + ```cpp + #ifdef FOO + #endif // FOO + ``` + # Naming guidelines - Use `snake_case` for function, variable and type names