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

Batched classes todo list #1376

Open
16 tasks
pratikvn opened this issue Jul 31, 2023 · 0 comments
Open
16 tasks

Batched classes todo list #1376

pratikvn opened this issue Jul 31, 2023 · 0 comments
Assignees
Labels
is:technical-debt This is aimed at reducing technical debt. type:batched-functionality This is related to the batched functionality in Ginkgo

Comments

@pratikvn
Copy link
Member

pratikvn commented Jul 31, 2023

This issue tracks the different aspects of the batched functionality that reviewers have suggested, but still need to be implemented:

  1. Performance related:
  • Handling multiple RHS, or special case for single rhs
  • Workgroup, grid and block sizes for GPU kernels
  • __launch_bounds__ in CUDA/HIP kernels.
  • Remove unnecessary temporary stack variables to reduce register usage.
  • Assign multiple threads to a row for batch::Ell SpMV. See gko::matrix::Ell kernels.
  • Check unecessary synchronizations and use the necessary one (global_space, local_space etc)
  1. Utility related:
  • Add stride capability.
  1. Code simplifications:
  • Using a common launcher syntax, something similar to parfor_batch_blockwise(x, [](ibatch) { ... })
  • Check if batch_item and uniform_batch can be combined into one struct.
  • Check for getters and functions in classes that are unused and can be removed from the interface.
  • Unify stopping criteria and loggers across device backends by moving them into common/unified
  • Unify simple preconditioners into common/unified
  • Simplify logger interface, and include the selection within the batch solver dispatch.
  • Simplify/separate storage_config in core and kernels and use only necessary members for the kernels.
  • Refactor compute_shared_storage functionality, and unify computations across the different batched solver classes.
  • Clarify include files in .hpp.inc by maybe splitting the files and having a _includes.hpp.inc
@pratikvn pratikvn added is:technical-debt This is aimed at reducing technical debt. type:batched-functionality This is related to the batched functionality in Ginkgo labels Jul 31, 2023
@pratikvn pratikvn added this to the Release 1.7.0 milestone Jul 31, 2023
@pratikvn pratikvn self-assigned this Jul 31, 2023
pratikvn added a commit that referenced this issue Aug 3, 2023
This PR adds the batch::MultiVector class, which implements the batched multi-vector object. Following our discussion, this is now separate from the LinOp/BatchLinOp hierarchy. In addition, the following things are also added in this PR:
1. batch_dim<> functionality which is a simple wrapper over dim<> for storing uniform batched objects.
2. batch_struct, to ease the access and implementation of the backend kernels.
3. batch_initialize functions used to initialize the all matrix formats in a fashion similar to Dense<>::initialize(...).
4. Backend kernels and tests for OpenMP, CUDA, HIP and DPCPP and their tests.

There are no apply kernels as this is only a Multi-vector object and hence does not lend itself to the apply functionality.

To be general enough, a MultiVector is supported even though the solvers in batch_develop currently only support single vector.

This PR is first in the series of the functionality that brings batched functionality to Ginkgo develop and part of the functionality has been in batch-develop.

Some aspects discussed in the PR will be implemented in a later PR and has been logged in #1376 

Related PR: #1371
@pratikvn pratikvn removed this from the Release 1.7.0 milestone Oct 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is:technical-debt This is aimed at reducing technical debt. type:batched-functionality This is related to the batched functionality in Ginkgo
Projects
None yet
Development

No branches or pull requests

1 participant