lib/runtime/src/task_spec/device_specific_arg.h:
How do we make sure that ptr actually gets deallocated eventually (don't fix this this PR, but add an issue or just think about it as we'll need to solve this in the future)
struct DeviceSpecificArg {
private:
T *ptr;
size_t device_idx;
}