Lines Matching refs:group
253 AsyncGroup *group = new AsyncGroup(getDefaultAsyncRuntime(), size); in mlirAsyncRuntimeCreateGroup() local
254 return group; in mlirAsyncRuntimeCreateGroup()
258 AsyncGroup *group) { in mlirAsyncRuntimeAddTokenToGroup() argument
260 std::unique_lock<std::mutex> lockGroup(group->mu); in mlirAsyncRuntimeAddTokenToGroup()
263 int rank = group->rank.fetch_add(1); in mlirAsyncRuntimeAddTokenToGroup()
265 auto onTokenReady = [group, token]() { in mlirAsyncRuntimeAddTokenToGroup()
268 group->numErrors.fetch_add(1); in mlirAsyncRuntimeAddTokenToGroup()
272 assert(group->pendingTokens > 0 && "wrong group size"); in mlirAsyncRuntimeAddTokenToGroup()
275 if (group->pendingTokens.fetch_sub(1) == 1) { in mlirAsyncRuntimeAddTokenToGroup()
276 group->cv.notify_all(); in mlirAsyncRuntimeAddTokenToGroup()
277 for (auto &awaiter : group->awaiters) in mlirAsyncRuntimeAddTokenToGroup()
290 group->addRef(); in mlirAsyncRuntimeAddTokenToGroup()
292 token->awaiters.emplace_back([group, onTokenReady]() { in mlirAsyncRuntimeAddTokenToGroup()
295 std::unique_lock<std::mutex> lockGroup(group->mu); in mlirAsyncRuntimeAddTokenToGroup()
298 group->dropRef(); in mlirAsyncRuntimeAddTokenToGroup()
367 extern "C" bool mlirAsyncRuntimeIsGroupError(AsyncGroup *group) { in mlirAsyncRuntimeIsGroupError() argument
368 return group->numErrors.load() > 0; in mlirAsyncRuntimeIsGroupError()
385 extern "C" void mlirAsyncRuntimeAwaitAllInGroup(AsyncGroup *group) { in mlirAsyncRuntimeAwaitAllInGroup() argument
386 std::unique_lock<std::mutex> lock(group->mu); in mlirAsyncRuntimeAwaitAllInGroup()
387 if (group->pendingTokens != 0) in mlirAsyncRuntimeAwaitAllInGroup()
388 group->cv.wait(lock, [group] { return group->pendingTokens == 0; }); in mlirAsyncRuntimeAwaitAllInGroup()
428 extern "C" void mlirAsyncRuntimeAwaitAllInGroupAndExecute(AsyncGroup *group, in mlirAsyncRuntimeAwaitAllInGroupAndExecute() argument
432 std::unique_lock<std::mutex> lock(group->mu); in mlirAsyncRuntimeAwaitAllInGroupAndExecute()
433 if (group->pendingTokens == 0) { in mlirAsyncRuntimeAwaitAllInGroupAndExecute()
437 group->awaiters.emplace_back([execute]() { execute(); }); in mlirAsyncRuntimeAwaitAllInGroupAndExecute()