]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
tests: Generate unique input values for count_equal (#15487)
authorJeff Bolz <redacted>
Mon, 25 Aug 2025 15:47:16 +0000 (10:47 -0500)
committerGitHub <redacted>
Mon, 25 Aug 2025 15:47:16 +0000 (10:47 -0500)
This avoids backend-dependent behavior for argmax that leads to intermittent failures.

tests/test-backend-ops.cpp

index 74886b4549056bdc3b9c1fdc34aa92502c560581..ef6f452195ba202d6304a3af44af51f28bc39cc0 100644 (file)
@@ -2209,6 +2209,26 @@ struct test_count_equal : public test_case {
     double max_nmse_err() override {
         return 0.0;
     }
+
+    void initialize_tensors(ggml_context * ctx) override {
+        std::random_device rd;
+        std::default_random_engine rng(rd());
+        for (ggml_tensor * t = ggml_get_first_tensor(ctx); t != NULL; t = ggml_get_next_tensor(ctx, t)) {
+            if (t->type == GGML_TYPE_F32) {
+                // initialize with unique values to avoid ties
+                for (int64_t r = 0; r < ggml_nrows(t); r++) {
+                    std::vector<float> data(t->ne[0]);
+                    for (int i = 0; i < t->ne[0]; i++) {
+                        data[i] = i;
+                    }
+                    std::shuffle(data.begin(), data.end(), rng);
+                    ggml_backend_tensor_set(t, data.data(), r * t->nb[1], t->ne[0] * sizeof(float));
+                }
+            } else {
+                init_tensor_uniform(t);
+            }
+        }
+    }
 };
 
 // GGML_OP_REPEAT