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

Abstraction layer for retrieving specific high-level linear system operations #3

Open
wrtobin opened this issue Apr 18, 2018 · 2 comments
Assignees
Labels
api enhancement New feature or request
Milestone

Comments

@wrtobin
Copy link
Owner

wrtobin commented Apr 18, 2018

Currently the API is most developed for the creation/deletion and low-level modification of linear structures, rather than high-level operations on them (solves,mat-vec mult, mat-mat mult).

These higher-level operations are characterized by the fact they contain tight loops, though they themselves are unlikely to be in a tight loop at the core of important operations (and even were they, it would be the case that the encapsulated operation is computationally significant). This being the case we don't need a zero-overhead mechanism to retrieve and invoke these operations. Instead we can develop a general mechanism using inheritance polymorphism (for algorithm determination) and templating (for determining which backend is active).

The approach will be similar to how we currently retrieve minimal factory objects to build Mats and Vecs, but will require the user specify the desired high-level operation and possibly which of a variety of specific implementations of the algorithm they want to use (as we may implement e.g. gemm in a variety of ways with cuda w.r.t. memory movement and management).

While this is being worked on, whatever is developed should likely also be used to refactor the existing mechanisms to retrieve Mat/Vec factories.

@wrtobin
Copy link
Owner Author

wrtobin commented Apr 18, 2018

Practically speaking we can probably limit ourselves to the BLAS routines in terms of what high-level linear operations we intend to eventually support in the abstraction layer.

@wrtobin
Copy link
Owner Author

wrtobin commented Apr 18, 2018

We should likely also move the DOT operation and NORM operations out of the zero-overhead API and into this more general API, since they are high-level operations rather than tight-loop operations.

@wrtobin wrtobin self-assigned this Apr 18, 2018
@wrtobin wrtobin added the enhancement New feature or request label Apr 18, 2018
@wrtobin wrtobin added this to the 0.2 milestone Apr 18, 2018
@wrtobin wrtobin added the api label Apr 18, 2018
@wrtobin wrtobin modified the milestones: 0.2, 0.3 Apr 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant