101 static Kokkos::View<typename view_type_input_data::data_type, typename view_type_input_data::array_layout, output_memory_space>
102 extractViewByIndex(view_type_input_data input_data_host_or_device, view_type_index_data index_data_host_or_device) {
104 typedef typename view_type_input_data::data_type output_data_type;
105 typedef typename view_type_input_data::array_layout output_array_layout;
108 auto input_data_host = Kokkos::create_mirror_view(input_data_host_or_device);
109 Kokkos::deep_copy(input_data_host, input_data_host_or_device);
113 auto index_data_host = Kokkos::create_mirror_view(index_data_host_or_device);
114 Kokkos::deep_copy(index_data_host, index_data_host_or_device);
118 Kokkos::View<output_data_type, output_array_layout, output_memory_space> extracted_view(
"extracted view",
119 index_data_host.extent(0), input_data_host.extent(1));
122 for (
size_t i=0; i<index_data_host.extent(0); i++) {
123 for (
size_t j=0; j<input_data_host.extent(1); j++) {
124 extracted_view(i, j) = input_data_host(index_data_host(i), j);
129 typedef Kokkos::View<output_data_type, output_array_layout, output_memory_space> output_view_type;
130 output_view_type extracted_view_output(
"output extracted view", extracted_view.extent(0), extracted_view.extent(1));
131 Kokkos::deep_copy(extracted_view_output, extracted_view);
134 return extracted_view_output;
141 extractViewByIndex(view_type_input_data input_data_host_or_device, view_type_index_data index_data_host_or_device) {
143 typedef typename view_type_input_data::data_type output_data_type;
144 typedef typename view_type_input_data::array_layout output_array_layout;
147 auto input_data_host = Kokkos::create_mirror_view(input_data_host_or_device);
148 Kokkos::deep_copy(input_data_host, input_data_host_or_device);
152 auto index_data_host = Kokkos::create_mirror_view(index_data_host_or_device);
153 Kokkos::deep_copy(index_data_host, index_data_host_or_device);
157 Kokkos::View<output_data_type, output_array_layout, output_memory_space> extracted_view(
"extracted view",
158 index_data_host.extent(0));
161 for (
size_t i=0; i<index_data_host.extent(0); i++) {
162 extracted_view(i) = input_data_host(index_data_host(i));
166 typedef Kokkos::View<output_data_type, output_array_layout, output_memory_space> output_view_type;
167 output_view_type extracted_view_output(
"output extracted view", extracted_view.extent(0));
168 Kokkos::deep_copy(extracted_view_output, extracted_view);
171 return extracted_view_output;