Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Matrix-free evaluation: Look over loops over vector components #16006

Open
kronbichler opened this issue Sep 18, 2023 · 0 comments
Open

Matrix-free evaluation: Look over loops over vector components #16006

kronbichler opened this issue Sep 18, 2023 · 0 comments

Comments

@kronbichler
Copy link
Member

As suggested by #16003 (comment) after a remark by @masterleinad we should look over loops of the kind

if (n_components == 1 || this->n_fe_components == 1)
for (unsigned int i = 0; i < dofs_per_component;
++i, dof_indices += n_lanes)
for (unsigned int comp = 0; comp < n_components; ++comp)
operation.process_dof_gather(dof_indices,
*src[comp],
0,
values_dofs[comp][i],
vector_selector);
else
for (unsigned int comp = 0; comp < n_components; ++comp)
for (unsigned int i = 0; i < dofs_per_component;
++i, dof_indices += n_lanes)
operation.process_dof_gather(
dof_indices, *src[0], 0, values_dofs[comp][i], vector_selector);
where we have two flavors, depending on whether we build multi-component problems from multiple vectors with a scalar FE (first case) or with a single vector from an FESystem (second case). We should be able to simplify the code in various places if we can use a single loop.

@kronbichler kronbichler added this to the Release 9.6 milestone Sep 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant