diff options
author | LostRuins <39025047+LostRuins@users.noreply.github.com> | 2023-12-14 20:13:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-14 14:13:33 +0200 |
commit | 20a68a7030ee06e8eb7eb8e24ae4ac52dc17803f (patch) | |
tree | 3c84f1f362b064cdbbc2ec3044e47a38c9e44225 /ggml.c | |
parent | 55e87c3749cb4985c3b316984d40e00e4df4a5d0 (diff) |
ggml : add ggml_row_size() (fixes llama out of space) (#4461)
* Fixes "Not enough space in the context's memory pool" encountered on certain models, which seems to be caused by some imprecision related to the automatic casting of floating point values
* do not cast to size_t, instead just use doubles
* ggml : add ggml_row_size(), deprecate ggml_type_sizef()
* ggml : fix row size compute to avoid overflows
* tests : fix sizey -> sizez
---------
Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Diffstat (limited to 'ggml.c')
-rw-r--r-- | ggml.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -2011,8 +2011,13 @@ size_t ggml_type_size(enum ggml_type type) { return type_traits[type].type_size; } -float ggml_type_sizef(enum ggml_type type) { - return ((float)(type_traits[type].type_size))/type_traits[type].blck_size; +size_t ggml_row_size(enum ggml_type type, int64_t ne) { + assert(ne % ggml_blck_size(type) == 0); + return ggml_type_size(type)*ne/ggml_blck_size(type); +} + +double ggml_type_sizef(enum ggml_type type) { + return ((double)(type_traits[type].type_size))/type_traits[type].blck_size; } const char * ggml_type_name(enum ggml_type type) { |