"include/vscode:/vscode.git/clone" did not exist on "c08dcaad9e6eadef248b21c2a71b9d2663be4f81"
Commit 09cee914 authored by Shucai Xiao's avatar Shucai Xiao
Browse files

simplify the gpu gather implementation

parent b466ceb9
...@@ -23,28 +23,19 @@ argument gather(hipStream_t stream, ...@@ -23,28 +23,19 @@ argument gather(hipStream_t stream,
const auto* indices_ptr = device_cast(indices.data()); const auto* indices_ptr = device_cast(indices.data());
auto* out_ptr = device_cast(output.data()); auto* out_ptr = device_cast(output.data());
const auto* in_ptr = device_cast(input.data()); const auto* in_ptr = device_cast(input.data());
if(output_shape.scalar()) auto& input_shape = args[0].get_shape();
{ auto lens = input_shape.lens();
gs_launch(stream, 1)( lens[axis_index] = args[1].get_shape().elements();
[=](auto i) { out_ptr[i] = in_ptr[static_cast<int>(indices_ptr[0])]; }); migraphx::shape out_comp_shape{output_shape.type(), lens};
} visit_tensor_size(out_comp_shape.lens().size(), [&](auto n_out_dim) {
else hip_tensor_descriptor<n_out_dim> desc_input(input_shape);
{ hip_tensor_descriptor<n_out_dim> desc_output(out_comp_shape);
// if indices are a scalar, output has one dim smaller than input gs_launch(stream, nelements)([=](auto ii) {
auto& input_shape = args[0].get_shape(); auto in_idx = desc_output.multi(ii);
auto lens = input_shape.lens(); in_idx[axis_index] = indices_ptr[in_idx[axis_index]];
lens[axis_index] = args[1].get_shape().elements(); out_ptr[ii] = in_ptr[desc_input.linear(in_idx)];
migraphx::shape out_comp_shape{output_shape.type(), lens};
visit_tensor_size(out_comp_shape.lens().size(), [&](auto n_out_dim) {
hip_tensor_descriptor<n_out_dim> desc_input(input_shape);
hip_tensor_descriptor<n_out_dim> desc_output(out_comp_shape);
gs_launch(stream, nelements)([=](auto ii) {
auto in_idx = desc_output.multi(ii);
in_idx[axis_index] = indices_ptr[in_idx[axis_index]];
out_ptr[ii] = in_ptr[desc_input.linear(in_idx)];
});
}); });
} });
}); });
}); });
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment