93 static Kokkos::View<typename view_type_input_data::data_type, typename view_type_input_data::array_layout, output_memory_space>
94 extractViewByIndex(view_type_input_data input_data_host_or_device, view_type_index_data index_data_host_or_device) {
96 typedef typename view_type_input_data::data_type output_data_type;
97 typedef typename view_type_input_data::array_layout output_array_layout;
100 auto input_data_host = Kokkos::create_mirror_view(input_data_host_or_device);
101 Kokkos::deep_copy(input_data_host, input_data_host_or_device);
105 auto index_data_host = Kokkos::create_mirror_view(index_data_host_or_device);
106 Kokkos::deep_copy(index_data_host, index_data_host_or_device);
110 Kokkos::View<output_data_type, output_array_layout, output_memory_space> extracted_view(
"extracted view",
111 index_data_host.extent(0), input_data_host.extent(1));
114 for (
size_t i=0; i<index_data_host.extent(0); i++) {
115 for (
size_t j=0; j<input_data_host.extent(1); j++) {
116 extracted_view(i, j) = input_data_host(index_data_host(i), j);
121 typedef Kokkos::View<output_data_type, output_array_layout, output_memory_space> output_view_type;
122 output_view_type extracted_view_output(
"output extracted view", extracted_view.extent(0), extracted_view.extent(1));
123 Kokkos::deep_copy(extracted_view_output, extracted_view);
126 return extracted_view_output;
133 extractViewByIndex(view_type_input_data input_data_host_or_device, view_type_index_data index_data_host_or_device) {
135 typedef typename view_type_input_data::data_type output_data_type;
136 typedef typename view_type_input_data::array_layout output_array_layout;
139 auto input_data_host = Kokkos::create_mirror_view(input_data_host_or_device);
140 Kokkos::deep_copy(input_data_host, input_data_host_or_device);
144 auto index_data_host = Kokkos::create_mirror_view(index_data_host_or_device);
145 Kokkos::deep_copy(index_data_host, index_data_host_or_device);
149 Kokkos::View<output_data_type, output_array_layout, output_memory_space> extracted_view(
"extracted view",
150 index_data_host.extent(0));
153 for (
size_t i=0; i<index_data_host.extent(0); i++) {
154 extracted_view(i) = input_data_host(index_data_host(i));
158 typedef Kokkos::View<output_data_type, output_array_layout, output_memory_space> output_view_type;
159 output_view_type extracted_view_output(
"output extracted view", extracted_view.extent(0));
160 Kokkos::deep_copy(extracted_view_output, extracted_view);
163 return extracted_view_output;