17 : input_shape_{input.shape()},
18 input_strides_{input.strides()},
19 input_type_{input.dtype()},
20 out_shape_{out.shape()},
21 out_strides_{out.strides()},
22 out_type_{out.dtype()},
23 output_size_{out.numel()},
25 is_input_contiguous_{input.IsContiguous()},
26 is_out_contiguous_{out.IsContiguous()},
27 device_index_{out.device().index()} {
28 assert(input_shape_ == out_shape_ &&
29 "`RearrangeInfinilm` input and output shapes must match");
30 assert(input_type_ == out_type_ &&
31 "`RearrangeInfinilm` input and output dtypes must match");
32 assert(!out.HasBroadcastDim() &&
33 "`RearrangeInfinilm` output must not have broadcasted dimensions");