@@ -130,34 +130,43 @@ Tensor pruned_array_lookup_from_row_idx_cpu(
130130 const auto num_indices = update_row_indices.numel ();
131131
132132 AT_DISPATCH_INDEX_TYPES (
133- update_row_indices .scalar_type (),
134- " pruned_array_lookup_from_row_idx_cpu_kernel " ,
133+ index_remappings .scalar_type (),
134+ " pruned_array_lookup_from_row_idx_cpu_0 " ,
135135 [&] {
136- const auto update_row_indices_acc =
137- update_row_indices.accessor <index_t , 1 >();
138- auto dense_indices_acc = dense_indices.accessor <index_t , 1 >();
139- const auto update_table_indices_acc =
140- update_table_indices.accessor <int32_t , 1 >();
141-
142- const auto index_remappings_acc =
143- index_remappings.accessor <int32_t , 1 >();
144- const auto index_remappings_offsets_acc =
145- index_remappings_offsets.accessor <int64_t , 1 >();
146- for (const auto idx : c10::irange (num_indices)) {
147- const int table_idx = update_table_indices_acc[idx];
148- const auto row_idx = update_row_indices_acc[idx];
149- int64_t index_remappings_start =
150- index_remappings_offsets_acc[table_idx];
151- int64_t index_remappings_end =
152- index_remappings_offsets_acc[table_idx + 1 ];
153- int64_t capacity = index_remappings_end - index_remappings_start;
154- if (capacity > 0 ) {
155- dense_indices_acc[idx] =
156- index_remappings_acc[index_remappings_start + row_idx];
157- } else {
158- dense_indices_acc[idx] = row_idx;
159- }
160- }
136+ using remap_t = index_t ;
137+
138+ AT_DISPATCH_INDEX_TYPES (
139+ update_row_indices.scalar_type (),
140+ " pruned_array_lookup_from_row_idx_cpu_1" ,
141+ [&] {
142+ const auto update_row_indices_acc =
143+ update_row_indices.accessor <index_t , 1 >();
144+ auto dense_indices_acc = dense_indices.accessor <index_t , 1 >();
145+ const auto update_table_indices_acc =
146+ update_table_indices.accessor <int32_t , 1 >();
147+ const auto index_remappings_acc =
148+ index_remappings.accessor <remap_t , 1 >();
149+ const auto index_remappings_offsets_acc =
150+ index_remappings_offsets.accessor <int64_t , 1 >();
151+
152+ for (const auto idx : c10::irange (num_indices)) {
153+ const auto table_idx = update_table_indices_acc[idx];
154+ const auto row_idx = update_row_indices_acc[idx];
155+ const auto index_remappings_start =
156+ index_remappings_offsets_acc[table_idx];
157+ const auto index_remappings_end =
158+ index_remappings_offsets_acc[table_idx + 1 ];
159+ const auto capacity =
160+ index_remappings_end - index_remappings_start;
161+
162+ if (capacity > 0 ) {
163+ dense_indices_acc[idx] = static_cast <index_t >(
164+ index_remappings_acc[index_remappings_start + row_idx]);
165+ } else {
166+ dense_indices_acc[idx] = static_cast <index_t >(row_idx);
167+ }
168+ }
169+ });
161170 });
162171 return dense_indices;
163172}
0 commit comments