summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDaniel Bevenius <daniel.bevenius@gmail.com>2024-04-10 20:16:48 +0200
committerGitHub <noreply@github.com>2024-04-10 21:16:48 +0300
commit8228b66dbc16290c5cbd70e80ab47c068e2569d8 (patch)
tree47b85d2785f3c98543d9fbb459ee732e932f4312 /examples
parentb3a96f27f065a828f08c5d89ff60aab5361188fe (diff)
gguf : add option to not check tensor data (#6582)
This commit adds an option to the gguf example to not check the tensor data. The motivation for this is that it can be nice to use the gguf tool to read other .gguf files that were not created by the gguf tool. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/gguf/gguf.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/examples/gguf/gguf.cpp b/examples/gguf/gguf.cpp
index 5444503a..57514377 100644
--- a/examples/gguf/gguf.cpp
+++ b/examples/gguf/gguf.cpp
@@ -142,7 +142,7 @@ static bool gguf_ex_read_0(const std::string & fname) {
}
// read and create ggml_context containing the tensors and their data
-static bool gguf_ex_read_1(const std::string & fname) {
+static bool gguf_ex_read_1(const std::string & fname, bool check_data) {
struct ggml_context * ctx_data = NULL;
struct gguf_init_params params = {
@@ -206,7 +206,7 @@ static bool gguf_ex_read_1(const std::string & fname) {
printf("\n\n");
// check data
- {
+ if (check_data) {
const float * data = (const float *) cur->data;
for (int j = 0; j < ggml_nelements(cur); ++j) {
if (data[j] != 100 + i) {
@@ -229,9 +229,16 @@ static bool gguf_ex_read_1(const std::string & fname) {
int main(int argc, char ** argv) {
if (argc < 3) {
- printf("usage: %s data.gguf r|w\n", argv[0]);
+ printf("usage: %s data.gguf r|w [n]\n", argv[0]);
+ printf("r: read data.gguf file\n");
+ printf("w: write data.gguf file\n");
+ printf("n: no check of tensor data\n");
return -1;
}
+ bool check_data = true;
+ if (argc == 4) {
+ check_data = false;
+ }
const std::string fname(argv[1]);
const std::string mode (argv[2]);
@@ -242,7 +249,7 @@ int main(int argc, char ** argv) {
GGML_ASSERT(gguf_ex_write(fname) && "failed to write gguf file");
} else if (mode == "r") {
GGML_ASSERT(gguf_ex_read_0(fname) && "failed to read gguf file");
- GGML_ASSERT(gguf_ex_read_1(fname) && "failed to read gguf file");
+ GGML_ASSERT(gguf_ex_read_1(fname, check_data) && "failed to read gguf file");
}
return 0;