Template Function shad::rt::asyncExecuteOnAll(Handle&, FunT&&, const std::shared_ptr<uint8_t>&, const uint32_t)¶
- Defined in File runtime.h
Function Documentation¶
-
template <typename FunT>
voidshad::rt
::
asyncExecuteOnAll
(Handle &handle, FunT &&func, const std::shared_ptr<uint8_t> &argsBuffer, const uint32_t bufferSize)¶ Execute a function on all localities synchronously.
Typical Usage:
struct Args { int a; char b; }; void task(Handle & handle, const uint8_t *, const uint32_t) { /* do something */ } Args args { 2, 'a' }; /* Args doesn't need a dynamic allocated buffer but * more complicated data structure might need it */ std::shared_ptr<uint8_t> ptr(new uint8_t[sizeof(Args)], std::default_delete<uint8_t[]>()); memcpy(ptr.get(), &args, sizeof(Args)); Handle handle; asyncExecuteOnAll(handle, task, ptr.get(), sizeof(Args)); /* do something else */ waitForCompletion(handle);
- Template Parameters
FunT
: The type of the function to be executed. The function prototype must be:void(Handle & handle, const uint8_t *, const uint32_t);
- Parameters
handle
: An Handle for the associated task-group.func
: The function to execute.argsBuffer
: A buffer of bytes to be passed to the function.bufferSize
: The size of the buffer argsBuffer passed.