MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / test_roll

Function test_roll

external/ggml/tests/test-roll.cpp:68–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68bool test_roll(std::array<int64_t, 4> ne, std::array<int, 4> shift, bool permute) {
69 ggml_time_init();
70
71 ggml_init_params params {
72 /*.mem_size =*/ 64 * ggml_tensor_overhead() + ggml_graph_overhead(),
73 /*.mem_buffer =*/ NULL,
74 /*.no_alloc =*/ true
75 };
76
77 ggml_context_ptr ctx_ptr{ggml_init(params)};
78 ggml_context * ctx = ctx_ptr.get();
79 ggml_cgraph * gf = ggml_new_graph(ctx);
80
81 // Build graph
82 ggml_tensor * src = ggml_new_tensor(ctx, GGML_TYPE_F32, 4, ne.data());
83 ggml_tensor * res;
84 if (!permute) {
85 res = ggml_roll(ctx, src, shift[0], shift[1], shift[2], shift[3]);
86 } else {
87 ggml_tensor * p = ggml_permute(ctx, src, 0, 3, 1, 2);
88 res = ggml_roll(ctx, p, shift[0], shift[2], shift[3], shift[1]);
89 res = ggml_cont(ctx, ggml_permute(ctx, res, 0, 2, 3, 1));
90 }
91 ggml_build_forward_expand(gf, res);
92
93 // Create backend & allocate buffers
94 ggml_backend_ptr backend_ptr{ggml_backend_cpu_init()};
95 ggml_backend_t backend = backend_ptr.get();
96 ggml_backend_cpu_set_n_threads(backend, 2);
97 ggml_backend_buffer_ptr buffer{ggml_backend_alloc_ctx_tensors(ctx, backend)};
98
99 std::vector<float> src_values = f32_range(ggml_nelements(src));
100 ggml_backend_tensor_set(src, src_values.data(), 0, ggml_nbytes(src));
101
102 // Execute and compare results
103 ggml_backend_graph_compute(backend, gf);
104
105 std::vector<float> res_values(ggml_nelements(res));
106 ggml_backend_tensor_get(res, res_values.data(), 0, ggml_nbytes(res));
107
108 std::vector<float> expected = roll_reference(src_values.data(), ne, shift);
109
110 bool passed = check_equal(res_values, expected);
111
112 printf("ggml_roll(%d(%d), %d(%d), %d(%d), %d(%d), %s): %s\n",
113 int(ne[0]), int(shift[0]),
114 int(ne[1]), int(shift[1]),
115 int(ne[2]), int(shift[2]),
116 int(ne[3]), int(shift[3]),
117 permute ? "permuted" : "contiguous",
118 passed ? "\033[32mPASSED\033[0m" : "\033[31mFAILED\033[0m");
119 return passed;
120}
121
122int main() {
123 bool passed = true;

Callers 1

mainFunction · 0.70

Calls 15

ggml_time_initFunction · 0.85
ggml_tensor_overheadFunction · 0.85
ggml_graph_overheadFunction · 0.85
ggml_initFunction · 0.85
ggml_new_graphFunction · 0.85
ggml_new_tensorFunction · 0.85
ggml_rollFunction · 0.85
ggml_permuteFunction · 0.85
ggml_contFunction · 0.85
ggml_backend_cpu_initFunction · 0.85

Tested by

no test coverage detected