@@ -218,15 +218,12 @@ std::pair<sycl::event, sycl::event>
218218 std::vector<sycl::event> host_tasks{};
219219 host_tasks.reserve (2 );
220220
221- const auto & ptr_size_event_triple_ = device_allocate_and_pack<py::ssize_t >(
221+ auto ptr_size_event_triple_ = device_allocate_and_pack<py::ssize_t >(
222222 q, host_tasks, simplified_shape, simplified_src_strides,
223223 simplified_dst_strides);
224- py::ssize_t *shape_strides = std::get<0 >(ptr_size_event_triple_);
225- const sycl::event ©_shape_ev = std::get<2 >(ptr_size_event_triple_);
226-
227- if (shape_strides == nullptr ) {
228- throw std::runtime_error (" Device memory allocation failed" );
229- }
224+ auto shape_strides_owner = std::move (std::get<0 >(ptr_size_event_triple_));
225+ const auto ©_shape_ev = std::get<2 >(ptr_size_event_triple_);
226+ const py::ssize_t *shape_strides = shape_strides_owner.get ();
230227
231228 sycl::event strided_fn_ev =
232229 strided_fn (q, src_nelems, nd, shape_strides, src_data, src_offset,
@@ -543,16 +540,13 @@ std::pair<sycl::event, sycl::event> py_binary_ufunc(
543540 }
544541
545542 using dpctl::tensor::offset_utils::device_allocate_and_pack;
546- const auto & ptr_sz_event_triple_ = device_allocate_and_pack<py::ssize_t >(
543+ auto ptr_sz_event_triple_ = device_allocate_and_pack<py::ssize_t >(
547544 exec_q, host_tasks, simplified_shape, simplified_src1_strides,
548545 simplified_src2_strides, simplified_dst_strides);
546+ auto shape_strides_owner = std::move (std::get<0 >(ptr_sz_event_triple_));
547+ auto ©_shape_ev = std::get<2 >(ptr_sz_event_triple_);
549548
550- py::ssize_t *shape_strides = std::get<0 >(ptr_sz_event_triple_);
551- const sycl::event ©_shape_ev = std::get<2 >(ptr_sz_event_triple_);
552-
553- if (shape_strides == nullptr ) {
554- throw std::runtime_error (" Unable to allocate device memory" );
555- }
549+ const py::ssize_t *shape_strides = shape_strides_owner.get ();
556550
557551 sycl::event strided_fn_ev = strided_fn (
558552 exec_q, src_nelems, nd, shape_strides, src1_data, src1_offset,
@@ -796,16 +790,13 @@ std::pair<sycl::event, sycl::event>
796790 }
797791
798792 using dpctl::tensor::offset_utils::device_allocate_and_pack;
799- const auto & ptr_sz_event_triple_ = device_allocate_and_pack<py::ssize_t >(
793+ auto ptr_sz_event_triple_ = device_allocate_and_pack<py::ssize_t >(
800794 exec_q, host_tasks, simplified_shape, simplified_rhs_strides,
801795 simplified_lhs_strides);
796+ auto shape_strides_owner = std::move (std::get<0 >(ptr_sz_event_triple_));
797+ auto copy_shape_ev = std::get<2 >(ptr_sz_event_triple_);
802798
803- py::ssize_t *shape_strides = std::get<0 >(ptr_sz_event_triple_);
804- const sycl::event ©_shape_ev = std::get<2 >(ptr_sz_event_triple_);
805-
806- if (shape_strides == nullptr ) {
807- throw std::runtime_error (" Unable to allocate device memory" );
808- }
799+ const py::ssize_t *shape_strides = shape_strides_owner.get ();
809800
810801 sycl::event strided_fn_ev =
811802 strided_fn (exec_q, rhs_nelems, nd, shape_strides, rhs_data, rhs_offset,
0 commit comments