summaryrefslogtreecommitdiff
path: root/ggml.c
diff options
context:
space:
mode:
authorLostRuins <39025047+LostRuins@users.noreply.github.com>2023-12-14 20:13:33 +0800
committerGitHub <noreply@github.com>2023-12-14 14:13:33 +0200
commit20a68a7030ee06e8eb7eb8e24ae4ac52dc17803f (patch)
tree3c84f1f362b064cdbbc2ec3044e47a38c9e44225 /ggml.c
parent55e87c3749cb4985c3b316984d40e00e4df4a5d0 (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.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ggml.c b/ggml.c
index 7e127281..f0a97269 100644
--- a/ggml.c
+++ b/ggml.c
@@ -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) {