11 template <
typename TT>
14 return std::make_tuple();
28 template <
typename TT,
typename... PP>
31 auto spb = b.get_host_accessible();
32 return std::tuple_cat(std::make_tuple
33 (spb, spb.get()), get_host_accessible<TT>(args...));
37 template <
typename TT>
40 return std::make_tuple();
54 template <
typename TT,
typename... PP>
57 auto spb = b.get_cuda_accessible();
58 return std::tuple_cat(std::make_tuple
59 (spb, spb.get()), get_cuda_accessible<TT>(args...));
63 template <
typename TT>
66 return std::make_tuple();
80 template <
typename TT,
typename... PP>
83 auto spb = b.get_hip_accessible();
84 return std::tuple_cat(std::make_tuple
85 (spb, spb.get()), get_hip_accessible<TT>(args...));
89 template <
typename TT>
92 return std::make_tuple();
106 template <
typename TT,
typename... PP>
109 auto spb = b.get_openmp_accessible();
110 return std::tuple_cat(std::make_tuple
111 (spb, spb.get()), get_openmp_accessible<TT>(args...));
115 template <
typename TT>
118 return std::make_tuple();
132 template <
typename TT,
typename... PP>
135 auto spb = b.get_device_accessible();
136 return std::tuple_cat(std::make_tuple
137 (spb, spb.get()), get_device_accessible<TT>(args...));
147 template <
typename... PP>
150 return std::make_tuple(args.data()...);
159 template <
typename... PP>
162 return std::make_tuple(args.pointer()...);
173 template <
typename... PP>
176 (args.synchronize(), ...);
187 template <
typename NT>
191 return std::make_tuple(buf, buf.data());
203 template <
typename NT>
207 return std::make_tuple(buf, buf.data());