}
// 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 = {
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) {
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]);
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;