Lines Matching full:workspace

92 testing::AssertionResult BlobInWorkspace(xnn_blob* blob, xnn_workspace_t workspace) {  in BlobInWorkspace()  argument
93 if ((blob->data >= workspace->data) && in BlobInWorkspace()
94 ((uintptr_t) blob->data + blob->size) <= ((uintptr_t) workspace->data + workspace->size)) { in BlobInWorkspace()
99 << "is outside of workspace at " << workspace->data << " of size " << workspace->size; in BlobInWorkspace()
107 …return testing::AssertionFailure() << "runtime " << runtime << " not found in list of workspace us… in Contains()
111 std::vector<xnn_runtime_t> workspace_user_to_list(xnn_workspace_t workspace) in workspace_user_to_list() argument
114 for (xnn_runtime_t rt = workspace->first_user; rt != NULL; rt = rt->next_workspace_user) { in workspace_user_to_list()
121 TEST(WORKSPACE, static_data_not_moved_does_not_segv) in TEST() argument
127 xnn_workspace_t workspace = nullptr; in TEST() local
128 xnn_create_workspace(&workspace); in TEST()
129 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
137 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph1, nullptr, workspace, nullptr, 0, &ru… in TEST()
140 …// The workspace remains at size 0, without any memory allocated, since we don't have any internal… in TEST()
141 size_t old_workspace_size = workspace->size; in TEST()
143 void* old_runtime_workspace = runtime1->workspace->data; in TEST()
146 // Then create a graph that has internal tensors, we will need to resize the workspace. in TEST()
151 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph2, nullptr, workspace, nullptr, 0, &ru… in TEST()
154 // Check that the workspace grew. in TEST()
155 ASSERT_GE(workspace->size, num_elements * sizeof(float)); in TEST()
156 ASSERT_NE(runtime2->workspace->data, nullptr); in TEST()
180 TEST(WORKSPACE, workspace_no_growth) in TEST() argument
183 xnn_workspace_t workspace = nullptr; in TEST() local
184 xnn_create_workspace(&workspace); in TEST()
185 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
194 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph1, nullptr, workspace, nullptr, 0, &ru… in TEST()
197 size_t old_workspace_size = workspace->size; in TEST()
199 void* old_runtime_workspace = runtime1->workspace->data; in TEST()
202 // Create the same graph again with a different runtime that shares the workspace. in TEST()
208 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph2, nullptr, workspace, nullptr, 0, &ru… in TEST()
211 // Check that the workspace did not grow. in TEST()
212 ASSERT_EQ(workspace->size, old_workspace_size); in TEST()
213 // Check that runtime 2 uses the same workspace. in TEST()
214 ASSERT_EQ(runtime2->workspace->data, old_runtime_workspace); in TEST()
222 ASSERT_TRUE(BlobInWorkspace(blob1, runtime1->workspace)); in TEST()
224 ASSERT_TRUE(BlobInWorkspace(blob2, runtime2->workspace)); in TEST()
227 std::vector<xnn_runtime_t> workspace_users = workspace_user_to_list(workspace); in TEST()
231 ASSERT_EQ(workspace->ref_count, 3); in TEST()
234 TEST(WORKSPACE, workspace_grow) in TEST() argument
237 xnn_workspace_t workspace = nullptr; in TEST() local
238 ASSERT_EQ(xnn_status_success, xnn_create_workspace(&workspace)); in TEST()
239 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
248 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph1, nullptr, workspace, nullptr, 0, &ru… in TEST()
251 size_t old_workspace_size = workspace->size; in TEST()
253 void* old_runtime_workspace = runtime1->workspace->data; in TEST()
257 // Create the same graph but with larger tensors, this will require a larger workspace. in TEST()
264 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph2, nullptr, workspace, nullptr, 0, &ru… in TEST()
267 // Check that the workspace grew. in TEST()
268 ASSERT_GE(workspace->size, old_workspace_size); in TEST()
269 // Check that runtime 2 uses the same workspace. in TEST()
270 ASSERT_NE(runtime2->workspace->data, old_runtime_workspace); in TEST()
271 // Check that runtime1's workspace has been updated as well. in TEST()
272 ASSERT_EQ(runtime1->workspace->data, runtime2->workspace->data); in TEST()
273 ASSERT_EQ(runtime1->workspace->size, runtime2->workspace->size); in TEST()
281 ASSERT_TRUE(BlobInWorkspace(blob, runtime1->workspace)); in TEST()
288 ASSERT_TRUE(BlobInWorkspace(blob, runtime2->workspace)); in TEST()
291 std::vector<xnn_runtime_t> workspace_users = workspace_user_to_list(workspace); in TEST()
295 ASSERT_EQ(workspace->ref_count, 3); in TEST()
298 TEST(WORKSPACE, workspace_runtime_delete_head_runtime_first) in TEST() argument
301 xnn_workspace_t workspace = nullptr; in TEST() local
302 ASSERT_EQ(xnn_status_success, xnn_create_workspace(&workspace)); in TEST()
303 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
312 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph1, nullptr, workspace, nullptr, 0, &ru… in TEST()
320 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph2, nullptr, workspace, nullptr, 0, &ru… in TEST()
323 ASSERT_EQ(workspace->first_user, runtime2); in TEST()
327 ASSERT_EQ(workspace->ref_count, 3); in TEST()
329 ASSERT_EQ(workspace->first_user, runtime1); in TEST()
331 ASSERT_EQ(workspace->ref_count, 2); in TEST()
334 ASSERT_EQ(workspace->first_user, nullptr); in TEST()
335 ASSERT_EQ(workspace->ref_count, 1); in TEST()
338 TEST(WORKSPACE, workspace_runtime_delete_tail_runtime_first) in TEST() argument
341 xnn_workspace_t workspace = nullptr; in TEST() local
342 ASSERT_EQ(xnn_status_success, xnn_create_workspace(&workspace)); in TEST()
343 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
352 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph1, nullptr, workspace, nullptr, 0, &ru… in TEST()
360 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph2, nullptr, workspace, nullptr, 0, &ru… in TEST()
363 ASSERT_EQ(workspace->first_user, runtime2); in TEST()
367 ASSERT_EQ(workspace->ref_count, 3); in TEST()
370 ASSERT_EQ(workspace->first_user, runtime2); in TEST()
372 ASSERT_EQ(workspace->ref_count, 2); in TEST()
375 ASSERT_EQ(workspace->first_user, nullptr); in TEST()
376 ASSERT_EQ(workspace->ref_count, 1); in TEST()
379 TEST(WORKSPACE, workspace_runtime_delete_middle_runtime_first) in TEST() argument
382 xnn_workspace_t workspace = nullptr; in TEST() local
383 ASSERT_EQ(xnn_status_success, xnn_create_workspace(&workspace)); in TEST()
384 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
393 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph1, nullptr, workspace, nullptr, 0, &ru… in TEST()
401 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph2, nullptr, workspace, nullptr, 0, &ru… in TEST()
409 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph3, nullptr, workspace, nullptr, 0, &ru… in TEST()
412 ASSERT_EQ(workspace->first_user, runtime3); in TEST()
417 ASSERT_EQ(workspace->ref_count, 4); in TEST()
420 ASSERT_EQ(workspace->first_user, runtime3); in TEST()
423 ASSERT_EQ(workspace->ref_count, 3); in TEST()
426 ASSERT_EQ(workspace->first_user, runtime1); in TEST()
428 ASSERT_EQ(workspace->ref_count, 2); in TEST()
431 ASSERT_EQ(workspace->first_user, nullptr); in TEST()
432 ASSERT_EQ(workspace->ref_count, 1); in TEST()
435 TEST(WORKSPACE, zero_sized_workspace_for_graph_without_internal_tensors) in TEST() argument
438 xnn_workspace_t workspace = nullptr; in TEST() local
439 xnn_create_workspace(&workspace); in TEST()
440 …std::unique_ptr<xnn_workspace, decltype(&xnn_release_workspace)> auto_workspace(workspace, xnn_rel… in TEST()
449 …ASSERT_EQ(xnn_status_success, xnn_create_runtime_v4(subgraph, nullptr, workspace, nullptr, 0, &run… in TEST()
452 ASSERT_EQ(0, workspace->size); in TEST()
453 ASSERT_EQ(nullptr, workspace->data); in TEST()
454 ASSERT_EQ(std::vector<xnn_runtime_t>({runtime}), workspace_user_to_list(workspace)); in TEST()
455 ASSERT_EQ(workspace->ref_count, 2); in TEST()