@@ -186,13 +186,6 @@ namespace detail {
186186 else {
187187 return cuda::std::invoke (std::forward<Func>(f), cuda::std::get<S>(std::forward<Tuple>(tuple))...);
188188 }
189-
190- if constexpr (!(is_std_tuple<remove_cvref_t <Tuple>>::value || is_std_array<remove_cvref_t <Tuple>>::value)) {
191- return cuda::std::invoke (std::forward<Func>(f), cuda::std::get<S>(std::forward<Tuple>(tuple))...);
192- }
193- else {
194- return cuda::std::invoke (std::forward<Func>(f), cuda::std::get<S>(std::forward<Tuple>(tuple))...);
195- }
196189 }
197190
198191 template <class Func , class Tuple >
@@ -208,17 +201,6 @@ namespace detail {
208201 std::forward<Func>(f), std::forward<Tuple>(t),
209202 std::make_index_sequence<cuda::std::tuple_size_v<remove_cvref_t <Tuple>>>{});
210203 }
211-
212- if constexpr (!(is_std_tuple<remove_cvref_t <Tuple>>::value || is_std_array<remove_cvref_t <Tuple>>::value)) {
213- return apply_impl (
214- std::forward<Func>(f), std::forward<Tuple>(t),
215- std::make_index_sequence<cuda::std::tuple_size_v<remove_cvref_t <Tuple>>>{});
216- }
217- else {
218- return apply_impl (
219- std::forward<Func>(f), std::forward<Tuple>(t),
220- std::make_index_sequence<cuda::std::tuple_size_v<remove_cvref_t <Tuple>>>{});
221- }
222204 }
223205
224206 template <class Func , class Tuple >
@@ -234,17 +216,6 @@ namespace detail {
234216 std::forward<Func>(f), std::forward<Tuple>(t),
235217 make_index_sequence_rev<cuda::std::tuple_size_v<remove_cvref_t <Tuple>>>{});
236218 }
237-
238- if constexpr (!(is_std_tuple<remove_cvref_t <Tuple>>::value || is_std_array<remove_cvref_t <Tuple>>::value)) {
239- return apply_impl (
240- std::forward<Func>(f), std::forward<Tuple>(t),
241- make_index_sequence_rev<cuda::std::tuple_size_v<remove_cvref_t <Tuple>>>{});
242- }
243- else {
244- return apply_impl (
245- std::forward<Func>(f), std::forward<Tuple>(t),
246- make_index_sequence_rev<cuda::std::tuple_size_v<remove_cvref_t <Tuple>>>{});
247- }
248219 }
249220
250221 template <typename T0, typename T1, typename ... Tn>
@@ -332,20 +303,6 @@ namespace detail {
332303 return i (args...);
333304 }, sliced_tup);
334305 }
335-
336- if constexpr (!(T::Rank () == int (sizeof ...(Is)) || T::Rank () == matxNoRank)) {
337- // Construct an integer sequence of the length of the tuple, but only using the last indices
338- using seq = offset_sequence_t <sizeof ...(Is) - T::Rank (), std::make_index_sequence<T::Rank ()>>;
339- auto tup = cuda::std::make_tuple (indices...);
340- auto sliced_tup = select_tuple (std::forward<decltype (tup)>(tup), seq{});
341- return cuda::std::apply ([&](auto ... args) {
342- return i (args...);
343- }, sliced_tup);
344- }
345- else
346- {
347- return i (indices...);
348- }
349306 }
350307
351308
@@ -360,15 +317,6 @@ namespace detail {
360317 {
361318 return i;
362319 }
363-
364- if constexpr (!is_matx_op<T>())
365- {
366- return i;
367- }
368- else
369- {
370- return get_matx_value (i, indices...);
371- }
372320 }
373321
374322 template <typename T> __MATX_INLINE__ std::string to_short_str () {
@@ -1184,6 +1132,21 @@ void print(const Op &op, [[maybe_unused]] Args... dims) {
11841132 cuda::std::apply ([&](auto &&...args ) { fprint (stdout, op, args...); }, tp);
11851133}
11861134
1135+ /* *
1136+ * @brief Print a tensor's all values to stdout
1137+ *
1138+ * This form of `print()` is a specialization for 0D tensors.
1139+ *
1140+ * @tparam Op Operator input type
1141+ * @param op Operator input
1142+ */
1143+ template <typename Op,
1144+ std::enable_if_t <(Op::Rank() == 0 ), bool > = true >
1145+ void print (const Op &op)
1146+ {
1147+ fprint (stdout, op);
1148+ }
1149+
11871150#endif // not DOXYGEN_ONLY
11881151
11891152template <typename Op>
0 commit comments