@@ -51,14 +51,14 @@ template <typename srcT, typename dstT> class Caster
51
51
{
52
52
public:
53
53
Caster () = default ;
54
- void operator ()(char *src,
54
+ void operator ()(const char *src,
55
55
std::ptrdiff_t src_offset,
56
56
char *dst,
57
57
std::ptrdiff_t dst_offset) const
58
58
{
59
59
using dpctl::tensor::type_utils::convert_impl;
60
60
61
- srcT *src_ = reinterpret_cast <srcT *>(src) + src_offset;
61
+ const srcT *src_ = reinterpret_cast <const srcT *>(src) + src_offset;
62
62
dstT *dst_ = reinterpret_cast <dstT *>(dst) + dst_offset;
63
63
*dst_ = convert_impl<dstT, srcT>(*src_);
64
64
}
@@ -67,17 +67,17 @@ template <typename srcT, typename dstT> class Caster
67
67
template <typename CastFnT> class GenericCopyFunctor
68
68
{
69
69
private:
70
- char *src_ = nullptr ;
70
+ const char *src_ = nullptr ;
71
71
char *dst_ = nullptr ;
72
- py::ssize_t *shape_strides_ = nullptr ;
72
+ const py::ssize_t *shape_strides_ = nullptr ;
73
73
int nd_ = 0 ;
74
74
py::ssize_t src_offset0 = 0 ;
75
75
py::ssize_t dst_offset0 = 0 ;
76
76
77
77
public:
78
- GenericCopyFunctor (char *src_cp,
78
+ GenericCopyFunctor (const char *src_cp,
79
79
char *dst_cp,
80
- py::ssize_t *shape_strides,
80
+ const py::ssize_t *shape_strides,
81
81
int nd,
82
82
py::ssize_t src_offset,
83
83
py::ssize_t dst_offset)
@@ -93,13 +93,11 @@ template <typename CastFnT> class GenericCopyFunctor
93
93
CIndexer_vector<py::ssize_t > indxr (nd_);
94
94
indxr.get_displacement <const py::ssize_t *, const py::ssize_t *>(
95
95
static_cast <py::ssize_t >(wiid.get (0 )),
96
- const_cast <const py::ssize_t *>(shape_strides_), // common shape
97
- const_cast <const py::ssize_t *>(shape_strides_ +
98
- nd_), // src strides
99
- const_cast <const py::ssize_t *>(shape_strides_ +
100
- 2 * nd_), // dst strides
101
- src_offset, // modified by reference
102
- dst_offset // modified by reference
96
+ shape_strides_, // common shape
97
+ shape_strides_ + nd_, // src strides
98
+ shape_strides_ + 2 * nd_, // dst strides
99
+ src_offset, // modified by reference
100
+ dst_offset // modified by reference
103
101
);
104
102
CastFnT fn{};
105
103
fn (src_, src_offset0 + src_offset, dst_, dst_offset0 + dst_offset);
@@ -109,7 +107,7 @@ template <typename CastFnT> class GenericCopyFunctor
109
107
template <int nd, typename CastFnT> class NDSpecializedCopyFunctor
110
108
{
111
109
private:
112
- char *src_ = nullptr ;
110
+ const char *src_ = nullptr ;
113
111
char *dst_ = nullptr ;
114
112
CIndexer_array<nd, py::ssize_t > indxr;
115
113
const std::array<py::ssize_t , nd> src_strides_;
@@ -119,8 +117,8 @@ template <int nd, typename CastFnT> class NDSpecializedCopyFunctor
119
117
py::ssize_t dst_offset0 = 0 ;
120
118
121
119
public:
122
- NDSpecializedCopyFunctor (char *src_cp, // USM pointer
123
- char *dst_cp, // USM pointer
120
+ NDSpecializedCopyFunctor (const char *src_cp, // USM pointer
121
+ char *dst_cp, // USM pointer
124
122
const std::array<py::ssize_t , nd> shape,
125
123
const std::array<py::ssize_t , nd> src_strides,
126
124
const std::array<py::ssize_t , nd> dst_strides,
@@ -140,8 +138,10 @@ template <int nd, typename CastFnT> class NDSpecializedCopyFunctor
140
138
141
139
local_indxr.set (wiid.get (0 ));
142
140
auto mi = local_indxr.get ();
141
+ #pragma unroll
143
142
for (int i = 0 ; i < nd; ++i)
144
143
src_offset += mi[i] * src_strides_[i];
144
+ #pragma unroll
145
145
for (int i = 0 ; i < nd; ++i)
146
146
dst_offset += mi[i] * dst_strides_[i];
147
147
@@ -161,8 +161,8 @@ typedef sycl::event (*copy_and_cast_generic_fn_ptr_t)(
161
161
sycl::queue,
162
162
size_t ,
163
163
int ,
164
- py::ssize_t *,
165
- char *,
164
+ const py::ssize_t *,
165
+ const char *,
166
166
py::ssize_t ,
167
167
char *,
168
168
py::ssize_t ,
@@ -207,8 +207,8 @@ sycl::event
207
207
copy_and_cast_generic_impl (sycl::queue q,
208
208
size_t nelems,
209
209
int nd,
210
- py::ssize_t *shape_and_strides,
211
- char *src_p,
210
+ const py::ssize_t *shape_and_strides,
211
+ const char *src_p,
212
212
py::ssize_t src_offset,
213
213
char *dst_p,
214
214
py::ssize_t dst_offset,
@@ -256,7 +256,7 @@ typedef sycl::event (*copy_and_cast_1d_fn_ptr_t)(
256
256
const std::array<py::ssize_t , 1 >,
257
257
const std::array<py::ssize_t , 1 >,
258
258
const std::array<py::ssize_t , 1 >,
259
- char *,
259
+ const char *,
260
260
py::ssize_t ,
261
261
char *,
262
262
py::ssize_t ,
@@ -272,7 +272,7 @@ typedef sycl::event (*copy_and_cast_2d_fn_ptr_t)(
272
272
const std::array<py::ssize_t , 2 >,
273
273
const std::array<py::ssize_t , 2 >,
274
274
const std::array<py::ssize_t , 2 >,
275
- char *,
275
+ const char *,
276
276
py::ssize_t ,
277
277
char *,
278
278
py::ssize_t ,
@@ -314,7 +314,7 @@ copy_and_cast_nd_specialized_impl(sycl::queue q,
314
314
const std::array<py::ssize_t , nd> shape,
315
315
const std::array<py::ssize_t , nd> src_strides,
316
316
const std::array<py::ssize_t , nd> dst_strides,
317
- char *src_p,
317
+ const char *src_p,
318
318
py::ssize_t src_offset,
319
319
char *dst_p,
320
320
py::ssize_t dst_offset,
0 commit comments